ZooKeeper实现HA HDFS

Posted zqzhen

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ZooKeeper实现HA HDFS相关的知识,希望对你有一定的参考价值。

单节点NameNode存在问题:

NameNode宕机,metadata数据消失;

单节点出现故障,如何进行故障转移?

如果增加一个NameNode节点,会出现脑裂问题(一个集群有多个管理者),如何解决?

 

ZK搭建高可用(HA High Aliavble)HDFS集群

原理

QJM(Quorum Jouranl Manager)是Hadoop转为为NameNode共享存储开发的组件。其集群运行一组Journal Node,每个Journal节点暴露一个简单的RPC接口,允许NameNode读取和写入数据,数据存放在Journal节点的本地磁盘。

故障转移问题上,引入了监控NameNode状态的ZookeeperFailController(ZKFC)。ZKFC一般运行在NameNode宿主机器上,与Zookkeeper集群写作完成故障的自动转移。

Journal Node两大作用:

  • 同步NameNode们的editlog
  • 当出现脑裂情况时,触发隔离机制,将其中一个NameNode节点kill掉(例如,NameNode1出现网络延迟,ZooKeeper认为它宕机了,ZKFC将NameNode2由standby转为active状态,此时,就有两个NameNode处于active状态,出现脑裂情况,Journal Node就会触发隔离机制,将剩余NameNode1的写入操作执行完毕之后,会通过SSH登录NameNode1节点将其进程关闭)

技术图片

 

 

ZK集群

通常需要开辟三个独立端口

1:处理client请求

2:集群内部原子广播

3:集群内部选举投票

技术图片

 

 

 

ZK集群创建

1.安装zookeeper

2.在每个zk节点创建数据目录,每个数据目录中必须有myid文件,用来唯一标识zk节点

3.数据目录中创建zoo.cfg的配置文件

技术图片

 

 

 

启动zk集群

1 ./zkServer.sh start /root/zkdata/zoo.cfg

 

查看集群状态

1 ./zkServer.sh status /root/zkdata/zoo.cfg

 

以上是关于ZooKeeper实现HA HDFS的主要内容,如果未能解决你的问题,请参考以下文章

zookeeper--实现NN和RM的HA

使用Zookeeper 部署HDFS HA 配置

hdfs ha集群中,zookeeper作用是啥?journalnode作用是啥

Hdfs的HA高可用

HDFS之HA

Hadoop hdfs yarn HA