ZooKeeper安装运行






ZooKeeper介绍

  

ZooKeeper是Hadoop的正式子项目,它是一个针对大型分布式系统的可靠协调系统,提供的功能包括:配置维护、名字服务、分布式同步、组服务等。ZooKeeper的目标就是封装好复杂易出错的关键服务,将简单易用的接口和性能高效、功能稳定的系统提供给用户。

Zookeeper是Google的Chubby一个开源的实现.是高有效和可靠的协同工作系统.Zookeeper能够用来leader选举,配置信息维护等.在一个分布式的环境中,我们需要一个Master实例或存储一些配置信息,确保文件写入的一致性等.Zookeeper能够保证如下3点:

  • Watches are ordered with respect to other events, other watches, and
    asynchronous replies. The ZooKeeper client libraries ensures that
    everything is dispatched in order.
  • A client will see a watch event for a znode it is watching before seeing the new data that corresponds to that znode.
  • The order of watch events from ZooKeeper corresponds to the order of the updates as seen by the ZooKeeper service.

 

在Zookeeper中,znode是一个跟Unix文件系统路径相似的节点,可以往这个节点存储或获取数据.如果在创建znode时Flag设置 为EPHEMERAL,那么当这个创建这个znode的节点和Zookeeper失去连接后,这个znode将不再存在在Zookeeper 里.Zookeeper使用Watcher察觉事件信息,当客户端接收到事件信息,比如连接超时,节点数据改变,子节点改变,可以调用相应的行为来处理数 据.Zookeeper的Wiki页面展示了如何使用Zookeeper来处理事件通知,队列,优先队列,锁,共享锁,可撤销的共享锁,两阶段提交.

ZooKeeper官网

   Zookeeper官网

ZooKeeper安装

 首先下载最新版 zookeeper-3.4.5.tar.gz

 然后解压

 tar zxvf zookeeper-3.4.5.tar.gz

 然后进入conf目录修改zoo_sample.cfg为zoo.cfg

然后vi zoo.cfg

更改为:

 

  1. # The number of milliseconds of each tick  
  2. tickTime=2000  
  3. # The number of ticks that the initial   
  4. # synchronization phase can take  
  5. initLimit=10  
  6. # The number of ticks that can pass between   
  7. # sending a request and getting an acknowledgement  
  8. syncLimit=5  
  9. # the directory where the snapshot is stored.  
  10. # do not use /tmp for storage, /tmp here is just   
  11. # example sakes.  
  12. dataDir=/tmp/zookeeper  
  13. # the port at which the clients will connect  
  14. clientPort=2181  
  15. #  
  16. # Be sure to read the maintenance section of the   
  17. # administrator guide before turning on autopurge.  
  18. #  
  19. # http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance  
  20. #  
  21. # The number of snapshots to retain in dataDir  
  22. #autopurge.snapRetainCount=3  
  23. # Purge task interval in hours  
  24. # Set to "0" to disable auto purge feature  
  25. #autopurge.purgeInterval=1  

编辑保存后进入bin目录执行

 ./zkServer.sh start

ZooKeeper测试

  1. [root@localhost bin]# ./zkCli.sh  
  2. Connecting to localhost:2181  
  3. 2013-01-16 14:36:22,484 [myid:] - INFO  [main:Environment@100] - Client environment:zookeeper.version=3.4.5-1392090, built on 09/30/2012 17:52 GMT  
  4. 2013-01-16 14:36:22,488 [myid:] - INFO  [main:Environment@100] - Client environment:host.name=localhost.localdomain  
  5. 2013-01-16 14:36:22,489 [myid:] - INFO  [main:Environment@100] - Client environment:java.version=1.6.0_29  
  6. 2013-01-16 14:36:22,489 [myid:] - INFO  [main:Environment@100] - Client environment:java.vendor=Sun Microsystems Inc.  
  7. 2013-01-16 14:36:22,490 [myid:] - INFO  [main:Environment@100] - Client environment:java.home=/usr/java/jdk1.6.0_29/jre  
  8. 2013-01-16 14:36:22,490 [myid:] - INFO  [main:Environment@100] - Client environment:java.class.path=/usr/local/zookeeper-3.4.5/bin/../build/classes:/usr/local/zookeeper-3.4.5/bin/../build/lib/*.jar:/usr/local/zookeeper-3.4.5/bin/../lib/slf4j-log4j12-1.6.1.jar:/usr/local/zookeeper-3.4.5/bin/../lib/slf4j-api-1.6.1.jar:/usr/local/zookeeper-3.4.5/bin/../lib/netty-3.2.2.Final.jar:/usr/local/zookeeper-3.4.5/bin/../lib/log4j-1.2.15.jar:/usr/local/zookeeper-3.4.5/bin/../lib/jline-0.9.94.jar:/usr/local/zookeeper-3.4.5/bin/../zookeeper-3.4.5.jar:/usr/local/zookeeper-3.4.5/bin/../src/java/lib/*.jar:/usr/local/zookeeper-3.4.5/bin/../conf:./:/usr/java/jdk1.6.0_29/lib:/usr/java/jdk1.6.0_29/jre/lib  
  9. 2013-01-16 14:36:22,491 [myid:] - INFO  [main:Environment@100] - Client environment:java.library.path=/usr/java/jdk1.6.0_29/jre/lib/i386/client:/usr/java/jdk1.6.0_29/jre/lib/i386:/usr/java/jdk1.6.0_29/jre/../lib/i386:/usr/java/packages/lib/i386:/lib:/usr/lib  
  10. 2013-01-16 14:36:22,491 [myid:] - INFO  [main:Environment@100] - Client environment:java.io.tmpdir=/tmp  
  11. 2013-01-16 14:36:22,491 [myid:] - INFO  [main:Environment@100] - Client environment:java.compiler=<NA>  
  12. 2013-01-16 14:36:22,492 [myid:] - INFO  [main:Environment@100] - Client environment:os.name=Linux  
  13. 2013-01-16 14:36:22,492 [myid:] - INFO  [main:Environment@100] - Client environment:os.arch=i386  
  14. 2013-01-16 14:36:22,493 [myid:] - INFO  [main:Environment@100] - Client environment:os.version=2.6.18-308.24.1.el5  
  15. 2013-01-16 14:36:22,493 [myid:] - INFO  [main:Environment@100] - Client environment:user.name=root  
  16. 2013-01-16 14:36:22,493 [myid:] - INFO  [main:Environment@100] - Client environment:user.home=/root  
  17. 2013-01-16 14:36:22,494 [myid:] - INFO  [main:Environment@100] - Client environment:user.dir=/usr/local/zookeeper-3.4.5/bin  
  18. 2013-01-16 14:36:22,496 [myid:] - INFO  [main:ZooKeeper@438] - Initiating client connection, connectString=localhost:2181 sessionTimeout=30000 watcher=org.apache.zookeeper.ZooKeeperMain$MyWatcher@5ffb18  
  19. Welcome to ZooKeeper!  
  20. 2013-01-16 14:36:22,592 [myid:] - INFO  [main-SendThread(localhost.localdomain:2181):ClientCnxn$SendThread@966] - Opening socket connection to server localhost.localdomain/127.0.0.1:2181. Will not attempt to authenticate using SASL (无法定位登录配置)  
  21. 2013-01-16 14:36:22,601 [myid:] - INFO  [main-SendThread(localhost.localdomain:2181):ClientCnxn$SendThread@849] - Socket connection established to localhost.localdomain/127.0.0.1:2181, initiating session  
  22. JLine support is enabled  
  23. 2013-01-16 14:36:22,693 [myid:] - INFO  [main-SendThread(localhost.localdomain:2181):ClientCnxn$SendThread@1207] - Session establishment complete on server localhost.localdomain/127.0.0.1:2181, sessionid = 0x13c3c5224cc0000, negotiated timeout = 30000  
  24.   
  25. WATCHER::  
  26.   
  27. WatchedEvent state:SyncConnected type:None path:null  
  28. [zk: localhost:2181(CONNECTED) 0] help  
  29. ZooKeeper -server host:port cmd args  
  30.         connect host:port  
  31.         get path [watch]  
  32.         ls path [watch]  
  33.         set path data [version]  
  34.         rmr path  
  35.         delquota [-n|-b] path  
  36.         quit   
  37.         printwatches on|off  
  38.         create [-s] [-e] path data acl  
  39.         stat path [watch]  
  40.         close   
  41.         ls2 path [watch]  
  42.         history   
  43.         listquota path  
  44.         setAcl path acl  
  45.         getAcl path  
  46.         sync path  
  47.         redo cmdno  
  48.         addauth scheme auth  
  49.         delete path [version]  
  50.         setquota -n|-b val path  
  51. [zk: localhost:2181(CONNECTED) 1] create /my_data "data.ch.com"  
  52. Created /my_data  
  53. [zk: localhost:2181(CONNECTED) 2] get /my_data  
  54. "data.ch.com"  
  55. cZxid = 0x2  
  56. ctime = Wed Jan 16 14:38:20 CST 2013  
  57. mZxid = 0x2  
  58. mtime = Wed Jan 16 14:38:20 CST 2013  
  59. pZxid = 0x2  
  60. cversion = 0  
  61. dataVersion = 0  
  62. aclVersion = 0  
  63. ephemeralOwner = 0x0  
  64. dataLength = 13  
  65. numChildren = 0  
  66. [zk: localhost:2181(CONNECTED) 3] set /my_date "123456.com"  
  67. Node does not exist: /my_date  
  68. [zk: localhost:2181(CONNECTED) 4] set /my_data "123456.com"  
  69. cZxid = 0x2  
  70. ctime = Wed Jan 16 14:38:20 CST 2013  
  71. mZxid = 0x4  
  72. mtime = Wed Jan 16 14:38:58 CST 2013  
  73. pZxid = 0x2  
  74. cversion = 0  
  75. dataVersion = 1  
  76. aclVersion = 0  
  77. ephemeralOwner = 0x0  
  78. dataLength = 12  
  79. numChildren = 0  
  80. [zk: localhost:2181(CONNECTED) 5] get /my_data  
  81. "123456.com"  
  82. cZxid = 0x2  
  83. ctime = Wed Jan 16 14:38:20 CST 2013  
  84. mZxid = 0x4  
  85. mtime = Wed Jan 16 14:38:58 CST 2013  
  86. pZxid = 0x2  
  87. cversion = 0  
  88. dataVersion = 1  
  89. aclVersion = 0  
  90. ephemeralOwner = 0x0  
  91. dataLength = 12  
  92. numChildren = 0  
  93. [zk: localhost:2181(CONNECTED) 6] create /mytemp "你好吗"  
  94. Created /mytemp  
  95. [zk: localhost:2181(CONNECTED) 7] get /myt  
  96. Node does not exist: /myt  
  97. [zk: localhost:2181(CONNECTED) 8] get /mytemp  
  98. "你好吗"  
  99. cZxid = 0x5  
  100. ctime = Wed Jan 16 14:40:44 CST 2013  
  101. mZxid = 0x5  
  102. mtime = Wed Jan 16 14:40:44 CST 2013  
  103. pZxid = 0x5  
  104. cversion = 0  
  105. dataVersion = 0  
  106. aclVersion = 0  
  107. ephemeralOwner = 0x0  
  108. dataLength = 11  
  109. numChildren = 0  
  110. [zk: localhost:2181(CONNECTED) 9] get /mytemp  
  111. "你好吗"  
  112. cZxid = 0x5  
  113. ctime = Wed Jan 16 14:40:44 CST 2013  
  114. mZxid = 0x5  
  115. mtime = Wed Jan 16 14:40:44 CST 2013  
  116. pZxid = 0x5  
  117. cversion = 0  
  118. dataVersion = 0  
  119. aclVersion = 0  
  120. ephemeralOwner = 0x0  
  121. dataLength = 11  
  122. numChildren = 0  
  123. [zk: localhost:2181(CONNECTED) 10] get /my_data  
  124. "123456.com"  
  125. cZxid = 0x2  
  126. ctime = Wed Jan 16 14:38:20 CST 2013  
  127. mZxid = 0x4  
  128. mtime = Wed Jan 16 14:38:58 CST 2013  
  129. pZxid = 0x2  
  130. cversion = 0  
  131. dataVersion = 1  
  132. aclVersion = 0  
  133. ephemeralOwner = 0x0  
  134. dataLength = 12  
  135. numChildren = 0  
  136. [zk: localhost:2181(CONNECTED) 11] ls  
  137. ZooKeeper -server host:port cmd args  
  138.         connect host:port  
  139.         get path [watch]  
  140.         ls path [watch]  
  141.         set path data [version]  
  142.         rmr path  
  143.         delquota [-n|-b] path  
  144.         quit   
  145.         printwatches on|off  
  146.         create [-s] [-e] path data acl  
  147.         stat path [watch]  
  148.         close   
  149.         ls2 path [watch]  
  150.         history   
  151.         listquota path  
  152.         setAcl path acl  
  153.         getAcl path  
  154.         sync path  
  155.         redo cmdno  
  156.         addauth scheme auth  
  157.         delete path [version]  
  158.         setquota -n|-b val path  
  159. [zk: localhost:2181(CONNECTED) 12]  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值