上篇博文介绍了hadoop的安装,这篇接着是zookeeper(3.4.6)的安装。

4.1、修改zookeeper配置文件zoo.cfg

在centos系统下解压zookeeper安装包zookeeper-3.4.6.tar.gz ,进入到conf目录,将zoo_sample.cfg拷贝一份命名为zoo.cfg(Zookeeper 在启动时会找这个文件作为默认配置文件):

[hadoop@Master conf] cp zoo_sample.cfg zoo.cfg

对zoo.cfg配置如下:

tickTime=2000                             (基本事件单元,以毫秒为单位。它用来指示心跳,最小的 session 过期时间为两倍的 tickTime.)
dataDir=/usr/new/zookeeper    (dataDir :存储内存中数据库快照的位置,如果不设置参数,更新事务日志将被存储到默认位置。)
dataLogDir=/usr/new/zookeeper/logs #日志存放目录,手动存在
server.0=172.31.62.52:2888:3888
server.1=172.31.62.53:2888:3888
server.2=172.31.62.54:2888:3888
clientPort=2181                (clientPort :监听客户端连接的端口)

其中,2888端口号是服务之间通信的端口,而3888是zookeeper与其他应用程序通信的端口.zookeeper是在hosts中映射了本机的IP.server.A=B:C:D:其中A是一个数字(设置需要从0开始,因为机器重启默认从0开始),表示这个是第几号服务器;B是这个服务器的ip地址;C表示的是这个服务器与集群中的Leader服务器交换信息的端口;D表示的是万一集群中的Leader服务器挂了,需要一个端口来重新进行选举,选出一个新的Leader,而这个端口就是用来执行选举时服务器相互通信的端口。

 

4.2、新建目录、新建并编辑myid文件

(本次配置myid文件放在/usr/zookeeper下)

vim/usr/zookeeper/data/myid

注意myid文件中的内容为:Slave1中为0,Slave2中为1,Slave3为2,分别与zoo.cfg中对应起来。

注:在新建过程中曾使用“echo“1”>myid.txt”的方式创建文件,运行zookeeper时会一直显示”myid file is missing”,应该使用“touch myid”命令创建。这么低级的错误......


4.3、同步安装包

将解压修改后的zookeeper文件夹分别拷贝到Master、Slave1、Slave2的相同zookeeper安装路径下。注意:1.zookeeper-3.4.6的权限问题(chown -R hadoop:hadoop zookeeper),有可能更改后仍报权限问题,进到文件夹中,可能会有新生成的log权限仍为root,改之。2.myid文件的内容不是一样的,各服务器中分别对应zoo.cfg中的设置。

 

4.4、启动zookeeper

Zookeeper的启动与hadoop不一样,需要每个节点都执行,分别进入3个节点的zookeeper目录,启动zookeeper:

bin/zkServer.sh start

若配置了”/etc/profile”,将zookeeper路径添加进去,则可直接在目录下执行”zkServer.sh start”在另两台服务器中执行相同操作。

 

4.5、检查zookeeper是否配置成功

待3台服务器均启动后,如果过程正确的话zookeeper应该已经自动选好leader,进入每台服务器的zookeeper目录,执行以下操作查看zookeeper启动状态:

bin/zkServer.sh status

如果出现以下代码表示安装成功了。

zookeeper 配置文件解析 zookeeper的配置文件_zookeeper 配置文件解析

4.6、启动客户端脚本:zookeeper-3.4.3/bin/zkCli.sh -server zookeeper:2181

4.7、停止zookeeper进程:zookeeper-3.4.3/bin/zkServer.sh stop


注:

1.查看2181端口占用情况:lsof -i:2181.

2.强行停止zookeeper:

1)jps 查看QuorumPeerMain对应的进程id.

2)kill -9 ID.

3)[root@Master ~] cd /tmp ,删除hsperfdata_hadoop中对应的文件。

清净了。

3.不知为何偶尔会出现log不在指定目录的情况,在清zookeeper残留记录时要删除相应的/version-2文件夹和日志,日志“zookeeper.out”查找命令:

[root@Master ~] find  /  -name  "zookeeper.out"