IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> Zookeeper数据模型和Linux操作 -> 正文阅读

[大数据]Zookeeper数据模型和Linux操作

1. zookeeper 的数据模型
ZooKeeper 的数据模型,在结构上和标准文件系统的非常相似,拥有一个层
次的命名空间,都是采用 树形层次结构 .

?

ZooKeeper 树中的每个节点被称为 Znode 。和文件系统的目录树一样, ZooKeeper
中的每个节点可以拥有子节点。
但也有不同之处:
1. Znode 兼具文件和目录两种特点 。既像文件一样维护着数据、元信息、 ACL 、 时间戳等
数据结构,又像目录一样可以作为路径标识的一部分,并可以具有 子 Znode 。用户对
Znode 具有增、删、改、查等操作(权限允许的情况下)。
2. Znode 储数据大小有限制 ZooKeeper 虽然可以关联一些数据,但并没有 被设计为常
规的数据库或者大数据存储,相反的是,它用来管理调度数据, 比如分布式应用中的配
置文件信息、状态信息、汇集位置等等。这些数据的 共同特性就是它们都是很小的数
据,通常以 KB 为大小单位。 ZooKeeper 的服 务器和客户端都被设计为严格检查并限制每
Znode 的数据大小至多 1M ,常规使用中应该远小于此值。
3. Znode 通过路径引用 ,如同 Unix 中的文件路径。 路径必须是绝对的 ,因此他 们必须由
斜杠字符来开头。除此以外,他们必须是唯一的,也就是说每一个 路径只有一个表示,
因此这些路径不能改变。在 ZooKeeper 中,路径由 Unicode 字符串组成,并且有一些限
制。字符串 "/zookeeper" 用以保存管理 信息,比如关键配额信息。
4. 每个 Znode 3 部分组成 :
stat 此为状态信息 , 描述该 Znode 的版本 , 权限等信息
data 与该 Znode 关联的数据
children :该 Znode 下的子节点
2. Znode 节点类型
1 Znode 有两种,分别为 临时节点 永久节点 。节点的类型在创建时即被确定,并且不能改
变。
临时节点 :该节点的生命周期依赖于创建它们的会话。一旦会话结束,临时 节点将被自
动删除,当然可以也可以手动删除。临时节点不允许拥有子节点。
永久节点 :该节点的生命周期不依赖于会话,并且只有在客户端显示执行删除操作的时
候,他们才能被删除。
2.2 Znode 还有一个序列化的特性,如果创建的时候指定的话,该 Znode 的名字后面会自动追
加一个不断增加的序列号。序列号对于此节点的父节点来说是唯一的,这样便会记录每个子
节点创建的先后顺序。它的格式为 “%10d”(10 位数字,没有数值的数位用 0 补充,例
“0000000001”)
2.3 这样便会存在四种类型的 Znode 节点,分别对应:
PERSISTENT :永久节点
EPHEMERAL :临时节点
PERSISTENT_SEQUENTIAL :永久节点、序列化
EPHEMERAL_SEQUENTIAL :临时节点、序列化
3.Zookeeper Shell 客户端操作
3.1 登录 Zookeeper 客户端
bin/zkCli.sh -server node01:2181
3.2 Zookeeper 客户端操作命令

?

?3.3 操作实例

列出Path下的所有Znode
ls /
创建永久节点
create /hello world
创建临时节点:
create -e /abc 123

创建永久序列化节点:
create -s /zhangsan boy
创建临时序列化节点:
create -e -s /lisi boy
修改节点数据
set /hello zookeeper
删除节点, 如果要删除的节点有子Znode则无法删除
delete /hello
删除节点, 如果有子Znode则递归删除
rmr /abc
列出历史记录
histroy
3.4 节点属性
每个 znode 都包含了一系列的属性,通过命令 get ,可以获得节点的属性。

?

dataVersion :数据版本号,每次对节点进行 set 操作, dataVersion 的值都会增加 1 (即使设
置的是相同的数据),可有效避免了数据更新时出现的先后顺序问题。
cversion :子节点的版本号。当 znode 的子节点有变化时, cversion 的值就会增加 1
aclVersion ACL 的版本号。
cZxid Znode 创建的事务 id
mZxid Znode 被修改的事务 id ,即每次对 znode 的修改都会更新 mZxid
对于 zk 来说,每次的变化都会产生一个唯一的事务 id zxid ZooKeeper Transaction
Id )。通过 zxid ,可以确定更新操作的先后顺序。例如,如果 zxid1
小于 zxid2 ,说明 zxid1 操作先于 zxid2 发生, zxid 对于整个 zk 都是唯一的,
ctime :节点创建时的时间戳 .
mtime :节点最新一次更新发生时的时间戳 .
ephemeralOwner : 如果该节点为临时节点 , ephemeralOwner 值表示与该节点绑定的 session id.
如果不 是 ,ephemeralOwner 值为 0.
3.5 Zookeeper watch 机制
通知类似于数据库中的触发器 , 对某个 Znode 设置
Watcher , Znode 发生变化的时候 ,
WatchManager 会调用对应的 Watcher
Znode 发生删除 , 修改 , 创建 , 子节点修改的时候 , 对应的 Watcher 会得到通知
Watcher 的特点
一次性触发 一个 Watcher 只会被触发一次 , 如果需要继续监听 , 则需要再次添加
Watcher
事件封装 : Watcher 得到的事件是被封装过的 , 包括三个内容 keeperState,
eventType, path

?

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2021-08-07 12:09:17  更:2021-08-07 12:12:02 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/17 17:38:44-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码