为Hadoop集群设置了HA(高可用)之后,需要手动指定其中一个namenode状态为active,使集群处于服务状态。
设置自动容灾,集群在开启的过程中,会随机指定一个namenode状态为active,不再需要手动设置。
要完成自动容灾,需要在HDFS集群环境中添加两个组件:
a.zookeeper集群
b.ZKFC:zookeeper FailoverController process
这两个组件的作用分别描述为:
zookeeper的作用(官网):
Apache Zookeeper是一种高可用性服务,用于维护少量协调数据,通知客户端该数据的更改以及监视客户端的故障。HDFS自动故障转移依赖于zookeeper来实现以下功能:
a.故障检测:集群中的每个namenode节点计算机都在zookeeper中维持一个持久会话。如果计算机崩溃,zookeeper会话将过期,则通过另一个namenode计算机触发故障转移。
b.active活跃节点的选举:zookeeper提供了一种简单的机制,可以将节点专门选为活动节点。如果当前的活动namenode崩溃,则另一个节点可能在zookeeper中采用特殊的独占锁,指示它应该成为下一个活动节点。
ZKFailoverController(ZKFC)的作用:
a.它是一个zookeeper客户端,监视和管理namenode的状态
b.运行namenode的每台机器也运行ZKFC,ZKFC负责:
Namenode的运行状况监视:
Zookeeper会话管理:
选举制度:
安装zookeeper流程:
a.下载zookeeper3.4.6.tar.gz
b.解压至所需目录/home/hyxy/soft
c.配置环境变量
export ZOOKEEPER_HOME=/home/hyxy/soft/zookeeper
export PATH=$ZOOKEEPER_HOME/bin:$PATH
d.修改{ZOOKEEPER_HOME}/conf/zoo.cfg(需cp)
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/home/hyxy/tmp/zookeeper
clientPort=2181
e.开启zookeeper server
$>zkServer.sh start
f.客户端连接:
$>zkCli.sh