目录
Zookeeper是一个开源的分布式服务,是Hadoop下的一个子项目,提供了优秀的分布式一致性的解决方案。Zookeeper的主要功能包括:配置管理、名字服务、分布式锁和集群管理等功能,来统筹分布式场景下的应用服务。
Zookeeper官网:https://Zookeeper.apache.org/
一、前期准备
1、查看网卡:
2、配置静态IP
vi /etc/sysconfig/network-scripts/ifcfg-ens32 ---- 根据自己网卡设置。
3、设置主机名
hostnamectl --static set-hostname 主机名
例如:
hostnamectl --static set-hostname hadoop001
4、配置IP与主机名映射
vi /etc/hosts
5、关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
6、配置免密登录
二、JDK的安装
三、Zookeeper的安装
1、Zookeeper的下载安装
1.1. 下载
https://archive.apache.org/dist/zookeeper/zookeeper-3.7.1/
下载 apache-zookeeper-3.7.1-bin.tar.gz 安装包1.2 上传
使用xshell上传到指定安装路径此处是安装路径是 /opt/module
1.3 解压重命名
tar -zxvf apache-zookeeper-3.7.1-bin.tar.gz
mv apache-zookeeper-3.7.1-bin zookeeper
1.4 配置环境变量
vi /etc/profile
export JAVA_HOME=/opt/module/java
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export ZK_HOME=/opt/module/zookeeper
export PATH=$PATH:$JAVA_HOME/bin:$ZK_HOME/bin
1.5 加载环境变量
source /etc/profile
验证环境变量是否生效:
env | grep HOME
env | grep PATH
2、 创建数据存储和日志目录
创建数据存储目录和日志目录
mkdir /opt/module/zookeeper/zkData
mkdir /opt/module/zookeeper/log
3、 配置文件
配置服务器编号
编辑该“myid”文件,并在对应的IP的机器上输入对应的编号。
如在hadoop001上,“myid”文件内容就是1。在hadoop002上,内容就是2。vi /opt/module/zookeeper/zkData/myid
1
或者使用下面脚本执行:
echo '1'> /opt/module/zookeeper/zkData/myid;
编辑配置文件
cp /opt/module/zookeeper/conf/zoo_sample.cfg /opt/module/zookeeper/conf/zoo.cfg
vi /opt/module/zookeeper/conf/zoo.cfg
dataDir=/opt/module/zookeeper/zkData
dataLogDir=/opt/module/zookeeper/logserver.1=hadoop001:2888:3888
server.2=hadoop002:2888:3888
server.3=hadoop003:2888:3888或者私用脚本命令
cp /opt/module/zookeeper/conf/zoo_sample.cfg /opt/module/zookeeper/conf/zoo.cfg;
sed -i 's|^dataDir=.*|dataDir=/opt/module/zookeeper/zkData|' /opt/module/zookeeper/conf/zoo.cfg;
sed -i '/^dataDir=\/opt\/module\/zookeeper\/zkData$/a\dataLogDir=\/opt\/module\/zookeeper\/log' /opt/module/zookeeper/conf/zoo.cfg;
cat <<EOL >> /opt/module/zookeeper/conf/zoo.cfg
server.1=hadoop001:2888:3888
server.2=hadoop002:2888:3888
server.3=hadoop003:2888:3888
EOL查看效果
head -n 15 /opt/module/zookeeper/conf/zoo.cfg | tail -n 5
cat /opt/module/zookeeper/conf/zoo.cfg | grep server
4、分发文件
scp -r /etc/profile root@hadoop002:/etc/profile
scp -r /etc/profile root@hadoop003:/etc/profile
scp -r /opt/module/java root@hadoop002:/opt/module/java
scp -r /opt/module/java root@hadoop003:/opt/module/java
scp -r /opt/module/zookeeper root@hadoop002:/opt/module/zookeeper
scp -r /opt/module/zookeeper root@hadoop003:/opt/module/zookeeper
让三台机器文件生效
ssh hadoop001 "source /etc/profile"
ssh hadoop002 "source /etc/profile"
ssh hadoop003 "source /etc/profile"
5、修改 myid
修改 hadoop002 的 /opt/module/zookeeper/zkData/myid 内容为 2
vi /opt/module/zookeeper/zkData/myid
2
修改 hadoop003 的 /opt/module/zookeeper/zkData/myid 内容为 3
vi /opt/module/zookeeper/zkData/myid
3
或者使用下面脚本
ssh hadoop002 "echo '2' > /opt/module/zookeeper/zkData/myid"
ssh hadoop003 "echo '3' > /opt/module/zookeeper/zkData/myid"或者使用下面脚本
ssh hadoop002 "sed -i 's/^0$/2/' /opt/module/zookeeper/zkData/myid"
ssh hadoop003 "sed -i 's/^0$/3/' /opt/module/zookeeper/zkData/myid"查看效果
ssh hadoop001 "cat /opt/module/zookeeper/zkData/myid"
ssh hadoop002 "cat /opt/module/zookeeper/zkData/myid"
ssh hadoop003 "cat /opt/module/zookeeper/zkData/myid"
6、 ZK集群启动停止脚本
touch /usr/bin/zkall.sh
chmod 777 /usr/bin/zkall.sh
vi /usr/bin/zkall.sh
#!/bin/bash case $1 in "start"){ for i in hadoop001 hadoop002 hadoop003 do echo ---------- zookeeper $i 启动 ------------ ssh $i "source /etc/profile; /opt/module/zookeeper/bin/zkServer.sh start" done };; "stop"){ for i in hadoop001 hadoop002 hadoop003 do echo ---------- zookeeper $i 停止 ------------ ssh $i "source /etc/profile; /opt/module/zookeeper/bin/zkServer.sh stop" done };; "status"){ for i in hadoop001 hadoop002 hadoop003 do echo ---------- zookeeper $i 状态 ------------ ssh $i "source /etc/profile; /opt/module/zookeeper/bin/zkServer.sh status" done };; esac
启动:/usr/bin/zkall.sh start
停止:/usr/bin/zkall.sh stop
状态:/usr/bin/zkall.sh status
四、客户端命令行操作
1、客户端常用命令
命令基本语法 |
功能描述 |
help |
显示所有操作命令 |
ls path |
使用 ls 命令来查看当前znode的子节点 -w 监听子节点变化 -s 附加次级信息 |
create |
普通创建 -s 含有序列 -e 临时(重启或者超时消失) |
get path |
获得节点的值 -w 监听节点内容变化 -s 附加次级信息 |
set |
设置节点的具体值 |
stat |
查看节点状态 |
delete |
删除节点 |
deleteall |
递归删除节点 |
2、启动客户端
在任意一台安装zk的机器上都可以启动客户端
cd /opt/module/zookeeper/
bin/zkCli.sh
3、客户端命令自行练习
五、参数说明
zoo.cfg配置参数解读
server.A=B:C:D
案例:
server.1=hadoop001:2888:3888
A是一个数字,表示这个是第几号服务器;
例如:在hadoop001上 dataDir目录下的配置一个文件myid中的数字是1,Zookeeper启动时读取此文件,拿到里面的数据与zoo.cfg里面的配置信息比较从而判断到底是哪个server。
B是这个服务器的地址;
C是这个服务器Follower与集群中的Leader服务器交换信息的端口;
D是万一集群中的Leader服务器挂了,需要一个端口来重新进行选举,选出一个新的Leader,而这个端口就是用来执行选举时服务器相互通信的端口。