下载 从Apache下载镜像站点下载当前稳定发布版 。
单机操作 安装单机模式的Zookeeper服务器是简单明了的。服务器包含在一个单独的JAR文件中,因此安装包含创建配置。
下载稳定的ZooKeeper发布版后,解压并切换到包的根目录。
启动ZooKeeper前需要一个配置文件。下面是示例配置文件,创建conf/zoo.cfg
:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 # The number of milliseconds of each tick tickTime=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=/data/zookeeper # the port at which the clients will connect clientPort=2181
这个配置文件可以叫任意名字,在此我们叫它conf/zoo.cfg
。创建目录/data/zookeeper
,并修改dataDir为该目录。
tickTime
Zookeeper使用的单位为毫秒的基本时间。用来做心跳,会话超时的最小时间是两次tickTime。
dataDir
目录位置用来保存内存数据库快照及数据库更新的事务日志,除非另有规定。
clientPort
监听客户端连接的端口号。
创建配置文件后就可以启动ZooKeeper了:
ZooKeeper用log4j记录日志消息 – 可以在程序员指导手册中的Logging 一节获取更多详细信息。可以从控制台(默认)并且/或者看到日志信息,这依赖log4j的配置。
这里列出的步骤是运行单机模式ZooKeeper的。单机模式没有副本,因此,如果ZooKeeper进程失败,则服务就会宕掉。这对于大多数开发场景是没问题的,运行副本模式的ZooKeeper,请参见运行副本模式的Zookeeper 。
管理ZooKeeper存储 对于长期运行的生产系统,ZooKeeper存储必须从外部进行管理(dataDir和logs)。参见在 maintenance 中的章节获取更多信息。
连接到ZooKeeper 1 bin/zkCli.sh -server 127.0.0.1:2181
这使你可以执行简单的、像文件一样的操作。
当建立了连接,应该可以看到像下面的一些信息:
1 2 3 4 5 6 Connecting to localhost:2181 log4j:WARN No appenders could be found for logger (org.apache.zookeeper.ZooKeeper). log4j:WARN Please initialize the log4j system properly. Welcome to ZooKeeper! JLine support is enabled [zkshell: 0]
在shell中,输入help获取可以从客户端执行的命令列表,像下面:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 help ZooKeeper -server host:port cmd args connect host:port get path [watch] ls path [watch] set path data [version] rmr path delquota [-n|-b] path quit printwatches on|off create [-s] [-e] path data acl stat path [watch] close ls2 path [watch] history listquota path setAcl path acl getAcl path sync path redo cmdno addauth scheme auth delete path [version] setquota -n|-b val path
从这里,可以尝试几个简单的命令来体验简单的命令行接口。首先,从命令列表开始,像ls:
1 2 [zk: 127.0.0.1:2181(CONNECTED) 1] ls / [zookeeper]
接下来,通过运行create /zk_test my_data
创建一个新的znode。这会创建一个新的znode并与这个节点关联字符串“my_data”:
1 2 [zk: 127.0.0.1:2181(CONNECTED) 2] create /zk_test my_data Created /zk_test
输入ls /
命令查看目录结构:
1 2 [zk: 127.0.0.1:2181(CONNECTED) 3] ls / [zookeeper, zk_test]
现在zk_test目录被创建了。
接下来,通过get命令确认数据已经与znode关联,像:
1 2 3 4 5 6 7 8 9 10 11 12 13 [zk: 127.0.0.1:2181(CONNECTED) 4] get /zk_test my_data cZxid = 0x2 ctime = Tue Mar 28 23:37:16 CST 2017 mZxid = 0x2 mtime = Tue Mar 28 23:37:16 CST 2017 pZxid = 0x2 cversion = 0 dataVersion = 0 aclVersion = 0 ephemeralOwner = 0x0 dataLength = 7 numChildren = 0
可以输入set命令修改与zk_test关联的数据,像:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 [zk: 127.0.0.1:2181(CONNECTED) 5] set /zk_test junk cZxid = 0x2 ctime = Tue Mar 28 23:37:16 CST 2017 mZxid = 0x3 mtime = Tue Mar 28 23:46:12 CST 2017 pZxid = 0x2 cversion = 0 dataVersion = 1 aclVersion = 0 ephemeralOwner = 0x0 dataLength = 4 numChildren = 0 [zk: 127.0.0.1:2181(CONNECTED) 6] get /zk_test junk cZxid = 0x2 ctime = Tue Mar 28 23:37:16 CST 2017 mZxid = 0x3 mtime = Tue Mar 28 23:46:12 CST 2017 pZxid = 0x2 cversion = 0 dataVersion = 1 aclVersion = 0 ephemeralOwner = 0x0 dataLength = 4 numChildren = 0
最后,输入以下命令删除节点:
1 2 3 [zk: 127.0.0.1:2181(CONNECTED) 7] delete /zk_test [zk: 127.0.0.1:2181(CONNECTED) 8] ls / [zookeeper]