1、下载zookeeper并解压
用cdh5.3.0对应的版本
2、参数配置
进入zookeeper/conf:
$:vim 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=10
# The number of ticks that can pass between
# sending a request and getting an acknowledgement
syncLimit=5
# the directory where the snapshot is stored.
dataDir=/home/hadoop/zookeeper/data
# the port at which the clients will connect
clientPort=2181
server.1=gdc-nn01-test:2888:3888
server.2=gdc-dn01-test:2888:3888
server.3=gdc-dn02-test:2888:3888
在上面的配置文件中"server.id=host:port:port"中的第一个port是从机器(follower)连接到主机器(leader)的端口号,第二个port是进行leadership选举的端口号。
接下来在dataDir所指定的目录下创建一个文件名为myid的文件,文件中的内容只有一行,为本主机对应的id值,也就是上面server.id中的id。例如:在服务器1中的myid的内容应该写入1。
即在/home/hadoop/zookeeper/data中新建myid,3台机器的内容分别为1,2,3.
3.远程复制分发安装文件
将上面的安装文件拷贝到集群中的其他机器上对应的目录下:
$ scp -r zookeeper/ gdc-dn01-test:/home/hadoop/zookeeper
$ scp -r zookeeper/ gdc-dn02-test:/home/hadoop/zookeeper
$ scp -r zookeeper/ gdc-dn03-test:/home/hadoop/zookeeper
拷贝完成后修改对应的机器上的myid。
4.启动ZooKeeper集群
在ZooKeeper集群的每个结点上,执行启动ZooKeeper服务的脚本,如下所示:
$ bin/zkServer.sh start
5、验证
$ jps
24466 NodeManager
24230 SecondaryNameNode
20357 QuorumPeerMain
22010 Jstatd
20396 Jps
23962 DataNode
其中,QuorumPeerMain是zookeeper进程,启动正常。
如上依次启动了所有机器上的Zookeeper之后可以通过ZooKeeper的脚本来查看启动状态,包括集群中各个结点的角色(或是Leader,或是Follower),如下所示,是在ZooKeeper集群中的每个结点上查询的结果:
hadoop@gdc-dn01-test:~/zookeeper$ bin/zkServer.sh status
JMX enabled by default
Using config: /home/hadoop/zookeeper/bin/../conf/zoo.cfg
Mode: leader
另外,可以通过客户端脚本,连接到ZooKeeper集群上。对于客户端来说,ZooKeeper是一个整体(ensemble),连接到ZooKeeper集群实际上感觉在独享整个集群的服务,所以,你可以在任何一个结点上建立到服务集群的连接,例如:
$ bin/zkCli.sh
$ ls /