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
配置环境变量

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

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

dataDir=/home/hadoop/tmp/zookeeper

4.ZK使用命令

服务端:

启动ZK
[hadoop@hadoop001 conf]$ zkServer.sh start
JMX enabled by default
Using config: /home/hadoop/app/zookeeper/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
查看ZK的状态,可以看出是standalone
[hadoop@hadoop001 conf]$ zkServer.sh status
JMX enabled by default
Using config: /home/hadoop/app/zookeeper/bin/../conf/zoo.cfg
Mode: standalone
通过jps查看ZK进程号
[hadoop@hadoop001 conf]$ jps
4512 SecondaryNameNode
4770 NodeManager
4323 DataNode
27431 QuorumPeerMain    //ZK进程
27450 Jps
4221 NameNode
4670 ResourceManager

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

[hadoop@hadoop001 conf]$ zkCli.sh
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

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

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

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

[zk: localhost:2181(CONNECTED) 2] get /

cZxid = 0x0
ctime = Thu Jan 01 08:00:00 CST 1970
mZxid = 0x0
mtime = Thu Jan 01 08:00:00 CST 1970
pZxid = 0x132
cversion = 15
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 0
numChildren = 3

czxid 创建该节点的事物ID

ctime 创建该节点的时间

mZxid 更新该节点的事物ID

mtime 更新该节点的时间

pZxid 操作当前节点的子节点列表的事物ID(这种操作包含增加子节点,删除子节点)

cversion 当前节点的子节点版本号

dataVersion 当前节点的数据版本号

aclVersion 当前节点的acl权限版本号

ephemeralowner 当前节点的如果是临时节点,该属性是临时节点的事物ID

dataLength 当前节点的d的数据长度

numchildren 当前节点的子节点个数

ls2命令等于ls+get结合

[zk: localhost:2181(CONNECTED) 3] ls2 /
[ruoze, zookeeper, ruozedata]
cZxid = 0x0
ctime = Thu Jan 01 08:00:00 CST 1970
mZxid = 0x0
mtime = Thu Jan 01 08:00:00 CST 1970
pZxid = 0x132
cversion = 15
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 0
numChildren = 3

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

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

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

-s 表示是顺序节点

-e 标识是临时节点

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

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

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

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

[zk: localhost:2181(CONNECTED) 6] get /ruozeda0000000011
ruozeda
cZxid = 0x16d
ctime = Mon Sep 09 14:16:36 CST 2019
mZxid = 0x16d
mtime = Mon Sep 09 14:16:36 CST 2019
pZxid = 0x175
cversion = 1
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 7
numChildren = 1  //表示有子节点
[zk: localhost:2181(CONNECTED) 7] rmr /ruozeda0000000011
[zk: localhost:2181(CONNECTED) 8] ls /
[ruoze, zookeeper]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值