zookeeper 安装包下载地址:https://archive.apache.org/dist/zookeeper/
说明:伪分布即在一台服务器上通过不同端口模拟出分布式集群的效果,分布式一般 3 台起,一主两从。
说明:伪分布安装在了 Windows 开辟的虚拟机上,主机名为 bigdata
1. 将 zookeeper 安装包 zookeeper-3.4.10.tar.gz 导入 Linux
2. 解压并重命名
[root@bigdata ~]# cd /software/
[root@bigdata software]# tar -zxvf zookeeper-3.4.10.tar.gz -C .
[root@bigdata software]# mv zookeeper-3.4.10 zk
3. 配置环境变量
# /etc/profile
export ZOOKEEPER_HOME=/software/zk
export PATH=.:$PATH:$ZOOKEEPER_HOME/bin
4. 备份及修改 zk 配置文件 zoo_sample.cfg.bak
[root@bigdata software]# cd zk/conf
[root@bigdata conf]# cp zoo_sample.cfg zoo1.cfg
[root@bigdata conf]# vi zoo1.cfg # 修改该文件,注意一下两点即可,其他按默认即可
# 客户端端口,三个节点需要指定不同端口避免端口冲突
clientPort=2181
# 存放数据的目录,自定义,后边创建
dataDir=/software/zk/data/bigdata1
# 服务器列表及端口,三个节点需要指定不同的端口避免端口冲突
server.1=bigdata:2887:3887
server.2=bigdata:2888:3888
server.3=bigdata:2889:3889
clientPort
和 dataDir
server.id=hostname:port1:port2
说明2:参数解释
tickTime
:zk 服务器和客户端会话心跳超时间间隔,单位为毫秒 initLimit
:在 zk follower 和 leader 之间进行数据同步最大超时次数,比如 initLimit = 5 ,tickTime = 2000,则允许最大延迟则为 5 * 2000 = 10000 毫秒syncLimit
:在 follower 和 leader 之间数据同步和消息发送时,请求和应答不能超过多少个 tickTImedataDir
:zk 内部存储数据的磁盘位置,默认情况下 zk 的日志文件也保存在这个目录中。zk 运行期间会将数据存储在内存,保证访问速度server.x
:zk 的服务器列表,格式如下:server.x = hostname:port1:port2 ,x 为从 1 -N 的数字,说明该节点 zk 集群中的编号,该编号在 myid 中配置,hostname 为当前服务器主机名或 IP,port1 为 follower 和 leader 之间通讯端口,port2 为 leader 失效后选举端口myid
:在各自的 dataDir 目录中,内容就是当前服务器的编号zoo1.cfg 配置完后为其他两个节点复制两份,并修改 clientPort 和 dataDir:
[root@bigdata conf]# cp zoo1.cfg zoo2.cfg
[root@bigdata conf]# cp zoo1.cfg zoo3.cfg
[root@bigdata conf]# vi zoo2.cfg
clientPort=2182
dataDir=/software/zk/data/bigdata2
[root@bigdata conf]# vi zoo3.cfg
clientPort=2183
dataDir=/software/zk/data/bigdata3
5. 创建节点数据存放目录及 myid
[root@bigdata conf]# mkdir /software/zk/data
[root@bigdata conf]# cd /software/zk/data
[root@bigdata data]# mkdir bigdata1 bigdata2 bigdata3
[root@bigdata data]# vi bigdata1/myid
1
[root@bigdata data]# vi bigdata2/myid
2
[root@bigdata data]# vi bigdata3/myid
3
6. 启动 zk 并查看
# 在 zk/bin 目录下
zkServer.sh start zoo1.cfg
zkServer.sh start zoo2.cfg
zkServer.sh start zoo3.cfg
[root@bigdata zk]# jps
2320 Jps
2050 QuorumPeerMain
2008 QuorumPeerMain
1980 QuorumPeerMain
[root@bigdata zk]# bin/zkServer.sh status zoo1.cfg
ZooKeeper JMX enabled by default
Using config: /software/zk/bin/../conf/zoo1.cfg
Mode: follower
[root@bigdata zk]# bin/zkServer.sh status zoo2.cfg
ZooKeeper JMX enabled by default
Using config: /software/zk/bin/../conf/zoo2.cfg
Mode: leader
[root@bigdata zk]# bin/zkServer.sh status zoo3.cfg
ZooKeeper JMX enabled by default
Using config: /software/zk/bin/../conf/zoo3.cfg
Mode: follower
图示:
1. 上传解压名命名
# 将zookeeper解压后文件夹重命名为zk
mv zookeeper-3.4.10.tar.gz /software
tar -zxvf zookeeper-3.4.10.tar.gz
mv zookeeper-3.4.10 zk
2. 配置环境变量
export ZOOKEEPER_HOME=/software/zk
export PATH=.:$PATH:$ZOOKEEPER_HOME/bin
# 配置完source一下,使其生效:
source /etc/profile
3. 修改配置文件
cd /software/zk/conf
mv zoo_sample.cfg zoo.cfg
vi zoo.cfg
# 在 /software/zk/ 下创建zk的数据存放目录data,并配置到此
dataDir=/software/zk/data
# 在最后添加上以下内容,其中2888是通讯端口,3888是选举端口
server.0=hadoop0:2888:3888
server.1=hadoop1:2888:3888
server.2=hadoop2:2888:3888
4. 配置 myid
mkdir /software/zk/data
cd /software/zk/data
vi myid
# 把 0 写到该文件的最上边,Hadoop1的就写1,Hadoop2的就写2
5. 复制到其他节点上
6. 环境变量的赋值
7. 关闭防火墙和 selinux
# 查看防火墙状态
systemctl status firewalld.service
# 停止防火墙命令
systemctl stop firewalld
# 开机禁止启动命令
systemctl disable firewalld
# 查看selinux状态,非 disabled 则需要禁用
sestatus
# 修改selinux配置文件
vi /etc/selinux/config
sed -i 's/^SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
# 然后重启机器
reboot
8. 启动测试
cd /software/zk/bin # 配置了zk的环境变量可以不切到该目录,在任意目录执行start都可以
zkServer.sh start
# 查看服务器的各个角色:
zkServer.sh status
有Follower、Leader等等
说明:
leader
不一定是在第一个节点上面,是由 Zookeeper 内部的选举机制产生的QuorumPeerMain
进程是 ZooKeeper 的进程名字