安装环境:
Hyper-V 2008 R2,RHEL5.5,Zookeeper3.4.6
计划:
在三台服务器上安装zookeeper,并实现三者同步:
-16.158.49.120,h1.dssdev
-16.158.49.121,h2.dssdev
-16.158.49.123,h3.dssdev
步骤:
- 下载zookeeper3.4.6,并解压至h1.dssdev的/usr/local/zookeeper
[hadoop@h1 zookeeper-3.4.6]$ pwd /usr/local/zookeeper/zookeeper-3.4.6 [hadoop@h1 zookeeper-3.4.6]$ ll total 1564 drwxrwxr-x 2 hadoop hadoop 4096 Apr 9 06:01 bin -rwxrwxr-x 1 hadoop hadoop 82446 Feb 20 18:14 build.xml -rwxrwxr-x 1 hadoop hadoop 80776 Feb 20 18:14 CHANGES.txt drwxrwxr-x 2 hadoop hadoop 4096 Apr 9 05:29 conf drwxrwxr-x 10 hadoop hadoop 4096 Feb 20 18:14 contrib drwxrwxr-x 2 hadoop hadoop 4096 Feb 20 19:05 dist-maven drwxrwxr-x 6 hadoop hadoop 4096 Feb 20 18:48 docs -rwxrwxr-x 1 hadoop hadoop 1953 Feb 20 18:14 ivysettings.xml -rwxrwxr-x 1 hadoop hadoop 3375 Feb 20 18:14 ivy.xml drwxrwxr-x 4 hadoop hadoop 4096 Feb 20 18:48 lib -rwxrwxr-x 1 hadoop hadoop 11358 Feb 20 18:14 LICENSE.txt -rwxrwxr-x 1 hadoop hadoop 170 Feb 20 18:14 NOTICE.txt -rwxrwxr-x 1 hadoop hadoop 1770 Feb 20 18:14 README_packaging.txt -rwxrwxr-x 1 hadoop hadoop 1585 Feb 20 18:14 README.txt drwxrwxr-x 5 hadoop hadoop 4096 Feb 20 18:14 recipes drwxrwxr-x 8 hadoop hadoop 4096 Feb 20 18:48 src -rwxrwxr-x 1 hadoop hadoop 1340305 Feb 20 18:14 zookeeper-3.4.6.jar -rwxrwxr-x 1 hadoop hadoop 836 Feb 20 18:58 zookeeper-3.4.6.jar.asc -rwxrwxr-x 1 hadoop hadoop 33 Feb 20 18:14 zookeeper-3.4.6.jar.md5 -rwxrwxr-x 1 hadoop hadoop 41 Feb 20 18:14 zookeeper-3.4.6.jar.sha1
- 修改环境变量
[hadoop@h1 zookeeper-3.4.6]$ vim /etc/profile export ZOOKEEPER_HOME=/usr/local/zookeeper/zookeeper-3.4.6 export PATH=$PATH:$ZOOKEEPER_HOME/bin:$ZOOKEEPER_HOME/conf: [hadoop@h1 zookeeper-3.4.6]$ source /etc/profile
- 修改配置文件zoo.cfg
# The number of milliseconds of each tick tickTime=2000 # The number of ticks that the initial # synchronization phase can take initLimit=5 # The number of ticks that can pass between # sending a request and getting an acknowledgement syncLimit=2 # the directory where the snapshot is stored. # do not use /tmp for storage, /tmp here is just # example sakes. dataDir=/usr/local/zookeeper/data # 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 server.1=16.158.49.120:2888:3888 server.2=16.158.49.121:2888:3888 server.3=16.158.49.123:2888:3888
- 在zoo.cfg中指定的dataDir中创建myid文件,保证每台服务器id不同,如h1.dssdev为1、h2.dssdev为2等
- 将zookeeper拷贝至其他服务器上
- 在各台服务器上使用zkServer.sh start或zkServer.sh stop起停zookeeper
- 使用zkCli.sh –server ip1:port1,ip2:port2,ip3:port3,ip1会被首先链接,后面的ip作为bakcup,如:
zkCli.sh -server h1.dssdev:2888,h2.dssdev:2888,h3.dssdev:2888
验证:
- 使用zkCli.sh -server h1.dssdev:2888,h2.dssdev:2888,h3.dssdev:2888链接zookeeper server,执行get / 1注册一个watcher,在根节点下创建或修改一个节点,其他server会收到watch提示
另,在有2n+1个节点时,zookeeper能容忍n个节点故障,e.g., 如果 zookeeper拥有 5 台机器,那么它就能处理 2 台机器的故障。