安装环境:centos 7
使用的安装包:apache-zookeeper-3.5.7-bin-tar.gz
分布式集群:hadoop102 hadoop103 hadoop104
Step1 安装
一、使用Xftp 7拷贝安装包到opt/software,解压至module。
[user@hadoop102 software]$ tar -zxvf apache-zookeeper-3.5.7-bin-tar.gz -C opt/module/
二、修改module/apache-zookeeper-3.5.7-bin/conf路径下的 zoo_sample.cfg 为 zoo.cfg。
(修改原因:zoo.cfg关联了一个脚本zkeEnv.sh)
[user@hadoop102 conf]$ mv zoo_sample.cfg zoo.cfg
三、zoo.cfg 文件参数解读
1)tickTime=2000
Zookeeper服务器与客户端之间维持心跳的时间间隔,单位为毫秒。
2)initLimit=10
Follower与Leader之间初始连接时能容忍的最多心跳次数,即 tickTime 的数量。
3)syncLimit=5
Follower与Leader之间最大响应时间单位。
如果响应超过 syncLimit * tickTime,Leader认为Follower死掉,从服务器列表中删除Follower。
4)dataDir
Zookeeper中的数据存放位置,默认情况下,写数据的日志文件也保存在此处。
5)clientPort=2181
监听客户端连接的端口。
四、在 zoo.cfg 中修改数据文件目录为module/apache-zookeeper-3.5.7-bin/zkData。
[user@hadoop102 conf]$ vim zoo.cfg
dataDir = /opt/module/apache-zookeeper-3.5.7-bin/zkData
【注意!】
系统中没有的目录需要自己在文件下主动创建:
[user@hadoop102 apache-zookeeper-3.5.7-bin]$ mkdir zkData
Step2 分布式部署
将module/apache-zookeeper-3.5.7-bin/目录内容同步到其他服务器。
[user@hadoop102 module]$ xsync apache-zookeeper-3.5.7-bin/
xsync是之前创建的分发文件,末尾会给出代码。
2.1 配置服务器编号文件
在存放数据的目录(zkData)下创建 myid 文件,并在 myid 中配置服务器编号为1。分发 myid,分别修改其他服务器上的 myid 文件内容为2、3。
[user@hadoop102 zkData]$ touch myid
[user@hadoop102 zkData]$ vi myid
[user@hadoop102 zkData]$ xsync myid
2.2 配置 zoo.cfg 文件
在 zoo.cfg 中增加如下配置并分发至其他服务器。
###########cluster###########
server.1=hadoop102:2888:3888
server.2=hadoop103:2888:3888
server.3=hadoop104:2888:3888
server.1 表示第几号服务器
hadoop102 表示服务器地址
2888 是Follower与Leader服务器交换信息的端口
3888 是Leader服务器挂掉后执行选举时服务器相互通信的端口
2.3 集群操作
1)分别启动Zookeeper。
[user@hadoop102 apache-zookeeper-3.5.7-bin]$ bin/zkServer.sh start
[user@hadoop103 apache-zookeeper-3.5.7-bin]$ bin/zkServer.sh start
[user@hadoop104 apache-zookeeper-3.5.7-bin]$ bin/zkServer.sh start
2)查看服务器状态
[user@hadoop102 apache-zookeeper-3.5.7-bin]$ bin/zkServer.sh status
[user@hadoop103 apache-zookeeper-3.5.7-bin]$ bin/zkServer.sh status
[user@hadoop104 apache-zookeeper-3.5.7-bin]$ bin/zkServer.sh status
出现一个leader和两个follower代表启动成功。
3)启动客户端
[user@hadoop103 apache-zookeeper-3.5.7-bin]$ bin/zkCli.sh
2.4 集群启动失败的解决办法
配置完毕后,在查看状态时发现提示:Error contacting service. It is probably not running.
检查发现有防火墙未关闭,在centos 7中对防火墙的操作方法如下:
// 查看防火墙状态
systemctl status firewalld.service
// 关闭防火墙
sudo systemctl stop firewalld
如果关闭防火墙仍然不能解决问题,请去logs中的输出日志查看。有可能是端口号占用等问题,修改端口号即可。
附
在/home/user/bin目录下创建集群分发脚本xsync。
#!/bin/bash
if [ $# -lt 1 ]
then
echo Not Enough Arguement!
exit;
fi
for host in hadoop102 hadoop103 hadoop104
do
echo ================= $host =================
for file in $@
do
if [ -e $file ]
then
pdir=$(cd -P $(dirname $file); pwd)
fname=$(basename $file)
ssh $host "mkdir -p $pdir"
rsync -av $pdir/$fname $host:$pdir
else
echo $file does not exists!
fi
done
done
修改脚本具有执行权限,将脚本复制到/bin中以便全局调用。
[user@hadoop102 bin]$ chmod +x xsync
[user@hadoop102 bin]$ sudo cp xsync /bin/