zookeeper安装与常用指令详解

ZooKeeper安装

  1. 首先保证已安装Java运行环境
  2. 下载ZooKeeper安装包,可以去ZooKpper官网下载最新的Stable版本,并解压到指定目录
  3. 配置zoo.cfg 解压成功后,在conf文件夹下复制一份新的zoo_sample.cfg并重新命名为zoo.cfg

具体操作流程如下

# cd /opt   //安装到opt目录下
# wget http://mirror.bit.edu.cn/apache/zookeeper/zookeeper-3.4.8/zookeeper-3.4.8.tar.gz //使用wget指令下载zk
# tar -xzvf zookeeper-3.4.8.tar.gz  //解压
# mv zookeeper-3.4.8 zookeeper //重命名安装包
# cd zookeeper/ // 进入安装包
# cd conf/   //进入conf目录下
# mv zoo_sample.cfg zoo.cfg //拷贝一份新的zoo-sample.cfg并命名为zoo.cfg

这样,整个Zookeeper的安装就完成了,下面看一下相关指令,学些如何启动,停止ZooKeeper的相关指令

zoo.cfg配置信息详解

# The number of milliseconds of each tick
tickTime=2000 ##ZooKeeper的最小时间单元,单位毫秒(ms),默认值为3000
# The number of ticks that the initial 
# synchronization phase can take
initLimit=10 ##Leader服务器等待Follower启动并完成数据同步的时间,默认值10,表示tickTime的10# The number of ticks that can pass between 
# sending a request and getting an acknowledgement
syncLimit=5 ##Leader服务器和Follower之间进行心跳检测的最大延时时间,默认值5,表示tickTime的5# the directory where the snapshot is stored.
# do not use /tmp for storage, /tmp here is just 
# example sakes.
dataDir=/tmp/zookeeper ##ZooKeeper服务器存储快照文件的目录,必须配值,建议放置在var目录下
# the port at which the clients will connect
clientPort=2181 ## 服务器对外服务端口,默认值为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

ZooKeeper服务端指令

启动ZK服务

进入bin目录下,执行sh zkServer.sh start
如下如所示:

[root@localhost bin]# sh zkServer.sh start
ZooKeeper JMX enabled by default
Using config: /opt/zookeeper/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED

停止ZK服务

[root@localhost bin]# sh zkServer.sh stop
ZooKeeper JMX enabled by default
Using config: /opt/zookeeper/bin/../conf/zoo.cfg
Stopping zookeeper ... STOPPED

查看ZK服务状态

[root@localhost bin]# sh zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /opt/zookeeper/bin/../conf/zoo.cfg
Mode: standalone

常用四字命令

命令 功能描述
conf 输出相关服务配置的详细信息
cons 列出所有连接到服务器的客户端的完全的连接/会话的详细信息.包括“接受/发送”的包数量,会话,id,操作延迟,最后的操作执行等等信息
dump 列出未经处理的会话和临时节点.
envi 输出关于服务环境的详细信息
reqs 列出未经处理的请求
ruok 测试服务是否处于正确状态.如果确实如此,那么服务返回”imok”,否则不做任何响应
stat 输出关于性能和连接的客户端的列表
wchs 列出服务器watch的详细信息
wchc 通过session列出服务器watch的详细信息,它的输出是一个与watch相关的会话的列表
wchp 通过路径列出服务器watch的详细信息.它输出一个与session相关的路径

下面给出几个例子:

ruok

测试服务是否处于正确状态.如果确实如此,那么服务返回” imok”,否则不做任何相应.

[root@localhost bin]# echo ruok|nc 127.0.0.1 2181
imok

回复imok表示已经启动

conf

输出相关服务配置的详细信息

[root@localhost bin]# echo conf|nc 127.0.0.1 2181
clientPort=2181
dataDir=/tmp/zookeeper/version-2
dataLogDir=/tmp/zookeeper/version-2
tickTime=2000
maxClientCnxns=60
minSessionTimeout=4000
maxSessionTimeout=40000
serverId=0

ZooKeeper客户端命令

连接到服务端

指令格式: sh zkCli.sh -server host:port
ZooKeeper客户端命令行zkCli.sh(zkCli.cmd)类似于shell,.当ZooKeeper服务成功之后,输入下面的命令,连接到ZooKeeper服务:

[root@localhost bin]# sh zkCli.sh -server 127.0.0.1:2181
Connecting to 127.0.0.1:2181
2016-08-08 21:20:23,954 [myid:] - INFO  [main:Environment@100] - Client environment:zookeeper.version=3.4.8--1, built on 02/06/2016 03:18 GMT
2016-08-08 21:20:23,957 [myid:] - INFO  [main:Environment@100] - Client environment:host.name=localhost
2016-08-08 21:20:23,957 [myid:] - INFO  [main:Environment@100] - Client environment:java.version=1.8.0_65
2016-08-08 21:20:23,960 [myid:] - INFO  [main:Environment@100] - Client environment:java.vendor=Oracle Corporation
2016-08-08 21:20:23,960 [myid:] - INFO  [main:Environment@100] - Client environment:java.home=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.65-3.b17.el7.x86_64/jre
2016-08-08 21:20:23,960 [myid:] - INFO  [main:Environment@100] - Client environment:java.class.path=/opt/zookeeper/bin/../build/classes:/opt/zookeeper/bin/../build/lib/*.jar:/opt/zookeeper/bin/../lib/slf4j-log4j12-1.6.1.jar:/opt/zookeeper/bin/../lib/slf4j-api-1.6.1.jar:/opt/zookeeper/bin/../lib/netty-3.7.0.Final.jar:/opt/zookeeper/bin/../lib/log4j-1.2.16.jar:/opt/zookeeper/bin/../lib/jline-0.9.94.jar:/opt/zookeeper/bin/../zookeeper-3.4.8.jar:/opt/zookeeper/bin/../src/java/lib/*.jar:/opt/zookeeper/bin/../conf:
2016-08-08 21:20:23,960 [myid:] - INFO  [main:Environment@100] - Client environment:java.library.path=/usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib
2016-08-08 21:20:23,960 [myid:] - INFO  [main:Environment@100] - Client environment:java.io.tmpdir=/tmp
2016-08-08 21:20:23,960 [myid:] - INFO  [main:Environment@100] - Client environment:java.compiler=
2016-08-08 21:20:23,961 [myid:] - INFO  [main:Environment@100] - Client environment:os.name=Linux
2016-08-08 21:20:23,961 [myid:] - INFO  [main:Environment@100] - Client environment:os.arch=amd64
2016-08-08 21:20:23,961 [myid:] - INFO  [main:Environment@100] - Client environment:os.version=3.10.0-327.el7.x86_64
2016-08-08 21:20:23,961 [myid:] - INFO  [main:Environment@100] - Client environment:user.name=root
2016-08-08 21:20:23,961 [myid:] - INFO  [main:Environment@100] - Client environment:user.home=/root
2016-08-08 21:20:23,961 [myid:] - INFO  [main:Environment@100] - Client environment:user.dir=/opt/zookeeper/bin
2016-08-08 21:20:23,963 [myid:] - INFO  [main:ZooKeeper@438] - Initiating client connection, connectString=127.0.0.1:2181 sessionTimeout=30000 watcher=org.apache.zookeeper.ZooKeeperMain$MyWatcher@7aec35a
2016-08-08 21:20:24,024 [myid:] - INFO  [main-SendThread(127.0.0.1:2181):ClientCnxn$SendThread@1032] - Opening socket connection to server 127.0.0.1/127.0.0.1:2181. Will not attempt to authenticate using SASL (unknown error)
Welcome to ZooKeeper!
JLine support is enabled
2016-08-08 21:20:24,268 [myid:] - INFO  [main-SendThread(127.0.0.1:2181):ClientCnxn$SendThread@876] - Socket connection established to 127.0.0.1/127.0.0.1:2181, initiating session
2016-08-08 21:20:24,357 [myid:] - INFO  [main-SendThread(127.0.0.1:2181):ClientCnxn$SendThread@1299] - Session establishment complete on server 127.0.0.1/127.0.0.1:2181, sessionid = 0x1565613f3390000, negotiated timeout = 30000

WATCHER::

WatchedEvent state:SyncConnected type:None path:null

查看帮助信息

在连接到服务端后,输入help可以查看具体的帮助信息

[zk: localhost:2181(CONNECTED) 0] help
ZooKeeper -server host:port cmd args
    stat path [watch]
    set path data [version]
    ls path [watch]
    delquota [-n|-b] path
    ls2 path [watch]
    setAcl path acl
    setquota -n|-b val path
    history 
    redo cmdno
    printwatches on|off
    delete path [version]
    sync path
    listquota path
    rmr path
    get path [watch]
    create [-s] [-e] path data acl
    addauth scheme auth
    quit 
    getAcl path
    close 
    connect host:port

创建节点

使用create指令创建一个znode以及与他关联的字符串

[zk: localhost:2181(CONNECTED) 2] create /node1 value1
Created /node1
[zk: localhost:2181(CONNECTED) 3] create /node2 value2
Created /node2

查看节点列表

使用ls指令查看当前ZK中所包含的内容

[zk: localhost:2181(CONNECTED) 4] ls /
[node2, zookeeper, node1]

查看节点信息

使用get指令来确认znode是否包含我们所创建的字符串

[zk: localhost:2181(CONNECTED) 4] get /node1
value1
cZxid = 0x6
ctime = Mon Aug 08 21:32:35 CST 2016
mZxid = 0x6
mtime = Mon Aug 08 21:32:35 CST 2016
pZxid = 0x6
cversion = 0
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 6
numChildren = 0
[zk: localhost:2181(CONNECTED) 5] get node3
Command failed: java.lang.IllegalArgumentException: Path must start with / characte

为节点设置新值

使用set指令对znode所关联的字符串进行设置

node2   node1
[zk: localhost:2181(CONNECTED) 6] set /node2 value3
cZxid = 0x7
ctime = Mon Aug 08 21:33:11 CST 2016
mZxid = 0x8
mtime = Mon Aug 08 21:36:38 CST 2016
pZxid = 0x7
cversion = 0
dataVersion = 1
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 6
numChildren = 0
[zk: localhost:2181(CONNECTED) 7] get /node2
value3
cZxid = 0x7
ctime = Mon Aug 08 21:33:11 CST 2016
mZxid = 0x8
mtime = Mon Aug 08 21:36:38 CST 2016
pZxid = 0x7
cversion = 0
dataVersion = 1
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 6
numChildren = 0

删除节点

使用delete指令删除znode

[zk: localhost:2181(CONNECTED) 5] delete /node2      
[zk: localhost:2181(CONNECTED) 7] ls /
[zookeeper, node1]

其他指令在具体使用实例时再做介绍

参考:http://blog.csdn.net/shenlan211314/article/details/6187029
http://blog.csdn.net/xiaolang85/article/details/13021339
http://blog.csdn.net/ganglia/article/details/11606807

你可能感兴趣的:(zookeeper)