概述
结构与原理
安装
»概述
ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。
»结构与原理
»Zookeeper的核心是原子广播,这个机制保证了各个server之间的同步。实现这个机制的协议叫做Zab协议。Zab协议有两种模式,它们分别是恢复模式和广播模式。当服务启动或者在领导者崩溃后,Zab就进入了恢复模式,当领导者被选举出来,且大多数server的完成了和leader的状态同步以后,恢复模式就结束了。状态同步保证了leader和server具有相同的系统状态。
»一旦
leader
已经和多数的
follower
进行了状态同步后,他就可以开始广播消息了,即进入广播状态。这时候当一个
server
加入
zookeeper
服务中,它会在恢复模式下启动,发现
leader
,并和
leader
进行状态同步。待到同步结束,它也参与消息广播。
Zookeeper
服务一直维持在
Broadcast
状态,直到
leader
崩溃了或者
leader
失去了大部分的
followers
支持
»安装
1.1上传zookeeper-3.4.5.tar.gz到hadoop4目录 /usr/cloud/zookeeper
1.2解压
tar -zxvf zookeeper-3.4.5.tar.gz -C /usr/cloud/zookeeper
1.3 修改配置
cd /usr/cloud/zookeeper/zookeeper-3.4.5/conf/
cp zoo_sample.cfg zoo.cfg
vim zoo.cfg
#修改:
dataDir=/usr/cloud/zookeeper/zookeeper-3.4.5/tmp
#在最后添加:
server.1=hadoop4:2888:3888
server.2=hadoop5:2888:3888
server.3=hadoop6:2888:3888
#保存退出,然后创建一个tmp文件夹
mkdir /usr/cloud/zookeeper/zookeeper-3.4.5/tmp
#再创建一个空文件
touch /usr/cloud/zookeeper/zookeeper-3.4.5/tmp/myid
#最后向该文件写入ID
echo 10 > /usr/cloud/zookeeper/zookeeper-3.4.5/tmp/myid
1.3将配置好的zookeeper拷贝到其他节点(分别在hadoop5、hadoop6的目录/usr/cloud/zookeeper)
scp -r /usr/cloud/zookeeper/zookeeper-3.4.5/ hadoop5:/usr/cloud/zookeeper
scp -r /usr/cloud/zookeeper/zookeeper-3.4.5/ hadoop6:/usr/cloud/zookeeper
#需要注意点:
#修改hadoop5、hadoop6对应/hadoop/zookeeper-3.4.5/tmp/myid内容
hadoop5:
echo 20 > /usr/cloud/zookeeper/zookeeper-3.4.5/tmp/myid
hadoop6:
echo 30 > /usr/cloud/zookeeper/zookeeper-3.4.5/tmp/myid
1.4 /etc/profile,将zookeeper安装目录添加到环境变量中
vim /etc/profile
export ZK_HOME=/usr/cloud/zookeeper/zookeeper-3.4.5
export PATH=$PATH:$JAVA_HOME/bin:$ZK_HOME/bin
source /etc/profile
1.5 启动zk检查是否成功,在hadoop4、
hadoop5、hadoop6执行命令;
#启动服务
zkServcer.sh start
#检查服务启动状态,必须有一个leader,其他服务都是follower
zkServcer.sh status