(1).单点安装

1、下载zookeeper

2、解压:tar -xzvf/usr/zookeeper-3.3.5.tar.gz

3、进入安装目录,zookeeper的配置文件在当前目录下的conf中,将zoo_sample.cfg 重命名为zoo.cfg,因为zookeeper启动时,默认加载的配置文件为zoo.cfg

4、单机模式下,zoo.cfg只需要配置dataDir和dataLogDir即可

5、进入到zookeeper-3.3.5/bin下,修改zkServer.sh文件如下:

  1. ZOOKEEPER=/usr /zookeeper-3.3.5
  2. PATH=$PATH:$ZOOKEEPER/bin
  3. export PATH

这样做的目的是防止在启动zookeeper时由于找不到zookeeper的当前根目录而产生一些错误。当然你也可以不加,然后尝试启动、停止、重新启动等命令看看。

这样配置后,我们就可以启动zookeeper了。

6、启动命令:进入到zookpeeper的bin目录下:sh zkServer.sh start

也可以尝试运行 sh zkCli.sh -server ip_address:port


(2).分布式安装

1、拷贝压缩文件到Linux的“/usr/”目录下。同时新建目录“/zookeeper-3.3.5”。

2、安装JDK

3、解压zookeeper到/zookeeper-3.3.5目录下。tar -zxvf zookeeper-3.3.5.tar.gz

4、将“/zookeeper-3.3.5/conf”目录下zoo_sample.cfg修改名称为“zoo.cfg”

5、打开zoo.cfg文件,修改配置如下:

dataDir=/usr/zookeeper-3.3.5/data

dataLogDir=/usr/zookeeper-3.3.5/log

clientPort=2181
initLimit=10
syncLimit=5
tickTime=2000
server.1=192.168.18.1:2888:3888
server.2=192.168.18.2:2888:3888
server.3=192.168.18.3:2888:3888

6、创建dataDir参数指定的目录(这里指的是“/zookeeper-3.3.5/data”),并在目录下创建文件,命名为“myid”。

7、编辑“myid”文件,并在对应的IP的机器上输入对应的编号。如在192.168.18.1上,“myid”文件内容就是1,在192.168.18.2上,内容就是2

8、在/etc/profile文件设置如下:

# zookeeper path

ZOOKEEPER=/usr/zookeeper-3.3.5

PATH=$PATH:$ZOOKEEPER/bin

export PATH

9、将 “/usr/zookeeper-3.3.5” 目录分别拷贝到192.168.18.2和192.168.18.3下。

同时修改对应的“myid”文件内容。

10、至此,安装步骤结束,接下来启动zookeeper。

11、启动zookeeper

1)、在三台机器上分别执行shell脚本。“sh /usr/zookeeper-3.3.5/bin/zkServer.sh start”

2)、启动客户端脚本:“sh zkCli.sh -server192.168.18.1:2181”

3)、通过输入“sh /usr/zookeeper-3.3.5/bin/zkServer.sh status”检查是否启动,

4)、通过在控制台输入命令检查集群zookeeper启动状态。

12、注意事项

1)、通过shell脚本在每个机器上启动zookeeper的时候,可能会显示错误信息“Cannot open channel to X at election address”。这是由于zoo.cfg文件中指定的其他zookeeper服务找不到所导致。所有机器的zookeeper服务启动之后该错误提示将会消失。

2)、Zookeeper的集群环境最好有3台以上的节点,如果只有2台,那么2台当中不管那台机器down掉,将只会剩下一个leader,那么如果有再有客户端连接上来,将无法工作,并且剩下的leader服务器会不断的抛出异常。内容如下:

2013-03-13 18:36:16,591 - INFO  [main-SendThread():ClientCnxn$SendThread@1058] - Opening socket connection to server /192.168.18.2:2181
JLine support is enabled
2013-03-13 18:36:16,632 - INFO  [main-SendThread(Slave1.Hadoop:2181):ClientCnxn$SendThread@947] - Socket connection established to Slave1.Hadoop/192.168.18.2:2181, initiating session
2013-03-13 18:36:16,702 - INFO  [main-SendThread(Slave1.Hadoop:2181):ClientCnxn$SendThread@1183] - Unable to read additional data from server sessionid 0x0, likely server has closed socket, closing socket connection and attempting reconnect
[zk: 192.168.18.2:2181(CONNECTING) 0] 2013-03-13 18:36:18,499 - INFO  [mainSendThread(Slave1.Hadoop:2181):ClientCnxn$SendThread@1058] - Opening socket connection to server Slave1.Hadoop/192.168.18.2:2181