Hadoop之HA初体验

Hadoop的1.x版本有一个比较严重的问题就是Namenode的单点问题

当nameNode挂了后整个集群就不能不能用了,为了解决这个问题在hadoop2.x版本中引入了HA的概念即高可用

大致思路是多配置介个namenode,但是只有一个真正对外提供服务,即1+N个namenode节点,1个是active状态其他的都是standby状态,只有active状态的namenode对外提供服务,当active的NameNode挂掉后有其他的standby状态的Namenode选出一个升级为active继续对外提供服务

Hadoop之HA初体验

具体的过程

1> 这个集群中有两个Namenode,其中一个是active的一个是Standby的,active的对外提供服务,DataNode向两个NameNode都定时汇报本机存储的文件块的信息列表(两个NameNode中内存里面的数据时一致的),持久化时并没有将fsimage和editor日志写到本地磁盘而是写到了都可以访问的JN(Journal Node)节点,方便访问

2>每一个Namenode都对应一个FailoverController程序,这个程序专门负责切换操作,当active的NameNode关掉后其他的standby状态的NameNode对应的FailoverController选出一个将其升为active继续对外提供服务

3>为了实现热备选择使用Zookeeper,当ZooKeeperActive的NameNode对应的节点消失后其他的FailoverController通过Watcher事件被通知后通过ZK的加锁机制选举出一个Standby的NameNode升级为Active的继续服务