集群规划
在 hadoop1、hadoop2、hadoop3 分别部署 zookeeper
在 hadoop1 上安装
登录到 hadoop1 虚拟机,执行下面操作
上传
上传到 /program 目录下
解压
解压 到 /program 目录下:
tar --no-same-owner -zxvf zookeeper-3.4.14.tar.gz -C /program
创建 zkData 目录
进入 zk 目录
cd /program/zookeeper-3.4.14/
创建 zkData 目录:
mkdir zkData
创建 myid 文件
在 zkData 目录下创建 myid 文件
cd /program/zookeeper-3.4.14/zkData/
添加内容
vim myid
内容相当于 身份证号,必须唯一,当前 是 hadoop1,所以文件内容是 1,如下:
1
注意:
- 文件名必须是
myid - 内容左右不要有空格,上下不要有空行
- 用
vim命令进行编辑,否则可能有其他字符。不要下载到 windows 进行编辑,否则可能是 windows的换行符\r\n
配置 zoo.cfg 文件
进入 /program/zookeeper-3.4.14/conf/ 目录
cd /program/zookeeper-3.4.14/conf/
复制
将 zoo_sample.cfg 改名为 zoo.cfg:
cp zoo_sample.cfg zoo.cfg
修改 存储数据位置
vim zoo.cfg
找到 dataDir ,改为如下配置:
dataDir=/program/zookeeper-3.4.14/zkData/
配置集群服务器
让集群中的各个 zookeeper 能够通信
在文件末尾添加下面内容:
server.1=hadoop1:2888:3888
server.2=hadoop2:2888:3888
server.3=hadoop3:2888:3888
解释:
配置格式为:
server.A=B:C:D
A:myid文件中的内容,表示第几号服务器B:服务器地址C:是这个服务器 Follower 与 集群 Leader 服务器通信端口D:当 Leader 挂了,通过 该端口 重新选举一个 Leader
修改日志路径
默认情况下,在哪个目录启动脚本,Zookeeper运行日志 zookeeper.out 文件,就保存在该目录下
这是不合理的,修改为指定目录下
修改 bin/zkEnv.sh 文件
vim zkEnv.sh
将下面部分(54行左右):
if [ "x${ZOO_LOG_DIR}" = "x" ]
then
ZOO_LOG_DIR="."
fi
修改成下面:
if [ "x${ZOO_LOG_DIR}" = "x" ]
then
#ZOO_LOG_DIR="."
ZOO_LOG_DIR="/program/zookeeper-3.4.14/log"
fi
esc -> :wq 保存
启动时,zookeeper.out 文件生成在 /program/zookeeper-3.4.14/log 目录下
同步文件
同步到 hadoop2
rsync -av /program/zookeeper-3.4.14 root@hadoop2:/program
同步到 hadoop3
rsync -av /program/zookeeper-3.4.14 root@hadoop3:/program
修改 myid 文件
修改 hadoop2 的 myid 文件
将内容修改为 2
修改 hadoop3 的 myid 文件
将内容修改为 3