1.虚拟机环境
主机名 | IP | 内存 | 磁盘 | CPU |
---|---|---|---|---|
hadoop1 | 192.168.56.77 | 2G | 40G | 1 |
hadoop2 | 192.168.56.88 | 2G | 40G | 1 |
hadoop3 | 192.168.56.99 | 2G | 40G | 1 |
2.下载安装包
https://mirrors.ustc.edu.cn/apache/zookeeper/zookeeper-3.5.8/
使用的是中国科学技术大学的开源软件镜像站
3.安装zookeeper
特别注意:安装zookeeper的机器需要安装JDK并且配置好环境变量
使用sftp工具将zookeeper安装上传到hadoop1
3.1配置主机名到IP的映射(所有主机)
vi /etc/hosts
192.168.56.77 hadoop1
192.168.56.88 hadoop2
192.168.56.99 hadoop3
3.2关闭防火墙(所有主机)
systemctl stop firewalld && systemctl disable firewalld
3.3配置免密码登录(hadoop1)
# 三次回车 生成公钥和私钥
ssh-keygen
# 将密钥复制到集群中的各个节点 实现 hadoop1 到 集群所有机器的无密码登录
# 需要输入 yes 和 其它机器的密码
ssh-copy-id hadoop1
ssh-copy-id hadoop2
ssh-copy-id hadoop3
3.4解压(hadoop1)
# -C 指定解压的目录
tar -zxvf apache-zookeeper-3.5.8-bin.tar.gz -C /opt/
3.5配置环境变量(hadoop1)
vi /etc/profile
export ZOOKEEPER_HOME=/opt/apache-zookeeper-3.5.8-bin/
export PATH=$PATH:$ZOOKEEPER_HOME/bin
# 刷新环境变量
source /etc/profile
3.6修改zoo.cfg(hadoop1)
zookeeper的配置文件位于安装目录下的conf目录
# 进入配置文件目录
cd /opt/apache-zookeeper-3.5.8-bin/conf/
ll
可以使用模板配置,需要将模板配置文件配置复制一份并且重命名为zoo.cfg,本文不使用模板配置,直接创建一个空的zoo.cfg文件并写入相关配置
vi zoo.cfg
# 集群中机器心跳时间
tickTime=2000
# 存放数据的目录
dataDir=/opt/zookeeper/data
# 存放日志文件的目录
dataLogDir=/opt/zookeeper/log
# 客户端通信端口
clientPort=2181
# 集群中机器最开始通信的心跳数量
initLimit=5
# 集群中机器同步的心跳时间
syncLimit=2
# 集群中机器的信息 server.N(id)=(主机名或IP):2888(集群中机器通信端口):3888(选举leader的端口)
server.1=hadoop1:2888:3888
server.2=hadoop2:2888:3888
server.3=hadoop3:2888:3888
3.7分发安装包
# 使用scp命令分发安装包
scp -r /opt/apache-zookeeper-3.5.8-bin hadoop2:/opt/
scp -r /opt/apache-zookeeper-3.5.8-bin hadoop3:/opt/
# 将环境变量相关配置也分发到其它机器
scp /etc/profile hadoop2:/etc
scp /etc/profile hadoop3:/etc
# 其它机器也需要刷新环境变量 才能使用相关命令
scource /etc/profile
3.8创建相关文件夹(所有机器)
# 每个机器都需要创建相关文件夹
mkdir -p /opt/zookeeper/{data,log}
3.9myid文件
在zoo.cfg中为每一台机器指定的id,这个id需要写在zookeeper数据目录的myid文件中
# hadoop1 的id为1 在hadoop1上执行
echo 1 > /opt/zookeeper/data/myid
# hadoop3 的id为2 在hadoop2上执行
echo 2 > /opt/zookeeper/data/myid
# hadoop3 的id为3 在hadoop3上执行
echo 3 > /opt/zookeeper/data/myid
配置完成后就可以启动zookeeper了
4.启动
zookeeper的所有命令都位于zookeeper的bin目录,配置了环境变量并且刷新了环境变量,就可以直接执行相关命令了
# 在任意一台机器输入 zk 然后按一下tab可以看到zookeeper的所有命令
# zkServer.sh 服务端相关命令 用于启动 停止 重启zookeeper服务也可以查看zookeeper服务状态
# zkCli.sh 客户端相关命令 用于连接到到zookeeper服务 进行一些数据的增删改查操作
# 使用如下命令启动zookeeper 所有机器都需要手动执行
zkServer.sh start
# 使用jp命令s可以查看到zookeeper的后台java进程 jps是JDK提供的查看本机java进程的命令
jps
# 可以使用zkServer.sh status命令查看每台机器zookeeper服务的状态 主要看机器的角色信息(leader follower)
zkServer.sh status
# 使用zkServer.sh stop 停止当前机器的zookeeper服务
# 使用zkServer.sh restart 重启当前机器的zookeeper服务
5.zookeeper使用脚本
由于zookeeper在启动或者停止的时候需要在每一台机器操作,比较繁琐,可以编写一个脚本让我们在一台机器上就可以操作整个zookeeper集群
vi zoo.sh
#!/bin/bash
for i in 1 2 3
do
ssh hadoop$i "source /etc/profile;zkServer.sh $1"
done
# 需要加上可执行权限 才能执行
chmod +x zoo.sh