ZooKeeper快速上手

原文链接:http://www.dubby.cn/detail.html?id=9024

本篇简介

这篇文章主要面向ZooKeeper的初学者,介绍了简单的安装,配置,和命令,来尝试运行ZooKeeper。也提到了一些稍微负责的安装——互相复制的部署,日志的优化。当然,这也只是入门文档,如果还希望对ZooKeeper有更多的了解,可以继续关注dubby.cn。

注:ZooKeeper常被缩写成zk,下面也会用这种缩写。

系统要求

操作系统要求

zk有多种组件:

  • 客户端是一个使用Java编写的应用,用来连接zk服务端。
  • 服务端是一个使用Java编写的应用,运行在各个节点。
  • 原生客户端是一个使用C实现的应用,类似于客户端,也是用来连接zk服务端。
  • 插件提供了一些可插拔的插件。
操作系统客户端服务端原生客户端插件
GNU/Linux开发&生产开发&生产开发&生产开发&生产
Solaris开发&生产开发&生产不支持不支持
FreeBSD开发&生产开发&生产不支持不支持
Windows开发&生产开发&生产不支持不支持
Mac OS X开发开发不支持不支持

软件要求

zk运行在Java上,需要JDK版本不低于7(FreeBSD 要求openjdk7)。

下载

下载页面:http://zookeeper.apache.org/releases.html

单机模式

把zk以单机模式来安装运行时最直接也是最简单的方式来尝试zk。

把下载文件解压,进入解压文件的根目录,可以看到在conf/目录下有一个zoo.cfg的样板,比如叫zoo_sample.cfg,复制此文件,重新命名为zoo.cfg,然后编辑zoo.cfg

tickTime=2000
dataDir=/var/lib/zookeeper
clientPort=2181

这里只关注这几个配置项,下面简单解释一下:

  • tickTime:zk中基本的时间单元,单位是毫秒,其他的时间参数都要乘以这个时间单元,才是真正的时间。
  • dataDir:zk内存中数据的快照落盘路径,如果不做其他设置,日志也默认在这个路径下,还有之后用到myid文件也是在这里面配置。
  • clientPort:监听客户端连接的端口。

保存配置文件,然后就可以启动了:

bin/zkServer.sh start

zk用的是log4j,可以看到终端有很多日志打印出来。
这一步完成的只是单机模式,这意味着没有复制,没有主备,这个进程一旦挂了,整个服务就不可用了,这在测试环境一般是可以满足我们需要的,但是在生产环境,请使用复制模式。

连接ZooKeeper

$ bin/zkCli.sh -server 127.0.0.1:2181

差不多可以看到这样的输入:

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]

输入help可以看到所有支持的命令:

[zkshell: 0] help
ZooKeeper host:port cmd args
        get path [watch]
        ls path [watch]
        set path data [version]
        delquota [-n|-b] path
        quit
        printwatches on|off
        create path data acl
        stat path [watch]
        listquota path
        history
        setAcl path acl
        getAcl path
        sync path
        redo cmdno
        addauth scheme auth
        delete path [version]
        deleteall path
        setquota -n|-b val path

我们先使用ls命令来查看所有节点(znode):

[zkshell: 8] ls /
[zookeeper]

然后创建一个新的节点,输入:

[zkshell: 9] create /zk_test my_data
Created /zk_test

再来列出所有节点:

[zkshell: 11] ls /
[zookeeper, zk_test]

可以看到有一个新的路径叫zk_test,这是刚刚被创建的,趁热打铁,我们使用get命令来看看这个节点的信息:

[zkshell: 12] get /zk_test
my_data
cZxid = 5
ctime = Fri Jun 05 13:57:06 PDT 2009
mZxid = 5
mtime = Fri Jun 05 13:57:06 PDT 2009
pZxid = 5
cversion = 0
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0
dataLength = 7
numChildren = 0

我们可以使用set命令来更新这个节点的值:

[zkshell: 14] set /zk_test junk
cZxid = 5
ctime = Fri Jun 05 13:57:06 PDT 2009
mZxid = 6
mtime = Fri Jun 05 14:01:52 PDT 2009
pZxid = 5
cversion = 0
dataVersion = 1
aclVersion = 0
ephemeralOwner = 0
dataLength = 4
numChildren = 0
[zkshell: 15] get /zk_test
junk
cZxid = 5
ctime = Fri Jun 05 13:57:06 PDT 2009
mZxid = 6
mtime = Fri Jun 05 14:01:52 PDT 2009
pZxid = 5
cversion = 0
dataVersion = 1
aclVersion = 0
ephemeralOwner = 0
dataLength = 4
numChildren = 0

你可以再执行一次get /zk_test命令来看看值有没有改变

再删除这个节点:

[zkshell: 16] delete /zk_test
[zkshell: 17] ls /
[zookeeper]
[zkshell: 18]

到目前为止,我们已经掌握了最基本的命令。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值