ZooKeeper有三种部署方式,分别为单机模式、伪集群模式、集群模式。
其中单机模式比较简单,自行查找;伪集群模式和集群模式基本一样,区别就是前者都在一台电脑上,后者在不同的电脑上。
下面以生产环境一般用的集群方式部署为例说明,按最小要求3台节点来介绍集群部署方式。本样例是在3台虚拟机下部署的,每个节点安装Centos7核心版(不带GUI)
3台机器分别规划如下:
hdp1:10.10.10.110
hdp2:10.10.10.112
hdp3:10.10.10.113
相关配置
挂载windows目录、 IP配置、hosts名称配置、关闭防火墙、SSH配置, 需要3台电脑网络互通且能相互SSH登录,
具体操作参见:
Linux系列——挂载Windows虚拟文件夹到Linux系统
jdk安装
具体参见:Linux系列——常规基础操作
ZooKeeper安装
先在其中任意一台上面安装,若要应用hadoop、hbase、kafka时,注意选择匹配版本。
1、下载程序,注意要用带bin的程序,直接解压就可以用,不要选择了源代码还的编译。例如:apache-zookeeper-3.5.9-bin.tar.gz
2、下载地址
https://zookeeper.apache.org/releases.html
3、解压到目标目录
$ cp /mnt/hdfs/vf/apache-zookeeper-3.5.9-bin.tar /usr/proc/zk 从挂载目录将安装文件拷贝到目标路径
$ cd /usr/proc/zk 这里切换到zk安装目录(每台机器都要新建该目录,配好一台后后面两台直接用scp命令分发,具体路径可以自定义,推荐放在/usr下)
$ tar -zxvf apache-zookeeper-3.5.9-bin.tar (解压后记着删除压缩文件)
ZooKeeper配置
1、自带配置样例文件默认在conf目录下,
$ cd /usr/proc/zk/apache-zookeeper-3.5.9-bin/conf 切换到配置文件所在目录
mv zoo_sample.cfg zoo.cfg 新建配置文件,
2、对配置文件进行相应配置,主要配置下面内容:
1)、配置server.id
server.1=hdp1:2888:3888 (含义:1<下面的myid名字>;hdp1<本机名字> 2888<同步端口> 3888<选举端口>)
server.2=hdp2:2888:3888
server.3=hdp3:2888:3888
2)、配置datadir logdir 绑定端口及IP
$ mkdir /usr/data/zk/datadir
$ mkdir /usr/data/zk/logdir
# the directory where the snapshot is stored.
# do not use /tmp for storage, /tmp here is just
# example sakes.
dataDir=/usr/data/zk/datadir
dataLogDir=/usr/data/zk/logdir
# the port at which the clients will connect
clientPortAddress=10.10.10.110
3)、创建myid文件,
$ mkdir /usr/data/zk/datadir/myid 在数据目录下新建myid文件,用于标识本机,其中id 必须与配置文件里主机名对应的 server.(id) 一致
$ cd /usr/data/zk/datadir 切换到数据目录
$ echo '1' > /myid 设置myid标识
4)、核心参数,保持默认配置
# 发送心跳的间隔时间
tickTime=2000
# leader和follower初始化连接时最长能忍受多少个心跳时间的间隔数
initLimit=10
# 正常请求成功的tick数量
syncLimit=5
# 客户端连接端口
clientPort=2181
分发程序
scp -r /usr/proc/zk root@hdp2:/usr/proc/zk 分发到hdp2
scp -r /usr/proc/zk root@hdp2:/usr/proc/zk 分发到hdp3
修改配置
1、分别修改zoo.cfg文件、myid文件
2、clientPortAddress=10.10.10.112 hdp2上修改
$ cd /usr/data/zk/datadir 切换到数据目录
$ echo '2' > /myid 设置myid标识
3、clientPortAddress=10.10.10.113 hdp3上修改
$ cd /usr/data/zk/datadir 切换到数据目录
$ echo '3' > /myid 设置myid标识
启动
1、分别启动3台机器上的ZooKeeper进程
$ cd /usr/proc/zk/apache-zookeeper-3.5.9-bin/ 切换到进程目录
$ zkServer.sh start
2、在启动时若报错可根据提示信息进行排错处理,第一次安装时会遇到如下常见问题:
1)、由于没有指定IP地址报错,要在配置文件绑定地址, clientPortAddress=IP地址
2)、由于开着防火墙导致不能相互通信,需要关闭防火墙, 用命令 systemctl stop firewalld 进行关闭防火墙
查看状态
1、在3台机器都正确启动ZooKeeper进程后,进行查看状态,
$ cd /usr/proc/zk/apache-zookeeper-3.5.9-bin/ 切换到进程目录
$ zkServer.sh status
2、启动后3台机器的状态,其中有一台是:leader,另外2台是:follower
基本操作
启动实例:./bin/zkServer.sh start
停止实例:./bin/zkServer.sh stop
重启实例:./bin/zkServer.sh restart
查看状态:./bin/zkServer.sh status
打开zk客户端, 参数可选
zkCli.sh -server ip:port
输出所有zk支持的命令
help
// 查看节点所包含的节点
ls path
// 创建一个新节点
// -e 创建临时节点
// -s 创建有序节点
create [-e] [-s] path [data]
// 查看节点上的值
get path
// 设置节点上的值
set path data
// 删除节点(只能删除没有下级节点的类型)
delete path
// 删除节点(递归删除下级节点)
rmr path