Zookeeper作用:
Apache ZooKeeper是一种高可用性服务,用于维护少量协调数据,通知客户端该数据的更改以及监视客户端的故障。自动HDFS故障转移的实现依赖于ZooKeeper来实现以下功能:
a.故障检测:集群中的每个NameNode计算机都在ZooKeeper中维护一个持久会话。如果计算机崩溃,ZooKeeper会话将过期,通知另一个NameNode应该触发故障转移。
b.active活跃节点的选举:ZooKeeper提供了一种简单的机制,可以将节点专门选为活动节点。如果当前活动的NameNode崩溃,则另一个节点可能在ZooKeeper中采用特殊的独占锁,指示它应该成为下一个活动的。
注意:
搭建HA的 时候,在该模式下,即使活动节点发生故障,系统也不会自动触发从活动状态到备用NameNode的故障转移,
本文是关于如何配置和部署故障转义。
现在开始安装zookeeper:
1.下载zookeeper-3.4.6版本,根据自己需求;
2.解压至~/soft/ 下
tar -zxvf zookeeper-3.4.6.tar.gz ~/soft/
3.创建软链接:ln -s zookpeer-3.4.6 zookeeper
4.添加zookeeper的环境变量:(并生效)
~/.bash_profile
修改: ~$> gedit .bash_profile (gedit 相当于vi/vim)
添加:
#---zookeeper install
export ZOOKEEPER_HOME=/home/hyxy/soft/zookeeper
export PATH=$ZOOKEEPER_HOME/bin:$PATH
生效: source .bash_profile //使之生效
测试是否好使:cd $ZOOKEEPER_HOME
此时,要启动一个zookeeper,需要一个配置文件:zoo.cfg ,如下
5. 进入安装目录下:复制得zoo.cfg
zookeeper$> cd conf
conf$> cp zoo_sample.cfg zoo.cfg
6. 修改上述的zoo.cfg ,只需要修改dataDir日志信息即可
tickTime=2000 //滚动的毫秒数
initLimit=10
syncLimit=5
dataDir=home/hyxy/tmp/zookeeper //存储zookeeper的日志信息
clientPort=2181 //监听客户端连接 端口
现在,你也创建配置文件,您可以启动Zookeeper:
7.开启zookeeper Server
[hyxy@master conf]$ zkServer.sh start //就会开启zookeeper Server 的守护进程
[hyxy@master conf]$ jps
13331 Jps
13316 ZookeeperMain //zookeeper Server 的服务器
8.客户端去连接它:
conf$> zkCli.sh //开启客户端的时候,要是zkServer.sh服务端没开启,会报:
// java.net.ConnectException: 拒绝连接
也可以连接 mster:2181 : $> zkCli.sh -server master:2181 命令即可
连接上zooKeeper之后, 最后一行显示:
[zk: localhost:2181(CONNECTED) 0]
说明客户端已经连接到localhost:2181端口
[zk: localhost:2181(CONNECTED) 0] help
help 之后就会出现与zookeeper相关的一些命令,如下
[zk: localhost:2181(CONNECTED) 0] help
ZooKeeper -server host:port cmd args
stat path [watch]
set path data [version]
ls path [watch]
delquota [-n|-b] path
ls2 path [watch]
setAcl path acl
setquota -n|-b val path
history
redo cmdno
printwatches on|off
delete path [version]
sync path
listquota path
rmr path
get path [watch]
create [-s] [-e] path data acl
addauth scheme auth
quit
getAcl path
close
connect host:port
[zk: localhost:2181(CONNECTED) 1]
9. 客户端连接之后 jps:
[hyxy@master ~]$ jps
13316 QuorumPeerMain //就会开启zookeeper client的守护进程
10.退出zookeeper
~$>quit
~$>jps
[hyxy@master ~]$ jps
13587 Jps
13316 QuorumPeerMain
13349 ZookeeperMain //此时,已经没有zookeeper client 的进程了,退出了的话
11.关机Zookeeper Server
~ $>zkServer.sh stop
~ $>jps
13587 jps
13316 QuorumPeerMain //此时,已经没有zookeeper Server的守护进程
注意:
zookeeper相当于一棵树,存储的数据在叶子节点上,要获得叶子节点数据,需要
即:get /zeekeeper
[zk: localhost:2181(CONNECTED) 6] get /zookeeper
cZxid = 0x0
ctime = Thu Jan 01 08:00:00 CST 1970
mZxid = 0x0
mtime = Thu Jan 01 08:00:00 CST 1970
pZxid = 0x0
cversion = -1
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 0
numChildren = 1
[zk: localhost:2181(CONNECTED) 7]