Zookeeper的六个要点问题

hbase 访问zookeeper的问题 坑 1、 Configuration config = HBaseConfiguration.create(); 书上说是会自动加载hbase-site.xml里面配置的zookeeper 配置 但是实际上是访问的是localhost本地的zookeeper2181端口 2、因此如果本地不是zookeeper server 的话就无法访问hbase 了 3、解决办法通过参数传给程序 例子: 阅读详情

ZooKeeper

1. ZooKeeper 集群中有哪些角色,分别有什么作用

Leader:

  • 发起与提交写请求。所有的跟随者 Follower 与观察者 Observer 节点的写请求都会转交给 Leader执行。Leader接受到一个写请求后,首先会发送给所有的Follower,统计Follower写入成功的数量。当有超过半数的Follower写入成功后,Leader就会认为这个写请求提交成功,通知所有的Follower commit 这个写操作,保证事后哪怕是集群崩溃恢复或者重启,这个写操作也不会丢失。
  • 与 Learner 保持心跳。
  • 崩溃恢复时负责恢复数据以及同步数据到 Learner。

Follower:

  • 与 Leader 保持心跳连接。
  • 当 Leader 宕机后,经过投票后成为新的 Leader。Leader 的重新选举是由所有 Follower 内部投票决定的。
  • 向 Leader 发送消息与请求。
  • 处理 Leader 发来的消息与请求。

Observer:

  • 与 Leader 同步数据。
  • 不参与 Leader 选举,也没有投票权,同时也不参与写操作的提议过程中。
  • 数据没有事务化到硬盘。即 Observer 只会吧数据加载到内存。
  • Observer的主要作用是提高 zookeeper 集群的读性能。通过leader的介绍我们知道 zookeeper 的一个写操作是要经过半数以上的 Follower 确认才能够写成功的。那么当 zookeeper 集群中的节点越多时,zookeeper 的写性能就越差。为了在提高 zookeeper 读性能(也就是支持更多的客户端连接)的同时又不影响 zookeeper 的写性能,所以才有了观察者。

2. 说说 ZooKeeper Znode 的特点

  • Zookeeper是一个树状结构,维护一个小型的数据节点Znode。
  • 数据以key/value的方式存在,目录是数据的key。
  • 所有的数据访问都必须以绝对路径的方式显示。
  • Znode是层次结构,每个Znode都有一个唯一的路径标识
  • 临时节点:创建临时节点,会话结束之后临时节点会被自动删除。
  • 临时顺序节点:具有临时节点的特征,但是它会有序列号,在分布式锁中会用到该类型节点。
  • 持久节点:节点会一直存在,直到显示删除。主要用于存储配置信息和状态信息等。
  • 持久顺序节点:该节点创建后持久存在,相对于持久节点,它会在节点名称后面自动增加一个10位数字的序
    列号,这个计数对于此节点的父节点是唯一。
  • 原子性操作:ZooKeeper提供了原子性的写操作,这意味着所有更新操作都是原子性的,要么成功,要么失败,不会出现部分更新的情况。

3. 说说 ZooKeeper 的监听通知机制

监听机制:
客户端注册监听它关心的目录节点,当目录节点发生变化(数据改变、节点删除、子目 录节点增加 删除)时,ZooKeeper 会通知客户端。监听机制保证 ZooKeeper 保存的任何的数据的任何改变都能快速的响应到监听了该节点的应用程序。

  • 首先要有一个main()线程
  • 在main线程中创建 Zookeeper 客户端,这时就会创建两个线程,一个负责网络连接通信(connet),一个负责监听(listener) 。
  • 通过connect线程将注册的监听事件发送给Zookeeper。
  • 在Zookeeper的注册监听器列表中将注册的监听事件添加到列表中。
  • Zookeeper监听到有数据或路径变化,就会将这个消息发送给listener线程。
  • listener线程内部调用了process()方法。

通知机制:
Zookeeper 允许客户端向服务端的某个 Znode 注册一个 Watcher 监听,当服务端的一些指定事件触发了这个 Watcher,服务端会向指定客户端发送一个事件通知来实现分布式的通知功能,然后客户端根据Watcher 通知状态和事件类型做出业务上的改变。

4. 说一下 CAP 原则以及如何选择

CAP 原则是分布式系统设计中的重要原则,它指的是一致性(Consistency)、可用性(Availability)和分区容错性(Partition Tolerance)三个特性之间的权衡关系。三者不可兼得。

  • 一致性(Consistency):指的是分布式系统中的所有节点,在同一时间具有相同的数据视图。换句话说,一致性要求在数据更新后,所有节点都能够立即读取到最新的数据状态。
  • 可用性(Availability):指的是分布式系统在面对用户请求时能够保证正常的响应和服务。即使出现节点故障,系统依然能够继续对外提供服务。
  • 分区容错性(Partition Tolerance):分布式系统在任何网络分区故障时,仍然能够对外提供一致性和可用性的服务。

在选择时,要考虑系统的实际情况和需求,根据不同的应⽤场景选择不同的指标进⾏权衡。下⾯是⼀些选择策略:

  • 对于要求强⼀致性(C)的系统,需要牺牲可⽤性或分区容错性,因为⼀致性需要所有节点都同步,这会增加延迟和负载。例如,银⾏系统、⽀付系统等需要强⼀致性。

  • 对于要求⾼可⽤性(A)的系统,需要牺牲⼀致性或分区容错性。例如,在线电商系统、社交⽹络系统等需要保证⾼可⽤性。

  • 对于要求⾼分区容错性(P)的系统,需要牺牲⼀致性或可⽤性。例如,数据中⼼之间的分布式系统,需要保证⽹络分区容错性。

5. ZooKeeper 的选主过程

ZooKeeper的选主其实就是ZAB协议的崩溃恢复模式。

  • ​ 当整个集群正在启动时,或者当 Leader 节点出现⽹络中断、崩溃等情况时,ZAB 协议就会进⼊恢复模式并选举产⽣新的 Leader,当 Leader 服务器选举出来后,并且集群中有过半的机器和该 Leader 节点完成数据同步后(同步指的是数据同步,⽤来保证集群中过半的机器能够和Leader 服务器的数据状态保持⼀致),ZAB 协议就会退出恢复模式。

  • ​ 当集群中已经有过半的 Follower 节点完成了和 Leader 状态同步以后,那么整个集群就进⼊了消息⼴播模式。这个时候,在 Leader 节点正常⼯作时,启动⼀台新的服务器加⼊到集群,那这个服务器会直接进⼊数据恢复模式,和 Leader节点进⾏数据同步。同步完成后即可正常对外提供⾮事务请求的处理。

  • ​ 在整个消息⼴播中,Leader 会将每⼀个事务请求转换成对应的 Proposal 来进⾏⼴播,并且在⼴播事务 Proposal 之前,Leader 服务器会⾸先为这个事务 Proposal 分配⼀个全局单递增的唯⼀ID,称之为事务 ID(即 ZXID),由于 ZAB 协议需要保证每⼀个消息的严格的顺序关系,因此必须将每⼀个 Proposal 按照其 ZXID 的先后顺序进⾏排序和处理。

6. ZooKeeper 如何帮助其他组件选主

ZooKeeper 通过其⼀致性协调服务帮助其他分布式组件选主的主要⽅式有:

  1. 提供了⼀个统⼀的主节点选举接⼝ - ZooKeeper 提供了⼀个基于Zab协议的Leader选举接⼝,其他组件可以构建⾃⼰的主节点选举过程,⽽将底层的Leader选举和协调⼯作交给ZooKeeper去完成。
  2. 节点状态维护 - ZooKeeper 会维护每个节点的信息,如存活状态、节点数据等。这些信息可以帮助判断节点是否“活着”从⽽进⾏主节点选举。
  3. 分布式锁 - ZooKeeper的分布式锁机制可以避免同时多个节点成为主节点的情况产⽣。组件可以利⽤ZooKeeper 的锁服务确保同⼀时刻只有⼀个主节点。
  4. 触发器机制 - ZooKeeper提供了Watcher机制,当节点状态发⽣改变会触发相关Watcher,可以⽤于通知组件有主节点失效,需要激活新的选举过程。
  5. 数据发布/订阅 - ZooKeeper可以⽤于主节点将选举结果发布出去,其他节点可以订阅获得通知。
  6. 所以ZooKeeper为其他分布式组件选主提供了基础协调服务,利⽤这些机制可以更好地实现⾼可靠性的主节点选举和状态协调。

通过Zookeeper的临时节点可以⽤来实现分布式锁,多个客户端分别创建⼀个节点,创建成功即成功获取到了锁,成为主节点,创建失败的客户端们则会监听这个主节点,当主节点失效后,其他节点会收到Watch发来的通知,开始重新夺取锁,成为主节点。这个临时节点只会有⼀个,当服务器断开,⾃动失效。

Zookeeper问题排查 现象 zookeeper版本为3.4.3, hbase版本为0.94.7。 按照zk的设计,一台机器down了之后应该仍然可以工作,但实际上应用中并不如此。 Zookeeper一台机器在生产环境中被挪走,客户端始终无法连接HBase。 问题排查 抛出如下异常: Caused by: java.net.UnknownHostException: ops-new-launch- 阅读详情

相关推荐

kerberos下HBase访问Zookeeper的ACL问题

最近公司HBase(CDH-4.6.0)遇到了一个麻烦问题,觉得有必要记录下整个解决的过程。问题起因用户在跑mapreduce任务,从hdfs读取文件想写入到hbase table的时候失败了(这是hbase提供的一种mapred能力)。这个问题发现在A环境(一个测试环境),自从启用了kerberos之后。运行了用户给的程序和自己写的sample之后,发现程序最后挂在NullPointerExcep

new Blog("gzh") 7683

zookeeper重点总结

当整个集群正在启动时,或者当 Leader 节点出现网络中断、崩溃等情况时,ZAB 协议就会进入恢复模式并选举产生新的 Leader,当 Leader 服务器选举出来后,并且集群中有过半的机器和该 Leader 节点完成数据同步后(同步指的是数据同步,用来保证集群中过半的机器能够和 Leader 服务器的数据状态保持一致),ZAB 协议就会退出恢复模式。这个时候,在 Leader 节点正常工作时,启动一台新的服务器加入到集群,那这个服务器会直接进入数据恢复模式,和 Leader节点进行数据同步。

weixin_57211246的博客 299

ubuntu伪分布安装Zookeeper 以及出现的问题

下载 下载对应版本 Zookeeper,这里我下载的版本 3.4.6。官方下载地址:https://archive.apache.org/dist/zookeeper/ 解压 把zookeeper解压到/usr/local/文件夹下 sudo tar -zxf ~/下载/zookeeper-3.4.6.tar.gz-C /usr/local 重命名 sudo mv zookeeper-3.4.6/ zookeeper 配环境变量 编辑 profile 文件: ...

weixin_54490958的博客 1375

zookeeper 细节收集

1、Znode节点数据不超过1M 2、znode 读写性能影响因素: 我们说性能,可以从两个方面去考虑:写入的性能与读取的性能。 由于ZK的写入首先需要通过Leader,然后这个写入的消息需要传播到半数以上的Follower通过才能完成整个写入,所以整个集群写入的性能无法通过增加服务器的数量达到目的,相反,整个集群中Follower数量越多,整个集群写入的性能越差。 ...

sinat_AQ的博客 278

【zookeeper】zookeeper 脑裂问题

1.概述 转载:https://blog.youkuaiyun.com/yjp198713/article/details/79400927 1.1 为什么zookeeper要部署基数台服务器? 所谓的zookeeper容错是指,当宕掉几个zookeeper服务器之后,剩下的个数必须大于宕掉的个数,也就是剩下的服务数必须大于n/2,zookeeper才可以继续使用,无论奇偶数都可以选举leader。 5台机器最多宕掉2台,还可以继续使用,因为剩下3台大于5/2。说为什么最好为奇数个,是在以最大容错服务器个数的条件下,.

九师兄 938

深入剖析ZooKeeper源码技术要点

本文还有配套的精品资源,点击获取 简介:ZooKeeper是一款重要的分布式协调服务,广泛应用于大数据生态系统。通过深入分析“zoo-源码.rar”压缩包,本文将帮助读者理解ZooKeeper的核心设计理念、架构设计、数据存储和一致性保证机制。文章详细探讨了ZooKeeperServer的核心组件,客户端API的实现,以及如何通过源码深入理解其内部机制,从而提升对分布式系统...

weixin_26907223的博客 1218

zookeeper集群选主原理

前言: ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是大数据领域的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。而在大数据中最主要的作用就是集群选主! 本文中讲解均以3台节点zookeeper为例! 一、zookeeper自身选举 zookeeper自身选举分为两类,...

墨殇 1192

Axure rp9 中继器新建表格

Axure rp9 中继器新建表格

weixin_49295490的博客 1652

Zookeeper中常遇到的一些小问题

问题: 异常信息: zookeeper not connected 异常场景: spring boot + dubbo 启动时,连接zk出现问题 解决方案: 1、 检查zk所在机的防火墙。 systemctl stop firewalld | service firewalld stop 2、 检查zk所在机的ip和yml配置中的ip是否对应 3、 检查zk是否成功启动。 $zk_home...

weixin_46056218的博客 767

游戏数据训练世界模型:AI物理规律学习与仿真应用实践

世界模型作为理解现实世界动态的AI工具,通过多模态数据学习物理和空间属性来预测未来状态。其核心原理在于从环境交互中提取物理规律,技术价值体现在能够安全、低成本地训练AI系统应对复杂场景。在应用层面,游戏数据因其结构化环境和内置物理引擎,成为世界模型训练的优质素材。游戏世界中的物体交互、运动轨迹等数据天然包含现实物理规律,特别适合训练物理AI。本文以General Intuition公司获得3.2亿美元融资为切入点,深入探讨游戏数据在世界模型训练中的技术实现路径,涵盖数据提取管道构建、多模态数据融合方法,以及

weixin_29056865的博客 367

嵌入式开发中Tab与空格混用的危害与统一规范实践

在软件工程中,代码格式一致性是保障可读性与团队协作效率的基础。从原理上看,制表符(Tab)与空格(Space)在存储与显示机制上存在本质差异:Tab是控制字符,其显示宽度取决于编辑器设置;空格则是固定宽度的字符。这种差异导致混用时会引发代码对齐错乱、版本控制冲突及跨平台兼容性问题,严重影响工程的可维护性。尤其在嵌入式开发领域,资源受限环境与高可靠性要求使得统一的编码规范更为关键。通过配置编辑器、集成clang-format等自动化工具,可以强制实现缩进风格的一致性,从而提升代码质量与团队协作效率。本文聚焦于

weixin_42545636的博客 276

Zookeeper要点笔记

Zookeeper要点笔记 日志3种: 快照(snapshot) 配置文件参数dataDir指定快照存放目录 文件名 $dataDir/version-2/snapshot.0 事务日志(transaction log) 配置文件参数dataLogDir指定事务日志存放目录 $dataLogDir/version-2/log.100000001 运行日志 在zookeeper主目录下的logs下 查看2进制日志, 2进制日志就是ZNode在内存中...

ipsecvpn的专栏 245

S4-FPGA-K7板级原理图硬件实战

xilinx K7板级硬件实战

weixin_66510961的博客 6152

安装zookeeper和kafka过程中遇到的问题

安装zookeeper和kafka过程中遇到的问题 一、zookeeper中遇到的问题 1、版本问题 docker安装时不建议使用zookeeper:last 这版,建议使用wurstmeister/zookeeper:last 这版。 二、kafka中遇到的问题 1、版本问题 docker安装时不建议使用kafka:last 这版,建议使用wurstmeister/kafka:last 这版。 2、org.apache.kafka.co...

qq_42057890的博客 2045

文石NoteX3国行版安装 Google Play经验分享

文石NoteX3国行版安装 Google Play经验分享。

2301_80693261的博客 7599

基于74LS175的四人抢答电路设计(含详细设计分析及试错过程)

根据设计要求不难发现,只要有一人抢答,就会输出信号使指示灯常亮,此时其他人输入无效,适宜选择触发器,有人抢答时触发器输出由0变1,输出信号控制指示灯常亮,同时使CLR引脚输入0,触发器不工作,即其他选手不能再抢答。尝试加入一人抢答后其他人不可抢答功能,如下图,175四个~Q输出端接入同一个与非门,于是当有选手抢答时该与非门输出由0变1,将该信号输入U5A,U5A输出由1变0,接入~CLR即可使电路不再工作。但仿真时发现,该复位键仅可使抢答电路部分复位,计数部分只是暂停,并未复位。否则元器件将无法正常工作。

2202_75463653的博客 8190

Zookeeper中解决zookeeper.out文件输出位置问题

使用过 Zookeeper 的小伙伴都知道,Zookeeper 中运行日志 zookeeper.out 文件的输出路径默认为启动脚本的当前路径,导致Zookeeper 集群启动失败想看日志时总是不记得输出日志在哪儿,不方便查看日志文件,所以需要修改日志输出位置及方式,方便查看日志。......

qq_45124566的博客 2720

uniapp | vue2 | vue3 - 解决调用天地图功能服务时 http 网络请求报错 net::ERR ABORTED 503(Service Temporarily Unavailabl)

vue,uni-app,天地图,请求报错,503,请求失败,map.tianditu,天地图503,天地图请求503,接口503错误怎么办,vue天地图,uniAPP天地图,获取定位接口服务器报错503,获取当前定位,定位功能,IP属地定位,天地图服务器报错,如何解决报错,net::ERRABORTED503(ServiceTemporarilyUnavailabl),GET,POST,服务暂时不可用,react天地图,一直等待吗,报错怎么办,定位报错,轨迹,经纬度,天地图服务器503,在vue2

🏆 前端领域优质创作者 4438

ZooKeeper——ZooKeeper搭建及问题解决

目标: 三台zk集群 192.168.108.128 node1 192.168.108.129 node2 192.168.108.130 node3 下载解压 下载安装包apache-zookeeper-3.5.5-bin.tar.gz,解压tar -zxvf apache-zookeeper-3.5.5-bin.tar.gz 进入文件夹apache-zookeeper-3.5.5-bin,...

SK_Jaco的博客 2547

SAP 角色继承、派生

角色继承、派生 继承:是指两个角色Role形成母子关系。子角色的所有菜单、授权都源于母角色,并与母角色保持一致。母角色与子角色是1对多的关系。 继承关系:新建子角色继承母角色中的事务(后续通过复制,将母角色授权数据复制至子角色) 派生概念:将母角色中的授权数据派生至子角色中。 业务场景:方便批量修改子角色权限。若有继承关系,只需要修改母角色,然后通过母角色派生功能,从而批量修改子角色授权数...

willieyuan的博客 1万+

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

Zookeeper学习知识要点

Zookeeper的学习与应用zookeeper工作机制 zookeeper工作机制 从设计模式角度来理解:是一个基于观察者模式设计的分布式服务管理框架,负责存储和管理,接收观察者的注册,当数据状态发生变化,负责通知已经注册的观察者,便于做出反应” ...

bad_boy的博客 647

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

Zookeeper原理以及要点知识

Zookeeper Zookeeper简述 Zookeeper是一个分布式服务框架,是Apache Hadoop 的一个子项目,它提供的是分布式协调服务。用来解决分布式应用中经常遇到的一些数据管理问题,比如统一命名服务、协调锁资源、状态同步服务、集群管理、分布式应用配置项的管理等。而Zookeeper实现这些功能的支撑其实是它类似于文件系统的数据模型和监听机制。 监听机制 客户端可以通过在它关心的目录节点上注册监听事件监听器(Watcher),当目录节点发生相应的事件(数据改变、节点被删除、子目录节点增加

qq_41008202的博客 426

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

zookeeper的脑裂问题

zookeeper

mll999888的专栏 4769

一文解析ZooKeeper —ZooKeeper特性及ZooKeeper到底解决了什么问题

术语解释分布式系统跨多个物理主机,由多个独立运行的节点组成的系统原语业务上不可分割的元素/过程,举例:分布式锁原语,可以暴露创建、查询、释放几个方法我这里准备了一线大厂面试资料和我原创的超硬核PDF技术文档,以及我为大家精心准备的多套简历模板(不断更新中),希望大家都能找到心仪的工作建议阅读:2025金三银四进大厂必刷的Java面试题 (全彩版)结果呢,也是不负众望,中大厂、大厂的offer那是一波接一波,薪资嘛,基本都是原来的两倍、三倍往上走,最高的一个有赞,直接给他开了30K的价码。

2403_88996764的博客 631

LINUX下配置zookeeper遇到的问题

下载 到官网去下载你想要的版本 官网下载地址 解压:tar -zxvf zookeeper-3.4.10.tar.gz [root@localhost tmp]# cp zookeeper-3.4.10 /usr/local/zookeeper -r //复制所有文件到zookeeper 文件夹下 [root@localhost tmp]# cd /usr/local/zookeeper ...

smile_study1的博客 382

zookeeper核心要点

zookeeper zk zab

心静自然亮 222
上一篇: 三十分钟学会zookeeper
下一篇: 十道Linux常见的面试问题
地球魔
博客等级 码龄6年 317粉丝 56原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值