本次使用的ZooKeeper3为ZooKeeper3,Linux发行版为CentOS7。

主机名IP
zk1192.168.150.101
zk2192.168.150.102
zk3192.168.150.103

前置准备:

一、搭建zk1
静态IP、关闭防火墙,关闭selinux,命名主机名为zk1,修改hosts做一个映射,修改ip地址。
参见:Hadoop3.3.1详细教程(二)样机配置
二、安装JDK
参见:Hadoop3.3.1详细教程(三)克隆样机+JDK安装
三、免密登录
参见:Hadoop3.3.1详细教程(四)Linux集群搭建+免密登录

安装ZooKeeper

1.下载ZooKeeper3.4.6,并上传到hp301的/apps目录下

2.解压到/usr/local之下:

tar -xzf /apps/zookeeper-3.4.6.tar.gz -C /usr/local

3.为ZooKeeper创建一个软连接:
在这里插入图片描述
4.修改ZooKeeper环境变量:

vi /etc/profile.d/zookeepr.sh

编辑:

export ZOOKEEPER_HOME=/usr/local/zookeeper3
export PATH=$PATH:$ZOOKEEPER_HOME/bin

source使之有效。

5.配置ZooKeeper
1)在linux的根目录/下新建一个保存事务日志和数据的文件夹zk_data,在其下新建zk_data目录,在zk_data目录下新建data目录和logs目录。
在这里插入图片描述
2)复制zookeeper3/conf下的zoo_sample.cfg 改名为 zoo.cfg,并修改其中的配资信息:

zoo.cfg 的dataDir=/zk_data/data

添加一个dataLogDir:

dataLogDir=/zk_data/logs

3)6.配置集群结点:
server.n=ip:A:B
  # n是节点编号,一般从1开始
  # ip是集群中节点所在服务器IP地址
  # A是LF通信端口,表示该服务器与集群中的leader交换的信息的端口,默认是2888
  # B是选举端口,表示选举新leader时服务器间相互通信的端口(当leader挂掉时,其余服务器会相互通信,选择出新的leader),默认是3888

三台虚拟机的话,可以这样配置,复制到zoo.cfg最后:

server.1=zk1:2888:3888
server.2=zk2:2888:3888
server.3=zk3:2888:3888

4)在 zk_data/data中新建一个myid文件,内容填写1,表示上面的server.1

6.建立集群
克隆出zk2、zk3、修改hostname、ip地址、/zk_data/data/myid的值分别为2、3
也可以使用分发方式。

7.启动 ZooKeeper:

   # 启动,默认是后台启动,当前shell不会被阻塞
  zkServer.sh start
  # 停止
  zkServer.sh stop
  # 重启
  zkServer.sh restart
  # 查看当前节点状态
  zkServer.sh status
  # upgrade是升级,print-cmd是打印命令,这两个用的少

如果只是启动另一个结点的Zookeeper,而没有启动集群的话,因为配置了三台结点,所以无法选举,在执行zkServer.sh status时候会报:

Error contacting service. It is probably not running.

当三个结点都启动再使用zkServer.sh status命令查看时候,会看到:
zk1、zk3 是follower
在这里插入图片描述
zk2是leader
在这里插入图片描述

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐