zookeeper 集群搭建
0. 环境准备
本实验基于以下 3 台测试机器进行:
IP | hostname |
---|---|
10.4.79.90 | hadoop-1 |
10.4.79.8 | hadoop-2 |
10.4.79.6 | hadoop-3 |
首先确认每个机器都安装了如下软件:
- JAVA >= 1.8.x
为集群每个节点配置 hostname:vi /etc/hosts
10.4.79.90 hadoop-1
10.4.79.8 hadoop-2
10.4.79.6 hadoop-3
1. ZK 集群搭建
本文所使用的 zookeeper 版本为:3.5.8
1.1 解压缩
tar -zxvf apache-zookeeper-x.x.x-bin.tar.gz
1.2 创建 data 文件夹
data 文件夹用于存放 zookeeper 的数据。
cd apache-zookeeper
mkdir data
1.3 准备配置文件 zoo.cfg
zoo.cfg 从 zoo_sample.cfg 复制得到,zookeeper 默认以 zoo.cfg 作为配置文件启动.
cd apache-zookeeper/conf
cp zoo_sample.cfg zoo.cfg
修改配置文件 zoo.cfg,一共需要修改两处:
第一处:修改 dataDir 为我们创建的 zookeeper/data 路径:
dataDir=/data/apache-zookeeper/data
第二处:文件末尾添加其他 zookeeper 节点的信息:
server.1=hadoop-1:2888:3888
server.2=hadoop-2:2888:3888
server.3=hadoop-3:2888:3888
其中 server.1 中的后缀 1 实际上为相应 zookeeper 节点的 id,例如本例中我们指定 hadoop-1 节点作为 zookeeper 集群的 1 号节点。
如何让 hadoop-1 知道自己是 1 号节点呢?在 zookeeper/data 下创建一个文件 myid,里面写入 1 即可。
相应地,在 hadoop-2 的 zookeeper/data 下创建文件 myid,修改内容为 2,在 hadoop-3 的 zookeeper/data 下创建文件 myid,修改内容为 3。
一般我们在一个节点配置好后,再 scp 到其他节点,那么在复制之后不要忘记修改 myid 为相应节点的编号。
1.4 启动 zookeeper
依次在每个节点启动 zookeeper:
./bin/zkServer.sh start
查看每个节点在集群中的角色:
./bin/zkServer.sh status
可以看到集群中有一个 leader 节点,其余为 follower 节点,集群搭建完成。