Hadoop2.0的HA介绍

来源:互联网 发布:js 点击显示隐藏图片 编辑:程序博客网 时间:2024/05/17 08:39


Hadoop2.0HA介绍

时间 2014-05-03 17:42:25Linux公社

原文 http://www.linuxidc.com/Linux/2014-05/101174.htm

主题HadoopNFS

前一篇文章介绍了Hadoop2.0hadoop2.0架构,具体版本是hadoop2.2.0)的安装和最基本的配置(见http://www.linuxidc.com/Linux/2014-05/101173.htm),并没有配置HAHighAvalability,高可用性),接下来的文章中会介绍hadoop2.0HA的配置。在介绍hadoop2.0HA配置之前,本文先介绍hadoop2.0HA的基本原理和2种方式。

1概述

hadoop2.0之前,namenode只有一个,存在单点问题(虽然hadoop1.0secondarynamenodecheckpointnodebuckcupnode这些,但是单点问题依然存在),在hadoop2.0引入了HA机制。hadoop2.0HA机制官方介绍了有2种方式,一种是NFSNetwork File System)方式,另外一种是QJMQuorumJournal Manager)方式。

2基本原理

hadoop2.0HA机制有两个namenode,一个是active namenode,状态是active;另外一个是standbynamenode,状态是standby。两者的状态是可以切换的,但不能同时两个都是active状态,最多只有1个是active状态。只有activenamenode提供对外的服务,standbynamenode是不对外服务的。activenamenodestandbynamenode之间通过NFS或者JNjournalnodeQJM方式)来同步数据。

active namenode会把最近的操作记录写到本地的一个edits文件中(editsfile),并传输到NFS或者JN中。standbynamenode定期的检查,从NFS或者JN把最近的edit文件读过来,然后把edits文件和fsimage文件合并成一个新的fsimage,合并完成之后会通知active namenode获取这个新fsimageactivenamenode获得这个新的fsimage文件之后,替换原来旧的fsimage文件。

这样,保持了activenamenodestandbynamenode的数据的实时同步,standbynamenode可以随时切换成activenamenode(譬如activenamenode挂了)。而且还有一个原来hadoop1.0secondarynamenodecheckpointnodebuckcupnode的功能:合并edits文件和fsimage文件,使fsimage文件一直保持更新。所以启动了hadoop2.0HA机制之后,secondarynamenodecheckpointnodebuckcupnode这些都不需要了。

3 NFS方式

NFS作为active namenodestandbynamenode之间数据共享的存储。activenamenode会把最近的edits文件写到NFS,而standbynamenodeNFS中把数据读过来。这个方式的缺点是,如果active namenode或者standbynamenode有一个和NFS之间网络有问题,则会造成他们之前数据的同步出问题。

http://img1.tuicool.com/AJ3iUnY.jpg!web

4 QJMQuorum Journal Manager )方式 

QJM的方式可以解决上述NFS容错机制不足的问题。active namenodestandbynamenode之间是通过一组journalnode(数量是奇数,可以是3,5,7...,2n+1)来共享数据。activenamenode把最近的edits文件写到2n+1journalnode上,只要有n+1个写入成功就认为这次写入操作成功了,然后standby namenode就可以从journalnode上读取了。可以看到,QJM方式有容错的机制,可以容忍njournalnode的失败。

http://img0.tuicool.com/VbMfauV.jpg!web

5主备节点的切换

active namenodestandby namenode可以随时切换。当active namenode挂掉后,也可以把standby namenode切换成active状态,成为activenamenode。可以人工切换和自动切换。人工切换是通过执行HA管理的命令来改变namenode的状态,从standbyactive,或者从activestandby。自动切换则在activenamenode挂掉的时候,standbynamenode自动切换成active状态,取代原来的active namenode成为新的active namenodeHDFS继续正常工作。

主备节点的自动切换需要配置zookeeperactive namenodestandbynamenode把他们的状态实时记录到zookeeper中,zookeeper监视他们的状态变化。当zookeeper发现activenamenode挂掉后,会自动把standbynamenode切换成activenamenode

http://img2.tuicool.com/BBbMRb.jpg!web

6实战tips

  • QJM方式有明显的优点,一是本身就有fencing的功能,二是通过多个journal节点增强了系统的健壮性,所以建议在生成环境中采用QJM的方式。
  • journalnode消耗的资源很少,不需要额外的机器专门来启动journalnode,可以从hadoop集群中选几台机器同时作为journalnode

介绍完hadoop2.0HA的基本原理之后,后面的文章会分别详细介绍这两种方式的配置和原理。

 

0 0
原创粉丝点击