【Hadoop】ZooKeeper数据模型Znode

2023-12-26 07:52

本文主要是介绍【Hadoop】ZooKeeper数据模型Znode,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

  • ZooKeeper 数据模型Znode
  • ZooKeeper 中的时间
  • ZooKeeper 节点属性

ZooKeeper 数据模型Znode

前面提过,Zookeeper相当于文件系统+通知机制。既然是文件系统,那就涉及数据模型。

在这里插入图片描述

ZooKeeper 的数据模型在结构上和Unix标准文件系统非常相似,都是采用树形层次结构,ZooKeeper 树中的每个节点被称为 Znode

在这里插入图片描述

和文件系统的目录树一样,ZooKeeper 树中的每个节点可以拥有子节点。但和标准文件系统也有不同之处,体现在:

  • 引用方式:Znode 通过路径引用,如同 Linux 中的文件路径,但路径必须由斜杠字符来开头

  • Znode 结构:每个 Znode 由 3 部分组成:

    • stat:描述该 Znode 的版本, 权限等信息
    • data:与该 Znode 关联的数据
    • children:该 Znode 下的子节点
  • Znode 大小:ZooKeeper 虽然可以关联一些数据,但并没有被设计为常规的数据库或者大数据存储,相反,它被用来管理调度数据,比如分布式应用中的配置文件信息、状态信息、汇集位置等等。这些数据的共同特性就是它们都很小,通常以 KB 为单位。ZooKeeper 的服务器和客户端都被设计为严格检查并限制每个 Znode 的数据大小至多 1M, 但实际使用中要远小于此值

  • 数据访问:ZooKeeper 中的每个节点存储的数据要被原子性的操作,也就是说读操作将获取与节点相关的所有数据,写操作将替换掉节点的所有数据。另外,每一个节点都拥有自己的 ACL(访问控制列表),这个列表规定了用户的权限,即限定了特定用户对目标节点可以执行的操作

  • 节点类型:ZooKeeper 中的节点有两种,分别为临时节点和永久节点。节点的类型在创建时即被确定,并且不能改变。

    • 临时节点:该节点的生命周期依赖于创建它们的会话。一旦会话结束,临时节点将被自动删除,或者也可以手动删除
    • 永久节点:该节点的生命周期不依赖于会话,并且只有在客户端显式地执行了删除操作的时候,这些节点才能被删除
  • 监视器:客户端可以在节点上设置 watch, 称为监视器。当节点状态发生改变时(Znode 的增、删、改)将会触发 watch 所对应的操作。当 watch 被触发时,ZooKeeper 将会向客户端发送且仅发送一条通知,因为 watch 只能被触发一次,这样可以减少网络流量。这就对应前面说的,当有用户关注的主播上线的时候,就会给用户发送通知消息,这个动作就是由监视器来完成的


ZooKeeper 中的时间

  • Zxid:Zxid 是一个 64 位的数字,它的高 32 位是 epoch 用来标识 leader 关系是否改变,每次一个Leader 被选出来,它都会有一个新的 epoch, 低 32 位是个递增计数。

    使得 ZooKeeper 节点状态改变的每一个操作都将使节点接收到一个 Zxid 格式的时间戳,并且这个时间戳全局有序。也就是说,每个对节点的改变都将产生一个唯一的 Zxid, 如果 Zxid1的值小于 Zxid2 的值,那么 Zxid1 所对应的事件发生在 Zxid2 所对应的事件之前。

    实际上,ZooKeeper 的每个节点维护者三个 Zxid 值,为别为:cZxid、mZxid、pZxid。

    cZxid 是节点的创建时间所对应的 Zxid 格式时间戳。

    mZxid 是节点的修改时间所对应的 Zxid 格式时间戳

  • 版本号

    对节点的每一个操作都将致使这个节点的版本号增加。每个节点维护着三个版本号,它们分别为:

    version:节点数据版本号

    cversion:子节点版本

    aversion:节点所拥有的 ACL 版本号


ZooKeeper 节点属性

一个 ZooKeeper 节点自身拥有表示其状态的许多重要属性,如下图所示。

在这里插入图片描述

这篇关于【Hadoop】ZooKeeper数据模型Znode的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/538613

相关文章

Zookeeper安装和配置说明

一、Zookeeper的搭建方式 Zookeeper安装方式有三种,单机模式和集群模式以及伪集群模式。 ■ 单机模式:Zookeeper只运行在一台服务器上,适合测试环境; ■ 伪集群模式:就是在一台物理机上运行多个Zookeeper 实例; ■ 集群模式:Zookeeper运行于一个集群上,适合生产环境,这个计算机集群被称为一个“集合体”(ensemble) Zookeeper通过复制来实现

Hadoop企业开发案例调优场景

需求 (1)需求:从1G数据中,统计每个单词出现次数。服务器3台,每台配置4G内存,4核CPU,4线程。 (2)需求分析: 1G / 128m = 8个MapTask;1个ReduceTask;1个mrAppMaster 平均每个节点运行10个 / 3台 ≈ 3个任务(4    3    3) HDFS参数调优 (1)修改:hadoop-env.sh export HDFS_NAMENOD

Hadoop集群数据均衡之磁盘间数据均衡

生产环境,由于硬盘空间不足,往往需要增加一块硬盘。刚加载的硬盘没有数据时,可以执行磁盘数据均衡命令。(Hadoop3.x新特性) plan后面带的节点的名字必须是已经存在的,并且是需要均衡的节点。 如果节点不存在,会报如下错误: 如果节点只有一个硬盘的话,不会创建均衡计划: (1)生成均衡计划 hdfs diskbalancer -plan hadoop102 (2)执行均衡计划 hd

hadoop开启回收站配置

开启回收站功能,可以将删除的文件在不超时的情况下,恢复原数据,起到防止误删除、备份等作用。 开启回收站功能参数说明 (1)默认值fs.trash.interval = 0,0表示禁用回收站;其他值表示设置文件的存活时间。 (2)默认值fs.trash.checkpoint.interval = 0,检查回收站的间隔时间。如果该值为0,则该值设置和fs.trash.interval的参数值相等。

Hadoop数据压缩使用介绍

一、压缩原则 (1)运算密集型的Job,少用压缩 (2)IO密集型的Job,多用压缩 二、压缩算法比较 三、压缩位置选择 四、压缩参数配置 1)为了支持多种压缩/解压缩算法,Hadoop引入了编码/解码器 2)要在Hadoop中启用压缩,可以配置如下参数

搭建Kafka+zookeeper集群调度

前言 硬件环境 172.18.0.5        kafkazk1        Kafka+zookeeper                Kafka Broker集群 172.18.0.6        kafkazk2        Kafka+zookeeper                Kafka Broker集群 172.18.0.7        kafkazk3

ZooKeeper 中的 Curator 框架解析

Apache ZooKeeper 是一个为分布式应用提供一致性服务的软件。它提供了诸如配置管理、分布式同步、组服务等功能。在使用 ZooKeeper 时,Curator 是一个非常流行的客户端库,它简化了 ZooKeeper 的使用,提供了高级的抽象和丰富的工具。本文将详细介绍 Curator 框架,包括它的设计哲学、核心组件以及如何使用 Curator 来简化 ZooKeeper 的操作。 1

zookeeper相关面试题

zk的数据同步原理?zk的集群会出现脑裂的问题吗?zk的watch机制实现原理?zk是如何保证一致性的?zk的快速选举leader原理?zk的典型应用场景zk中一个客户端修改了数据之后,其他客户端能够马上获取到最新的数据吗?zk对事物的支持? 1. zk的数据同步原理? zk的数据同步过程中,通过以下三个参数来选择对应的数据同步方式 peerLastZxid:Learner服务器(Follo

设置zookeeper开机自启动/服务化

设置启动zk的用户为zookeeper 设置启动zk的用户为zookeeper用户,而非root用户,这样比较安全。 可以使用root用户进行zookeeper的管理(启动、停止…),但对于追求卓越和安全的的人来说,采用新非root用户管理zookeeper更好。 步骤: 1. 创建用户和用户组 2. 相关目录设置用户和用户组属性 3. 采用zookeeper用户启动进程 设置z

Zookeeper集群是如何升级到新版本的

方案1:复用老数据方案 这是经过实践的升级方案,该方案是复用旧版本的数据,zk集群拓扑,配置文件都不变,只是启动的程序为最新的版本。 参考文章: Zookeeper集群是如何升级到新版本的 方案2:重新建立数据方案 该方案的思路是:先停掉一台follower的机器上的服务,然后加入一个新版本的zk(zk的数据目录是空的),然后启动新zk,之后新zk会把旧集群中的数据同步过来。之后再操作另