环境说明
- 基于apache-zookeeper-3.5.7版本
- centos7
- 官网下载地址
集群规划
- 之后每台服务器的配置编写几乎一摸一样, 除了myid文件内容不同
hadoop300 | hadoop301 | hadoop302 | |
---|---|---|---|
zookeeper | V | V | V |
安装
1、安装包准备
- 下载后, 解压到每台服务器的一个位置即可.
如hadoop300, 其他集群服务器一样
[hadoop@hadoop300 app]$ pwd
/home/hadoop/app
[hadoop@hadoop300 app]$ ll
总用量 0
lrwxrwxrwx. 1 hadoop hadoop 44 1月 13 23:24 jdk -> /home/hadoop/app/manager/jdk_mg/jdk1.8.0_212
drwxrwxr-x. 6 hadoop hadoop 72 1月 14 19:16 manager
lrwxrwxrwx. 1 hadoop hadoop 64 1月 14 17:24 zookeeper -> /home/hadoop/app/manager/zookeeper_mg/apache-zookeeper-3.5.7-bin
2、配置zk环境变量
修vim ~/.bash_profile
文件添加如下, 每台服务器都要配置
# ================= Zookeeper ===============
export ZOOKEEPER_HOME=/home/hadoop/app/zookeeper
export PATH=$PATH:$ZOOKEEPER_HOME/bin
3、创建 myid 文件
- 3台服务器都要创建
- 先在
${ZOOKEEPER_HOME}
/ 目录下创建一个 data(名字任意) 目录用于存放myid文件(唯一标识一台zk节点
)及其他zk数据 - 然后在myid文件里编写节点唯一id,
hadood300为1
,hadoop301为2
,hadoop302为3
以下是haoop300节点的操作, 其他服务器同理,区别是是myid文件的内容不同即可.
[hadoop@hadoop300 zookeeper]$ pwd
/home/hadoop/app/zookeeper
[hadoop@hadoop300 zookeeper]$ mkdir data
[hadoop@hadoop300 zookeeper]$ cd data
[hadoop@hadoop300 data]$ echo 1 >> myid
[hadoop@hadoop300 data]$ ll
总用量 8
-rw-rw-r--. 1 hadoop hadoop 2 1月 14 18:17 myid
[hadoop@hadoop300 data]$ cat myid
1
4、修改zoo.cfg配置文件
- 3台服务器要保持同步
[hadoop@hadoop300 conf]$ pwd
/home/hadoop/app/zookeeper/conf
[hadoop@hadoop300 conf]$ cp zoo_sample.cfg zoo.cfg
[hadoop@hadoop300 conf]$ ll
总用量 16
-rw-r--r--. 1 hadoop hadoop 535 5月 4 2018 configuration.xsl
-rw-r--r--. 1 hadoop hadoop 2712 2月 7 2020 log4j.properties
-rw-r--r--. 1 hadoop hadoop 922 1月 14 17:27 zoo.cfg
-rw-r--r--. 1 hadoop hadoop 922 2月 7 2020 zoo_sample.cfg
[hadoop@hadoop300 conf]$ vim zoo.cfg
修改内容如下
# 上一步创建的data目录路径,
dataDir=/home/hadoop/app/zookeeper/data
# zk集群ip列表
# 1、这里的.1、.2、.3 代表myid文件的内容, 对应该服务器
# 2、2888端口用于leader 和 flower 之间进行TCP交互
# 3、3888端口适合在leader挂了之后, 用于leader选举时服务器之间进行互相通信的端口
server.1=hadoop300:2888:3888
server.2=hadoop301:2888:3888
server.3=hadoop302:2888:3888
5、ZK集群统一启动/停止脚本
[hadoop@hadoop300 shell]$ pwd
/home/hadoop/shell
[hadoop@hadoop300 shell]$ vim zk.sh
[hadoop@hadoop300 shell]$ chmod ug+x zk.sh
[hadoop@hadoop300 shell]$ ll
-rwxrwxr--. 1 hadoop hadoop 464 1月 14 17:50 zk.sh
zk.sh内容如下
[Tip]
- 因为配置了zk的环境变量到
~/.bash_profile
下所以可以直接使用zkServer.sh
脚本. 当然也可以写该脚本的绝对路径即可. - ssh远程执行命令默认不会加载这个
bash_profile
环境变量,所以手动source一下,详细见ssh连接远程主机执行脚本的环境变量问题
#!/bin/bash
# 集群列表
list=(hadoop300 hadoop301 hadoop302)
case $1 in
"start"){
for i in ${list[@]}
do
echo ---------- zookeeper[ $i ]启动 ------------
ssh $i "source ~/.bash_profile;zkServer.sh start"
done
};;
"stop"){
for i in ${list[@]}
do
echo ---------- zookeeper[ $i ]停止 ------------
ssh $i "source ~/.bash_profile;zkServer.sh stop"
done
};;
"status"){
for i in ${list[@]}
do
echo ---------- zookeeper [$i] 状态 ------------
ssh $i "source ~/.bash_profile;zkServer.sh status"
done
};;
然后将该脚本挂载到全局调用即可, 配置环境变量或者软连接挂载到 系统bin目录下
6、启动测试
- 可以看到301被选举为leader
# 启动
[hadoop@hadoop300 data]$ zk.sh start
---------- zookeeper[ hadoop300 ]启动 ------------
ZooKeeper JMX enabled by default
Using config: /home/hadoop/app/zookeeper/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
---------- zookeeper[ hadoop301 ]启动 ------------
ZooKeeper JMX enabled by default
Using config: /home/hadoop/app/zookeeper/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
---------- zookeeper[ hadoop302 ]启动 ------------
ZooKeeper JMX enabled by default
Using config: /home/hadoop/app/zookeeper/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
# 查看状态
[hadoop@hadoop300 data]$ zk.sh status
---------- zookeeper [hadoop300] 状态 ------------
ZooKeeper JMX enabled by default
Using config: /home/hadoop/app/zookeeper/bin/../conf/zoo.cfg
Client port found: 2181. Client address: localhost.
Mode: follower
---------- zookeeper [hadoop301] 状态 ------------
ZooKeeper JMX enabled by default
Using config: /home/hadoop/app/zookeeper/bin/../conf/zoo.cfg
Client port found: 2181. Client address: localhost.
Mode: leader
---------- zookeeper [hadoop302] 状态 ------------
ZooKeeper JMX enabled by default
Using config: /home/hadoop/app/zookeeper/bin/../conf/zoo.cfg
Client port found: 2181. Client address: localhost.
Mode: follower
# jps查看zk进程叫QuorumPeerMain
[hadoop@hadoop300 ~]$ xcall jps
--------- hadoop300 ----------
1749 QuorumPeerMain
1813 Jps
--------- hadoop301 ----------
1623 QuorumPeerMain
1690 Jps
--------- hadoop302 ----------
1687 Jps
1627 QuorumPeerMain