ZooKeeper是一个分布式开源框架,提供了协调分布式应用的基本服务,它向外部应用暴露一组通用服务——分布式同步(Distributed Synchronization)、命名服务(Naming Service)、集群维护(Group Maintenance)等,简化分布式应用协调及其管理的难度,提供高性能的分布式服务。ZooKeeper本身可以以Standalone模式安装运行,不过它的长处在于通过分布式ZooKeeper集群(一个Leader,多个Follower),基于一定的策略来保证ZooKeeper集群的稳定性和可用性,从而实现分布式应用的可靠性。
zookeeper集群部署环境
- ubuntu-16.04.1-server * 3(做3主机的集群)
- 主机名:hadoopm、hadoop_s1、hadoop_s2
- 分布式:Hadoop2.7 集群
- zookeeper安装包:zookeeper-3.4.5.tar.gz
Zookeeper集群的配置需要奇数台机器,一个为leader,其他为follower,这里选择最小的3台机器作为集群。
ZooKeeper Standalone模式
- 从Apache网站上(zookeeper.apache.org)下载ZooKeeper软件包
- 解压安装包到指定位置:tar -zxvf zookeeper-3.4.5.tar.gz -C /usr/local/。
我解压在/usr/local/目录下,jdk、Hadoop均安装在此目录,方便管理。 - 修改配置内容:
将zookeeper-3.4.5/conf目录下面的 zoo_sample.cfg复制一份改名为zoo.cfg
cp zoo_sample.cfg zoo.cfg
# The number of milliseconds of each tick
tickTime=2000
# The number of ticks that the initial
# synchronization phase can take
initLimit=5
# The number of ticks that can pass between
# sending a request and getting an acknowledgement
syncLimit=2
# the directory where the snapshot is stored.
# do not use /tmp for storage, /tmp here is just
# example sakes.
dataDir=/root/zookeeper/data
# the port at which the clients will connect
clientPort=2181
启动ZooKeeper单节点服务器进程,查看是否正常
在Zookeeper目录下的bin文件加下,存放着各种操作命令,如下:
其中.sh均为linux系统下的命令,.cmd为windows系统下命令,zkCli.sh是启动zookeeper客户端命令。
启动:
cd /zookeeper-3.4.5/bin
./zkServer.sh start使用jps查看进程,会发现多出来一条QuorumPeerMain进程。
ZooKeeper Distributed模式
在有了单节点的zookeeper后,配置zookeeper分布式只需再次基础上做出修改即好。
- 增加ZooKeeper配置文件
在conf/zoo.cfg中增加配置信息:
server.1=hadoopm:2888:3888
server.2=hadoop_s1:2888:3888
server.3=hadoop_s2:2888:3888
server后面的数字即为各个zookeeper的编号,在后面需要为zookeeper设置编号。
- 远程复制分发安装文件
在zookeeper存储目录下(/usr/local/),将配置好的文件zookeeper-3.4.5通过scp命令发送到集群的其他主机:
scp -r zookeeper-3.4.5/ root@hadoop_s1:/usr/local
scp -r zookeeper-3.4.5/ root@hadoop_s2:/usr/local
- 设置myid
在我们配置的dataDir指定的目录下面,创建一个myid文件,里面内容为一个数字,用来标识当前主机,conf/zoo.cfg文件中配置的server.X中X即为此数字。
root@hadoopm:echo "1" > /root/zookeeper/data/myid
root@hadoop_s1:echo "2" > /root/zookeeper/data/myid
root@hadoop_s2:echo "3" > /root/zookeeper/data/myid
- 启动ZooKeeper集群
依次在各个节点启动Zookeeper,然后可以用./zkServer.sh status来查看状态
root@hadoopm:/usr/local/zookeeper-3.4.5/bin# ./zkServer.sh status
JMX enabled by default
Using config: /usr/local/zookeeper-3.4.5/bin/../conf/zoo.cfg
Mode: follower
root@hadoop_s1:/usr/local/zookeeper-3.4.5/bin# ./zkServer.sh status
JMX enabled by default
Using config: /usr/local/zookeeper-3.4.5/bin/../conf/zoo.cfg
Mode: leader
root@hadoop_s2:/usr/local/zookeeper-3.4.5/bin# ./zkServer.sh status
JMX enabled by default
Using config: /usr/local/zookeeper-3.4.5/bin/../conf/zoo.cfg
Mode: follower
至此,Zookeeper集群安装完毕,可以为以后的Hbase集群等工作打下基础。