ZooKeeper 节点类型

2023-10-30

ZooKeeper 节点是有生命周期的,这取决于节点的类型。在 ZooKeeper 中,节点类型可以分为持久节点(PERSISTENT )、临时节点(EPHEMERAL),以及时序节点(SEQUENTIAL ),具体在节点创建过程中,一般是组合使用,可以生成以下 4 种节点类型。


持久节点(PERSISTENT)



所谓持久节点,是指在节点创建后,就一直存在,直到有删除操作来主动清除这个节点——不会因为创建该节点的客户端会话失效而消失。


 


持久顺序节点(PERSISTENT_SEQUENTIAL)


这类节点的基本特性和上面的节点类型是一致的。额外的特性是,在ZK中,每个父节点会为他的第一级子节点维护一份时序,会记录每个子节点创建的先后顺序。基于这个特性,在创建子节点的时候,可以设置这个属性,那么在创建节点过程中,ZK会自动为给定节点名加上一个数字后缀,作为新的节点名。这个数字后缀的范围是整型的最大值。


 


临时节点(EPHEMERAL)


和持久节点不同的是,临时节点的生命周期和客户端会话绑定。也就是说,如果客户端会话失效,那么这个节点就会自动被清除掉。注意,这里提到的是会话失效,而非连接断开。另外,在临时节点下面不能创建子节点。


 


临时顺序节点(EPHEMERAL_SEQUENTIAL)



 可以用来实现分布式锁



客户端调用create()方法创建名为“_locknode_/guid-lock-”的节点,需要注意的是,这里节点的创建类型需要设置为EPHEMERAL_SEQUENTIAL。
客户端调用getChildren(“_locknode_”)方法来获取所有已经创建的子节点,注意,这里不注册任何Watcher。
客户端获取到所有子节点path之后,如果发现自己在步骤1中创建的节点序号最小,那么就认为这个客户端获得了锁。
如果在步骤3中发现自己并非所有子节点中最小的,说明自己还没有获取到锁。此时客户端需要找到比自己小的那个节点,然后对其调用exist()方法,同时注册事件监听。
之后当这个被关注的节点被移除了,客户端会收到相应的通知。这个时候客户端需要再次调用getChildren(“_locknode_”)方法来获取所有已经创建的子节点,确保自己确实是最小的节点了,然后进入步骤3。



转自:http://nileader.blog.51cto.com/1381108/946788
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ZooKeeper 节点类型 的相关文章

  • HBase、Hadoop:如何估计 HBase 表或 Hadoop 文件系统路径的大小?

    我有多个 HBase 表 如何估计在 java 中使用的表的大致大小 一种方法是你必须使用java客户端访问hdfs 通常在 hbase文件夹 所有表格信息 将在场 Hadoop 外壳 你可以检查使用hadoop fs du h path
  • 与文件名中的冒号“:”作斗争

    我有以下代码 用于加载大量 csv gz 并将它们转储到其他文件夹中 并将源文件名作为一列 object DailyMerger extends App def allFiles path File List File val parts
  • 为什么我们需要将外部表移动到托管 Hive 表?

    我是 Hadoop 新手 正在学习 Hive 在 Hadoop 权威指南第 3 版中 第 12 页 第428章 最后一段 我不明白下面关于 HIVE 中外部表的段落 一种常见的模式是使用外部表访问存储在 HDFS 中的初始数据集 由另一个进
  • 如何有效地将数据从 Kafka 移动到 Impala 表?

    以下是当前流程的步骤 Flafka http blog cloudera com blog 2014 11 flafka apache flume meets apache kafka for event processing 将日志写入
  • Impala:如何查询具有不同模式的多个镶木地板文件

    在 Spark 2 1 中我经常使用类似的东西 df spark read parquet path to my files parquet 即使具有不同的模式 也可以加载镶木地板文件的文件夹 然后我使用 SparkSQL 对数据帧执行一些
  • 如何用snappy解压hadoop的reduce输出文件尾?

    我们的 hadoop 集群使用 snappy 作为默认编解码器 Hadoop作业减少输出文件名就像part r 00000 snappy JSnappy 无法解压缩文件 bcz JSnappy 需要以 SNZ 开头的文件 归约输出文件以某种
  • 以编程方式读取 Hadoop Mapreduce 程序的输出

    这可能是一个基本问题 但我在谷歌上找不到答案 我有一个映射缩减作业 它在其输出目录中创建多个输出文件 我的 Java 应用程序在远程 hadoop 集群上执行此作业 作业完成后 需要使用以下命令以编程方式读取输出org apache had
  • Hive 聚集在多个列上

    据我所知 当配置单元表聚集在一列上时 它会执行该分桶列的哈希函数 然后将该行数据放入其中一个桶中 每个桶都有一个文件 即如果有 32 个桶 那么 hdfs 中就有 32 个文件 将 clustered by 放在多个列上意味着什么 例如 假
  • 伪模式下没有名称节点错误

    我是hadoop新手 正处于学习阶段 根据 Hadoop Definitve 指南 我已将 hadoop 设置为伪分布式模式 一切正常 昨天我什至能够执行第三章中的所有示例 今天 当我重新启动我的unix并尝试运行start dfs sh然
  • Hadoop 作业:任务在 601 秒内无法报告状态

    在伪节点上运行 hadoop 作业时 任务失败并被杀死 错误 任务尝试 在 601 秒内无法报告状态 但同一个程序正在通过 Eclipse 运行 本地作业 任务 大约有 25K 个关键字 输出将是所有可能的组合 一次两个 即大约 25K 2
  • 如何解决 java.lang.RuntimeException: PipeMapRed.waitOutputThreads(): subprocess failed with code 2?

    我正在尝试在 Hadoop 环境中执行 NLTK 以下是我用于执行的命令 bin hadoop jar HADOOP HOME contrib streaming hadoop streaming 1 0 4 jar input user
  • 如何使用 log4j 自定义附加程序在 HDFS 上创建日志?

    Overview 我们希望使用 log4j 记录 Spark 作业活动 并将日志文件写入 HDFS Java 8 Spark 2 4 6 Scala 2 1 2 Hadoop 3 2 1 我们无法找到本地 apache log4j 附加程序
  • Spark中如何获取map任务的ID?

    Spark中有没有办法获取map任务的ID 例如 如果每个映射任务都调用用户定义的函数 我可以从该用户定义的函数中获取该映射任务的 ID 吗 我不确定您所说的地图任务 ID 是什么意思 但您可以使用以下方式访问任务信息TaskContext
  • 使用 Hive 计算文本变量的单词频率

    我有一个变量 每一行都是一个句子 例子 Row1 Hey how are you Rwo2 Hey Who is there 我希望输出是按单词分组的计数 Example Hey 2 How 1 are 1 我正在使用 split a bi
  • 谷歌的Dremel是什么?它与 MapReduce 有什么不同?

    谷歌的 Dremel 是此处描述 http research google com pubs pub36632 html Dremel 和 Mapreduce 有什么区别 Dremel http research google com pu
  • HIVE - 使用WITH CLAUSE插入覆盖

    我有一个生成的查询以WITH子句开头 当我在控制台中运行它时 当我尝试使用INSERT OVERWRITE运行查询以将输出加载到单独的配置单元表中时 该查询工作正常 INSERT OVERWRITE TABLE proc db master
  • Hive 有相当于 DUAL 的东西吗?

    我想运行这样的语句 SELECT date add 2008 12 31 1 FROM DUAL Hive 在 Amazon EMR 上运行 是否有类似的功能 最好的解决方案是不要提及表名 select 1 1 给出结果 2 但是可怜的 H
  • HBase中删除多行的有效方法

    有没有一种有效的方法可以删除 HBase 中的多行 或者我的用例是否不适合 HBase 有一个表称为 图表 其中包含图表中的项目 行键的格式如下 chart date reversed ranked attribute value reve
  • 从猪的单行输入生成多行输出

    我的要求是通过在 Pig 脚本中使用单行输入来生成多行输出 可能的解决方案有哪些 这个想法是将你的输入线转换成一个袋子 然后将其压平 这里可能有两种情况 阅读文字 txt load pig fun input text txt using
  • apache pig 是否有相当于“SHOW TABLES”的东西?

    我有一个在 Pig 中访问的 Hadoop 数据存储 但没有太多关于它的文档 而且我是 Pig 的新手 所以我正在寻找与 SHOW TABLES 等效的 Pig 当我连接到 MySQL 数据库时 我可以执行此操作并大致了解其中的数据 我找到

随机推荐

  • CentOS8服务篇1:配置DNS服务器

    一 配置主DNS服务器 伯克利因特网名称域 Berkeley Internet Name Domain BIND 服务是全球范围内使用非常广泛 安全可靠且高效的域名解析服务程序 DNS域名解析服务作为互联网基础设施服务 其责任非常重大 因此
  • Q_D Q_D Q_DECLARE_PRIVATE Q_DECLARE_PUBLIC

    对于Q D Q D Q DECLARE PRIVATE Q DECLARE PUBLIC这几个宏的使用折腾了好长一段时间 在网上也找了很多相关的资料 看完之后还是感觉很凌乱 最后还是决定自己写段代码来体会体会 一下是体验过程
  • C语言二维数组,三维数组浅析笔记

    关于二维数组 int arr 2 3 1 2 3 4 5 6 前言 可以将二维数组理解为 数组的数组 数组名a为行指针 从二维数组角度看 arr代表了二维数组首元素的地址 现在首元素不是一个单独的变量 而是一个一维数组 因此arr代表了首行
  • Purpose of ‘HOLD#’ Function in Cypress SPI NOR FLASH Memory Products - KBA229044

    原文链接 https community infineon com t5 Knowledge Base Articles Purpose of HOLD Function in Cypress SPI NOR FLASH Memory ta
  • 五种利用本地包含漏洞的方式

    本文讲的是 五种利用本地包含漏洞的方式 本地文件包含 Local File Include 是php脚本的一大特色 程序员们为了开发的方便 常常会用到包含 比如把一系列功能函数都写进fuction php中 之后当某个文件需要调用的时候就直
  • 神经网络 消除高斯白噪声_电阻的噪声

    电阻器的固有噪声 是指其自身产生的噪声 包括热噪声和过剩噪声 热噪声 电阻器的热噪声电压可以表示为 R是电阻 T是绝对温度 B是频率带宽 k是玻尔兹曼常数 在一定的温度和阻值之下 就产生了热噪声 热噪声属于电阻器的本征噪声 无法避免也无法消
  • K8s基础1——发展起源、资源对象、集群架构

    文章目录 一 发展起源 二 资源对象 2 1 集群类 2 2 应用类 2 3 存储类 2 4 安全类 三 集群架构 一 发展起源 K8s官方文档 K8s怎么来的 十几年来 谷歌内部使用的大规模集群管理系统是Brog 基于容器技术实现了资源管
  • 蓝桥杯-砝码称重

    这个题的方法是dp 首先我们来分析一下写法 从第一到最后一个 我们挨个进行运算 首先前i个是肯定能够称出a i 的重量的 然后我们再考虑选还是不选的问题 选的话要考虑出界的问题 因为我们是从1到sum进行循环 双重循环的内部 所以说看一下代
  • 对BP神经网络的理解及5.13公式推导

    BP神经网络 概述 误差逆传播 errorBackPropagation 简称BP 算法是迄今最成功的神经网络学习算法 现实任务中使用神经网络时 大多是在使用BP算法进行训练 值得指出的是 BP算法不仅可用于多层前馈神经网络 还可用于其他类
  • 【机器学习中的数学】基函数与函数空间

    引言 在学习线性回归模型的时候就会遇到基函数 可能我们会遇到多项式基函数 高斯基函数 sigmoid基函数 当然在高等数学和信号系统中还经常会碰到傅里叶基 有时候 不禁要问 这些基函数为什么这么设计 这些基函数的作用是什么 后来发现基函数是
  • 【ESP32-IDF】04-1 存储-分区表

    分区表 文章目录 分区表 1 esp32 flash结构 1 1 flash 物理组成 1 2 flash 内部结构 1 3 esp32启动过程 2 分区表 2 1 分区表的组成 2 2 分区表的定义 2 2 1 Name字段 2 2 2
  • hashMap和hashTable的区别以及HashMap的底层原理?

    hashMap和hashTable的区别 1 继承的父类不同 HashTable继承Dictionary类 而hashMap继承了AbstractMap类 但是二者都实现了map接口 2 线程安全性不同 Hashtable 线程安全 因为它
  • height:calc(100%-100px)如何兼容ie8

    做公司后台管理系统时 右边content main内容块高度出现了兼容问题 是content main包裹了iframe 如何兼容ie8 贴出以下代码部分 css js 原来css供参考 另一个参考地址 https stackoverflo
  • Ventoy的pe盘制作及重装系统步骤【解释的非常清楚!!!】

    文章目录 前言 正文 一 Ventoy的优点 二 Ventoy的pe盘制作 三 用Ventoy重装系统的过程 四 结尾 前言 当我们使用一般的pe盘的时候 他会把我们的u盘格式化 而且里面下载了很多文件 我们可能就不敢轻易的使用这个u盘作为
  • Netty中的那些坑

    转载自 http www cnblogs com rainy shurun p 5213086 html Netty中的那些坑 上篇 最近开发了一个纯异步的redis客户端 算是比较深入的使用了一把netty 在使用过程中一边优化 一边解决
  • 基于深度学习的图像去雾算法

    文章目录 前言 Preface 一 GFN dehazing 二 Dehaze cGAN 三 Cycle Dehaze 四 定性分析算法性能 Qualitative analysis of algorithm performance GFN
  • 计网第四章(网络层)(八)(最短路径优先协议OSPF)

    在第七节 计网第四章 网络层 七 永无魇足的博客 CSDN博客 我们总结了路由信息协议RIP 在最后我们提到了RIP协议有坏消息传的慢的问题 这是距离向量算法的本质决定的 所以这种问题无法彻底避免 既然基于距离向量无法彻底避免产生路由环路
  • numpy.argsort详解

    numpy argsort 用例 numpy argsort a axis 1 kind None order None 功能 返回数组排序后的元素索引值 根据kind指定的算法对数组沿着axis轴进行排序 其返回值的形状和a一致 返回值内
  • 干货 :深度学习必须掌握的 13 种概率分布

    来源 深度学习前沿 本文约1400字 建议阅读5分钟 这里有一份最常见的基本概率分布教程 大多数和使用 python 库进行深度学习有关 作为机器学习从业者 你需要知道概率分布相关的知识 这里有一份最常见的基本概率分布教程 大多数和使用 p
  • ZooKeeper 节点类型

    ZooKeeper 节点是有生命周期的 这取决于节点的类型 在 ZooKeeper 中 节点类型可以分为持久节点 PERSISTENT 临时节点 EPHEMERAL 以及时序节点 SEQUENTIAL 具体在节点创建过程中 一般是组合使用