上篇博文介绍了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
如果出现以下代码表示安装成功了。
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"