Zookeeper的下载地址:
http://zookeeper.apache.org/releases.html
安装
安装 Zookeeper 之前需要先安装 JDK,关于 JDK 的安装见 JDK安装
根据 Zookeeper官网 下载压缩文件【此处为3.4.8版本】,进行如下操作:
- 解压
tar -zxvf zookeeper-3.4.8.tar.gz
- 目录重命名
mv zookeeper-3.4.8 zookeeper
- 修改用户和用户组
chown —R hadoop:hadoop zookeeper/
- 配置环境变量
## 编辑.bashrc文件,在文件末尾添加以下环境变量配置:
# ZooKeeper Env
export ZOOKEEPER_HOME=/opt/zookeeper
export PATH=$PATH:$ZOOKEEPER_HOME/bin
## 使环境变量生效
source .bashrc
配置
初次使用 ZooKeeper 时, 需要将 $ZOOKEEPER_HOME/conf
目录下的 zoo_sample.cfg
重命名为 zoo.cfg
,zoo.cfg
默认配置如下:
# The number of milliseconds of each
ticktickTime=2000
# The number of ticks that the initial
# synchronization phase can take
initLimit=10
# The number of ticks that can pass between
# sending a request and getting an acknowledgement
syncLimit=5
# the directory where the snapshot is stored.
# do not use /tmp for storage, /tmp here is just
# example sakes.dataDir=/tmp/zookeeper
# the port at which the clients will connect
clientPort=2181
# the maximum number of client connections.
# increase this if you need to handle more clients
#maxClientCnxns=60
#
# Be sure to read the maintenance section of the
# administrator guide before turning on autopurge.
#
# http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance
#
# The number of snapshots to retain in dataDir
#autopurge.snapRetainCount=3
# Purge task interval in hours
# Set to "0" to disable auto purge feature
#autopurge.purgeInterval=1
部署模式
Zookeeper 的部署模式有 3 种:
- 单机模式
- 伪集群模式
- 集群模式
单机模式
zoo.cfg
配置
tickTime=2000
dataDir=/Users/apple/zookeeper/data
dataLogDir=/Users/apple/zookeeper/logs
clientPort=2181
参数说明:
tickTime
:zookeeper 中使用的基本时间单位,毫秒值dataDir
:数据目录,可以是任意目录dataLogDir
:log 目录,同样可以是任意目录。如果没有设置该参数,将使用和 dataDir 相同的设置clientPort
:监听 client 连接的端口号
至此, zookeeper的单机模式已经配置好了。
启动server只需运行脚本:
bin/zkServer.sh start
Server 启动之后,就可以启动 client 连接 server 了,执行脚本:
bin/zkCli.sh -server localhost:2181
伪集群模式
所谓伪集群, 是指在单台机器中启动多个zookeeper进程, 并组成一个集群. 以启动3个zookeeper进程为例。
将zookeeper的目录拷贝2份:
|--zookeeper0
|--zookeeper1
|--zookeeper2
更改 zookeeper0/conf/zoo.cfg
文件为:
tickTime=2000
initLimit=5
syncLimit=2
dataDir=/Users/apple/zookeeper0/data
dataLogDir=/Users/apple/zookeeper0/logs
clientPort=2181
server.0=127.0.0.1:8880:7770
server.1=127.0.0.1:8881:7771
server.2=127.0.0.1:8882:7772
新增几个参数,其含义如下:
initLimit
: zookeeper 集群中的包含多台server,其中一台为 leader,集群中其余的 server 为 follower。initLimit 参数配置初始化连接时,follower 和 leader 之间的最长心跳时间。此时该参数设置为 5,说明时间限制为 5 倍 tickTime,即5*2000=10000ms=10s
syncLimit
:该参数配置 leader 和 follower 之间发送消息,请求和应答的最大时间长度。此时该参数设置为 2,说明时间限制为 2 倍 tickTime,即 4000msserver.X=A:B:C
:其中 X 是一个数字,表示这是第几号 server。A 是该 server 所在的 IP 地址,B 配置该 server 和集群中的 leader 交换消息所使用的端口。C 配置选举 leader 时所使用的端口。由于配置的是伪集群模式,所以各个 server 的 B,C 参数必须不同
参照 zookeeper0/conf/zoo.cfg
,配置 zookeeper1/conf/zoo.cfg
和 zookeeper2/conf/zoo.cfg
文件。只需更改dataDir、dataLogDir、clientPort 参数即可。
在之前设置的 dataDir 中新建myid
文件,写入一个数字,该数字表示这是第几号server。该数字必须和 zoo.cfg
文件中的 server.X
中的 X 一一对应。也就是 /Users/apple/zookeeper0/data/myid
文件中写入0,/Users/apple/zookeeper1/data/myid
文件中写入1,/Users/apple/zookeeper2/data/myid
文件中写入2。
分别进入/Users/apple/zookeeper0/bin
、/Users/apple/zookeeper1/bin
、/Users/apple/zookeeper2/bin
三个目录,启动server。
任意选择一个server目录,启动客户端:
bin/zkCli.sh -server localhost:4180
集群模式
集群模式的配置和伪集群基本一致。
由于集群模式下,各 server 部署在不同的机器上,因此各 server 的 conf/zoo.cfg
文件可以完全一样。
tickTime=2000
initLimit=5
syncLimit=2
dataDir=/home/zookeeper/data
dataLogDir=/home/zookeeper/logs
clientPort=2181
server.48=192.168.186.48:2888:3888
server.49=192.168.186.49:2888:3888
server.50=192.168.186.50:2888:3888
示例中部署了 3 台 zookeeper server,分别部署在192.168.186.48
、192.168.186.49
、192.168.186.50
上。需要注意的是各 server 的 dataDir 目录下的 myid 文件中的数字必须不同,如下:
192.168.186.48
server 的 myid 为 48192.168.186.49
server 的 myid 为 49192.168.186.50
server 的 myid 为 50
本文由博客一文多发平台 OpenWrite 发布!