Zookeeper 复习知识点(更新中)

这篇具有很好参考价值的文章主要介绍了Zookeeper 复习知识点(更新中)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Zookeeper

Zookeeper 是开源的,是一个基于观察者模式设计的分布式服务管理框架,负责存储和管理大家都关心的数据,然后接收观察者的注册,一旦这些数据发生变化,Zookeeper 负责通知已经注册的观察者。Zookeeper 相当于文件系统 + 通知机制。

第 1 章 Zookeeper 简介

1.1 Zookeeper 特点
  1. 集群架构:Zookeeper 通常由一组机器组成,一个 Leader 和多个 Follower 的集群结构。只要集群中存在过半的节点正常工作,整个集群就能够对外提供服务。为了保证高容错性,建议安装奇数台服务器
  2. 简单API:ZooKeeper 的 API 设计简洁且易于使用,其设计灵感来源于文件系统 API
  3. 顺序一致性和原子性:从同一客户端发起的事务请求,最终将严格按顺序被应用到 ZooKeeper 中。所有事务请求的处理结果在整个集群中的所有机器上是一致的
  4. 监听机制:Zookeeper 支持强大的监听机制,能够快速捕捉到数据的变化
1.2 Zookeeper 数据结构

Zookeeper 数据模型类似 Unix 文件系统(树状),每个节点称为 ZNode,每个 ZNode 默认可以存储 1MB 数据(对于记录状态性质的数据来说,足够使用)。

Zookeeper 复习知识点(更新中),zookeeper,ubuntu

ZNode 节点类型有 4 种:

  1. PERSISTENT 持久节点:在节点创建后就一直存在,直到有删除操作来主动删除该节点。该节点不会因为创建该节点的客户端会话失效而消失
  2. PERSISTENT_SEQUENTIAL 持久顺序编号节点:基本特性和持久节点是一致的。额外的特性是,在 Zookeeper 中,每个父节点会为它的第一级子节点维护一份时序,记录每个子节点创建的先后顺序。基于这个特性,那么在创建子节点过程中,Zookeeper 会自动为给定节点名加上一个数字后缀,作为新的节点名。在创建节点的时候只需要传入节点 “/test_”,这样之后,Zookeeper 自动会给 “/test_” 后面补充数字
  3. EPHEMERAL 临时节点:和持久节点不同的是,临时节点的生命周期和客户端会话绑定。也就是说,如果客户端会话失效,那么这个节点就会自动被清除掉。注意,这里提到的是会话失效,而非连接断开。另外,在临时节点下面不能创建子节点。 这里还要注意一件事,就是当你客户端会话失效后,所产生的节点也不是一下子就消失了,也要过一段时间,大概是 10 秒以内
  4. EPHEMERAL_SEQUENTIAL 临时顺序编号节点:此节点是属于临时节点,不过带有顺序编号,客户端会话结束节点就消失
1.3 Zookeeper 应用场景
1.3.1 统一命名服务 / 统一配置管理 / 统一集群管理

Zookeeper 复习知识点(更新中),zookeeper,ubuntu

Zookeeper 复习知识点(更新中),zookeeper,ubuntu

Zookeeper 复习知识点(更新中),zookeeper,ubuntu

1.3.2 服务器动态上下线

Zookeeper 复习知识点(更新中),zookeeper,ubuntu

1.3.3 分布式锁(⭐)

Zookeeper 复习知识点(更新中),zookeeper,ubuntu

第 2 章 Zookeeper 集群

Zookeeper 稳定 3.5.7 版本下载:https://archive.apache.org/dist/zookeeper/zookeeper-3.5.7/

2.1 部署 Zookeeper 集群

在 hostname 为 hadoop101、hadoop102、hadoop103 的三个节点上部署 Zookeeper 集群。

2.1.1 安装解压

在 hadoop101 上解压压缩包:

tar -zxvf apache-zookeeper-3.5.7-bin.tar.gz
mv apache-zookeeper-3.5.7-bin/ zookeeper
cd zookeeper/
# 创建 Zookeeper 数据目录
mkdir zkData
2.1.2 配置服务器编号

在 /zookeeper/zkData 目录下创建一个名为 myid 的文件,内容输入文件编号 1。

2.1.3 修改配置文件
cd zookeeper/conf
mv zoo_sample.cfg zoo.cfg

打开 zoo.cfg,进行以下修改添加:

tickTime=2000

initLimit=5

syncLimit=2

dataDir=/home/sy/zookeeper/zkData

dataLogDir=/var/log/zookeeper/dataLog

reconfigEnabled=true

standaloneEnabled=false

clientPort=2181

server.1=hadoop101:2888:3888
server.2=hadoop102:2888:3888
server.3=hadoop103:2888:3888
2.1.4 同步配置到其它节点

将 hadoop101 中已经配置好的 zookeeper 目录拷贝到 hadoop102 和 hadoop103 上,注意 hadoop102 和 hadoop103 需要分别修改 myid 的内容为 2、3。

2.1.5 启动集群

在三台服务器的 zookeeper 目录下分别输入命令:

bin/zkServer.sh start
bin/zkServer.sh status
2.2 Zookeeper 集群配置文件
# Zookeeper 服务端和客户端心跳时间,单位毫秒
tickTime=2000

# Leader 和 Follower 初始连接时能容忍的最多心跳数(tickTime 数量)
initLimit=5

# Leader 和 Follower 之间通信时间如果超过 syncLimit * tickTime,Leader 会认为该 Follwer 挂掉,从服务列表中删除
syncLimit=2

# 保存 Zookeeper 数据的目录
dataDir=/home/sy/zookeeper/zkData

# 保存 Zookeeper 事务日志的目录,与上面分开存储提高系统性能
dataLogDir=/var/log/zookeeper/dataLog

# 集群启动后是否可以修改现有配置
reconfigEnabled=true

# Zookeeper 是否以独立模式运行,集群模式下设为 false
standaloneEnabled=false

# 客户端连接端口
clientPort=2181

# 集群内有几个节点以下就写几行配置
# A 表示服务器的编号,与该服务器 myid 文件中的编号必须相同
# B 表示服务器的 hostname 或 ip
# C 表示服务器中 Follower 和 Leader 交换信息的端口
# D 表示重新选举时服务器相互通信的端口。
server.A=B:C:D
...
2.3 Zookeeper 集群选举机制(⭐)

以三台服务器为例。

2.3.1 第一次启动
  1. 第一台服务器 101 启动时,发起一次选举,投给自己一票,但是选票未超过集群服务器总数的一半,101 服务器保持 LOOKING 状态(正在选举状态)
  2. 第二台服务器 102 启动时,再发起一次选举,101 和 102 分别投给自己一票,两个服务器之间交换选举信息。此时 101 发现 102 的 myid 比自己大,所以更改投票为 102。此时 102 的票数超过集群服务器总数的一半,成为 Leader。101 成为 Follower。一旦集群中产生了 Leader,就不会继续选举,所以 103 最后加入集群自动成为 Follower
2.3.2 Leader 宕机后的选举
  1. 服务器运行期间主观认为无法与 Leader 保持连接,如果 Leader 确实宕机,就会开启 Leader 选举
  2. Leader 任期代号(EPOCH)大的直接当选;EPOCH 相同,事务 id(ZXID)大的当选;ZXID 相同,服务器 id(SID)大的当选

第 3 章 Zookeeper 节点命令

首先需要进入 Zookeeper 安装包的 bin 目录下,输入以下命令进入客户端:

./zkClient.sh
3.1 查看节点

查看节点命令:

# 查看根节点下的所有子节点
ls /

# 查看某个子节点的值,path 可以有多级,每级用 / 隔开(与 Linux 文件系统访问路径一致,有 Tab 提示)
ls /<path>

# 监听节点的子节点(执行一次命令表示监听一次,要想再次监听,就要再执行一次命令)
ls -w /<path>

# 查看某个子节点的值和其它详细信息
ls2 /<path>

# 有以下详细信息:
# cZxid 节点的事务id
# ctime 节点创建时间的ID
# mZxid 最后一次被修改的事务ID
# mtime 最后一次修改时间
# pZxid 最后一次修改该节点的子节点的事务 id
# cversion 子节点的版本号
# dataVersion 当前数据的版本号,默认 0,每被修改一次会累加1
# aclVersion 权限更迭版本
# ephemeralOwner 临时节点的客户端会话 id
#   a)节点为持久化节点时:ephemeralOwner 值为0
#   b)节点为临时节点时:ephemeralOwner 值表示该节点所属客户端会话 id
# dataLength 存储数据的长度
# numChildren 子节点个数
3.3 创建节点
  1. 持久节点
create /<path> "<node-value>"
  1. 持久顺序节点
create -s /<path> "<node-value>"
  1. 临时节点
create -e /<path> "<node-value>"
  1. 临时顺序节点
create -e -s /<path> "<node-value>"
3.4 获取节点数据
# 获取节点数据
get /<path>

# 监听节点数据的变化(执行一次命令表示监听一次,要想再次监听,就要再执行一次命令)
get -w /<path>
3.5 修改节点数据
set /<path> "new value"
3.6 删除节点

删除没有子节点的节点:

delete /<path>

删除带有子节点的节点:文章来源地址https://www.toymoban.com/news/detail-802586.html

deleteall /<path>

到了这里,关于Zookeeper 复习知识点(更新中)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Pytorch基础知识点复习

    本篇博客是本人对pytorch使用的查漏补缺,参考资料来自 深入浅出PyTorch,本文主要以提问的方式对知识点进行回顾,小伙伴们不记得的知识点可以查一下前面的教程哦。   现在并行计算的策略是 不同的数据分布到不同的设备中,执行相同的任务(Data parallelism) 。   它的逻

    2024年01月20日
    浏览(42)
  • Web期末复习知识点

    下载Tomcat :前往Apache Tomcat官方网站(https://tomcat.apache.org)下载适合您操作系统的Tomcat版本。  安装Tomcat :解压下载的Tomcat压缩文件到您选择的目录。例如,将Tomcat解压到/opt/tomcat。 配置环境变量(可选) :如果需要在任何位置启动Tomcat,可以将Tomcat的bin目录添加到系统的

    2024年02月04日
    浏览(47)
  • 离散数学---期末复习知识点

    一、 数理逻辑   [ 复习知识点 ] 1、命题与联结词(否定¬、析取∨、合取∧、蕴涵→、等价↔),命题(非真既假的陈述句),复合命题(由简单命题通过联结词联结而成的命题) 2、命题公式与赋值(成真、成假),真值表,公式类型(重言、矛盾、可满足),公式的基本等值式

    2024年02月08日
    浏览(74)
  • WPF复习知识点记录

    由于近几年主要在做Web项目,客户端的项目主要是以维护为主,感觉对于基础知识的掌握没有那么牢靠,趁着这个周末重新复习下WPF的相关知识。 文章内容主要来自大佬刘铁锰老师的经典著作《深入浅出WPF》。 因为是复习,所以知识内容不会一一记录,如有需要了解更多可

    2024年02月11日
    浏览(41)
  • java基础知识点复习①

    java是一门开源的面向对象的编程语言,具有面向对象的封装、继承、多态的特点。 封装:将类的某些信息隐藏起来,只提供特定的方法来访问或修改这些隐藏信息,从而防止直接操作类中的某些属性。是通过访问权限修饰符来实现封装的,public——protected——default——pri

    2023年04月22日
    浏览(52)
  • Java期末复习——知识点+题库

    简单、面向对象、平台无关、多线程、动态 Java 所有的组成部分都需要名字。类名、变量名以及方法名都被称为标识符。 关于 Java 标识符,有以下几点需要注意: 所有的标识符都应该以字母(A-Z 或者 a-z),美元符($)、或者下划线(_)开始 首字符之后可以是字母(A-Z 或者

    2024年02月02日
    浏览(65)
  • Java集合基础知识点复习

    主要分为两类: 第一个是Collection 属于单列集合,第二个是Map 属于双列集合在Collection中有两个子接口List和Set。在我们平常开发的过程中用的比较多像list接口中的实现类ArrarList和LinkedList。 在Set接口中有实现类HashSet和TreeSet。 在map接口中有很多的实现类,平时比较常见的是

    2024年04月08日
    浏览(57)
  • 计算机网络期末复习(知识点)

    目录 第一章 概述 1.1计算机网络的概念 1.2计算机网络的组成 1.3计算机网络的功能 1.4计算机网络的性能指标 1.5计算机网络的体系结构 第二章 物理层 1.基本概念 2.常见的数字数据编码 3.传输介质 4.物理层中的设备 第三章 数据链路层 1.数据链路层的功能 2.组帧 3.差错控制 4.流

    2024年02月03日
    浏览(64)
  • Spark相关知识点(期末复习集锦)

    嗨喽,最近小伙伴们快要期末考试了吧,下面是我对《Spark零基础实战》的总结,希望能帮助到你们。 Spark,拥有hadoop MR所具有的优点,但不同于MR的是job中监测结果可以 保存在内存中 ,从而不再需要读写HDFS,因此spark能够更好的适用于数据挖掘与机器学习等需要迭代的m r的

    2024年02月02日
    浏览(52)
  • 图论期末复习知识点 卓新建

    图的定义、关联、相邻、重边、环、孤立点、简单图 同 顶点的度d(v), deg(v)、出度、入度、最大度D、最小度d、奇点、偶点、邻域、悬挂点、 悬挂边 独立集 偶图/二部图/二分图、多部图、完全偶图、完全图、正则图 度序列 、图序列(简单图的度序列) 握手定理 子图、极大子

    2024年02月03日
    浏览(48)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包