1. 前言
介绍ZooKeeper-3.4.6版本的分布式安装。
安装环境:64位的 Linux;
JDK:1.7
2. 约定
将ZooKeeper安装在/data/hadoop/zookeeper目录
ZooKeeper的数据目录设置为/data/hadoop/zookeeper/data。
使用了3台机器部署ZooKeeper集群,IP和主机名对应关系如下:
IP | 主机名 |
10.12.154.77 | DEVNET-154-77 |
10.12.154.78 | DEVNET-154-70 |
10.12.154.79 | DEVNET-154-79 |
3. 安装步骤3.1. 配置/etc/hosts
将3台机器的IP和主机名映射关系,在3台机器上都配置一下,亦即在3台机器的/etc/hosts文件中,均增加以下内容(可以先配置好一台,然后通过scp等命令复制到其它机器上):
10.12.154.77 DEVNET-154-77 10.12.154.78 DEVNET-154-70 10.12.154.79 DEVNET-154-79 |
3.2. 设置myid
在dataDir指定的数据目录(/data/hadoop/zookeeper/data)下,创建文件myid,文件内容为一个正整数值,用来唯一标识当前机器,因此不同机器的数值不能相同,建议从1开始递增标识,以方便记忆和管理。本文约定如下:
IP | 标识数值 |
10.12.154.77 | 1 |
10.12.154.78 | 2 |
10.12.154.79 | 3 |
可以使用echo命令直接写进去,如:
echo 1 > myid或echo 1 > /data/hadoop/zookeeper/data/myid |
3.3. 修改conf/zoo.cfg
按下述内容,修改ZooKeeper配置文件(3台机器都需要,可以先配置好一台,然后通过scp等命令复制到其它机器上):
dataDir=/data/hadoop/zookeeper/data server.1=DEVNET-154-77:2888:3888 server.2=DEVNET-154-78:2888:3888 server.3=DEVNET-154-79:2888:3888 |
server.X用来配置ZooKeeper集群中的各节点,并建议X的值和myid保持一致。
端口2181用于监听客户端的连接,端口2888用于Leader监听Follower的连接,而3888则用于Leader选举。
4. 启动ZooKeeper集群
bin目录下的脚本zkServer.sh用来启动ZooKeeper集群,但需要带一个start参数,如:
cd /data/hadoop/zookeeper/bin&&./zkServer.sh start |
由于启动时,每个节点都会试图去连接其它节点,因此先启动的刚开始会连接不上其它的,导致日志中会包含错误信息,在未全启动之前,这个属正常现象。
5. 安装验证
脚本zkServer.sh不但可以用来启动ZooKeeper,还可以用来查看状态。使用方式为带一个status参数,如:
./zkServer.sh status |
如遇到以下错误,请稍安勿躁,过会再试,可能是因为还未完全起来:
[hadoop@DEVNET-154-77 ~/zookeeper/bin]$ ./zkServer.sh status JMX enabled by default Using config: /data/hadoop/zookeeper/bin/../conf/zoo.cfg Error contacting service. It is probably not running. |
集群成功启动后,将有且只会有一个成为leader,其它是follower:
[hadoop@DEVNET-154-79 ~/zookeeper/bin]$ ./zkServer.sh status JMX enabled by default Using config: /data/hadoop/zookeeper/bin/../conf/zoo.cfg Mode: leader
[hadoop@DEVNET-154-70 ~/zookeeper/bin]$ ./zkServer.sh status JMX enabled by default Using config: /data/hadoop/zookeeper/bin/../conf/zoo.cfg Mode: follower
[hadoop@DEVNET-154-77 ~/zookeeper/bin]$ ./zkServer.sh status JMX enabled by default Using config: /data/hadoop/zookeeper/bin/../conf/zoo.cfg Mode: follower |