zookeeper简介

1.介绍

zookeeper是一个分布式服务框架,用于维护配置信息、命名、提供分布式同步和提供组服务。它主要是用来解决分布式应用中经常遇到的一些数据管理问题,如:统一命名服务、状态同步服务、集群管理、分布式应用配置项的管理等。

2.特性

ZK的数据模型:树形结构
ZK每个节点znode,有一个唯一的路径标识
znode类型:PERSISTENT-持久化目录节点、PERSISTENT_SEQUENTIAL-持久化顺序编号目录节点、EPHEMERAL-临时目录节点、EPHEMERAL_SEQUENTIAL-临时顺序编号目录节点。
注意点:临时znode下面不能有子节点,临时znode会随着客户端的关闭而清除。
每个znode节点有各自的版本号,每个节点数据发生了变化,该节点的版本会增加。
ZK节点存储的数据量不宜过大,几K左右
znode可以设置访问权限
znode可以设置watcher:当节点数据发生变化时,可以通过监视器获取

在这里插入图片描述

3.ZK单机部署

下载并解压到服务器上:http://archive.cloudera.com/cdh5/cdh/5/zookeeper-3.4.5-cdh5.15.1.tar.gz
配置环境变量

1export ZOOKEEPER_HOME=/home/hadoop/app/zookeeper
2export PATH=${ZOOKEEPER_HOME}/bin:$PATH

修改ZK的配置文件,复制zoo_sample.cfg为zoo.cfg。单机的话一般只需要配置dataDir就可以了

1dataDir=/home/hadoop/tmp/zookeeper

4.ZK使用命令

服务端:

 1启动ZK
 2[hadoop@hadoop001 conf]$ zkServer.sh start
 3JMX enabled by default
 4Using config: /home/hadoop/app/zookeeper/bin/../conf/zoo.cfg
 5Starting zookeeper ... STARTED
 6查看ZK的状态,可以看出是standalone
 7[hadoop@hadoop001 conf]$ zkServer.sh status
 8JMX enabled by default
 9Using config: /home/hadoop/app/zookeeper/bin/../conf/zoo.cfg
10Mode: standalone
11通过jps查看ZK进程号
12[hadoop@hadoop001 conf]$ jps
134512 SecondaryNameNode
144770 NodeManager
154323 DataNode
1627431 QuorumPeerMain    //ZK进程
1727450 Jps
184221 NameNode
194670 ResourceManager

客户端:
使用zkCli.sh可以进入ZK的客户端,连接到ZK服务器

 1[hadoop@hadoop001 conf]$ zkCli.sh
 2help可以查看使用哪些命令
 3[zk: localhost:2181(CONNECTED) 0] help
 4ZooKeeper -server host:port cmd args
 5    stat path [watch]
 6    set path data [version]
 7    ls path [watch]
 8    delquota [-n|-b] path
 9    ls2 path [watch]
10    setAcl path acl
11    setquota -n|-b val path
12    history 
13    redo cmdno
14    printwatches on|off
15    delete path [version]
16    sync path
17    listquota path
18    rmr path
19    get path [watch]
20    create [-s] [-e] path data acl
21    addauth scheme auth
22    quit 
23    getAcl path
24    close 
25    connect host:port

ls path [watch] :列出根节点下所有的子节点信息

1[zk: localhost:2181(CONNECTED) 1] ls /
2[ruoze, zookeeper, ruozedata]

get path [watch] :获取当前节点的数据内容,相同命令为stat path [watch]

 1[zk: localhost:2181(CONNECTED) 2] get /
 2
 3cZxid = 0x0
 4ctime = Thu Jan 01 08:00:00 CST 1970
 5mZxid = 0x0
 6mtime = Thu Jan 01 08:00:00 CST 1970
 7pZxid = 0x132
 8cversion = 15
 9dataVersion = 0
10aclVersion = 0
11ephemeralOwner = 0x0
12dataLength = 0
13numChildren = 3
14
15czxid 创建该节点的事物ID
16
17ctime 创建该节点的时间
18
19mZxid 更新该节点的事物ID
20
21mtime 更新该节点的时间
22
23pZxid 操作当前节点的子节点列表的事物ID(这种操作包含增加子节点,删除子节点)
24
25cversion 当前节点的子节点版本号
26
27dataVersion 当前节点的数据版本号
28
29aclVersion 当前节点的acl权限版本号
30
31ephemeralowner 当前节点的如果是临时节点,该属性是临时节点的事物ID
32
33dataLength 当前节点的d的数据长度
34
35numchildren 当前节点的子节点个数

ls2命令等于ls+get结合

 1[zk: localhost:2181(CONNECTED) 3] ls2 /
 2[ruoze, zookeeper, ruozedata]
 3cZxid = 0x0
 4ctime = Thu Jan 01 08:00:00 CST 1970
 5mZxid = 0x0
 6mtime = Thu Jan 01 08:00:00 CST 1970
 7pZxid = 0x132
 8cversion = 15
 9dataVersion = 0
10aclVersion = 0
11ephemeralOwner = 0x0
12dataLength = 0
13numChildren = 3

set path data [version] 修改当前节点的数据内容 如果指定版本,需要和当前节点的数据版本一致

 1[zk: localhost:2181(CONNECTED) 6] set /ruoze 123
 2cZxid = 0x2
 3ctime = Mon Sep 02 14:04:23 CST 2019
 4mZxid = 0x162
 5mtime = Mon Sep 09 14:12:50 CST 2019
 6pZxid = 0x157
 7cversion = 17
 8dataVersion = 6
 9aclVersion = 0
10ephemeralOwner = 0x0
11dataLength = 3
12numChildren = 1

create [-s] [-e] path data acl

-s 表示是顺序节点

-e 标识是临时节点

1[zk: localhost:2181(CONNECTED) 1] create -e /ruozedata ruozedata
2Created /ruozedata
3[zk: localhost:2181(CONNECTED) 2] ls /
4[ruoze, zookeeper, ruozedata]
5[zk: localhost:2181(CONNECTED) 7] create -s /ruozeda ruozeda
6Created /ruozeda0000000011
7[zk: localhost:2181(CONNECTED) 10] ls /
8[ruoze, zookeeper, ruozedata, ruozeda0000000011]

delete path [version] 删除指定路径的节点 如果有子节点要先删除子节点

1[zk: localhost:2181(CONNECTED) 11] delete /ruozedata
2[zk: localhost:2181(CONNECTED) 12] ls /
3[ruoze, zookeeper]

rmr path 删除当前路径节点及其所有子节点

 1[zk: localhost:2181(CONNECTED) 6] get /ruozeda0000000011
 2ruozeda
 3cZxid = 0x16d
 4ctime = Mon Sep 09 14:16:36 CST 2019
 5mZxid = 0x16d
 6mtime = Mon Sep 09 14:16:36 CST 2019
 7pZxid = 0x175
 8cversion = 1
 9dataVersion = 0
10aclVersion = 0
11ephemeralOwner = 0x0
12dataLength = 7
13numChildren = 1  //表示有子节点
14[zk: localhost:2181(CONNECTED) 7] rmr /ruozeda0000000011
15[zk: localhost:2181(CONNECTED) 8] ls /
16[ruoze, zookeeper]
识别 下方二 维码 ,即可关注公众号获取最新大厂技术

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值