版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
单元8分布式协调服务ZooKeeper学习目标知识目标技能目标1.理解ZooKeeper的基本概念和架构原理。2.掌握ZooKeeper的模型和关键特性。3.掌握ZooKeeper客户端常用命令的用法。1.掌握ZooKeeper的安装与配置方法,能够灵活运用服务启动、状态检查和服务停止等命令。2.能使用ZooKeeper客户端命令进行节点的创建、删除、查询等操作。3.能熟练操作ZooKeeper,并开展与其他组件的协调和管理工作。单元任务任务8.1ZooKeeper的基本概念和架构原理任务8.2ZooKeeper客户端常用命令的用法
(1)ZooKeeper的基本概念。(2)Zookeeper服务架构的组成。(3)ZooKeeper的关键特性。(4)ZooKeeper与其他组件的关系。本任务旨在深入讲解ZooKeeper的基本概念和架构原理,使读者建立对ZooKeeper的认知,理解其在分布式系统中的重要作用和工作方式。【任务描述】【关键步骤】任务8.1ZooKeeper的基本概念和架构原理
8.1.1ZooKeeper的基本概念8.1.2Zookeeper服务架构的组成8.1.3ZooKeeper的关键特性8.1.4ZooKeeper与其他组件的关系任务8.1ZooKeeper的基本概念和架构原理8.1.1ZooKeeper的基本概念ZooKeeper是一个开源的分布式协调服务,主要用于管理和协调分布式系统中的各种任务。它提供了一种简单有效的方式来实现分布式系统中的一致性、可用性和可靠性。在分布式系统中,多个节点需要协同工作,但由于网络延迟、节点故障等原因,可能会出现数据不一致、任务冲突等问题。ZooKeeper可以在分布式系统中实现高效的配置管理、命名服务、分布式同步、集群管理等功能,帮助分布式系统解决这些问题。ZooKeeper提供了分布式、高可用性的协调服务能力,能保障强一致性、有序性和持久性,以及实现通用的同步功能。另外,在实际的分布式系统中,并发往往会导致不正确的行为,ZooKeeper提供了一种简单的并发处理机制。8.1.1ZooKeeper的基本概念8.1.2Zookeeper服务架构的组成8.1.3ZooKeeper的关键特性8.1.4ZooKeeper与其他组件的关系任务8.1ZooKeeper的基本概念和架构原理8.1.2Zookeeper服务架构的组成ZooKeeper采用主从架构,由一组服务器组成,被称为ZooKeeper集群。ZooKeeper集群由一组Server节点组成,这一组Server节点中只存在一个leader节点,其他节点都为follower。集群启动时选举出leader。(1)leader(领导者):负责处理客户端的请求,并协调集群中的其他服务器。leader的主要职责是维护集群的状态,确保数据的一致性和可用性。(2)follower(跟随者):接收leader的指令,并向leader发送请求。follower的主要职责是存储数据,并在leader出现故障时参与leader的选举。8.1.2.1
ZooKeeper模型ZooKeeper使用自定义的Zab(ZooKeeperAtomicBroadcast,ZooKeeper原子消息广播)协议,保证了整个系统中节点数据的一致性。leader节点在接收数据变更请求后,先写磁盘再写内存。当客户端(Client)连接到ZooKeeper集群,并且执行写请求时,这些请求会被发送到leader节点上,然后leader节点上的数据变更会同步到集群中其他的follower节点上。ZooKeeper服务架构如图8.1.1所示。图8.1.1ZooKeeper服务架构8.1.2.1
ZooKeeper模型leader节点在接收数据变更请求后,首先将变更写入本地磁盘,以用于恢复。只有当所有的写请求都持久化到磁盘以后,才会将变更应用到内存中。ZooKeeper使用了一种自定义的Zab协议,消息层的这种原子特性,保证了整个协调系统中节点数据或状态的一致性。follower节点基于Zab协议能够保证本地的ZooKeeper数据与leader节点同步,并基于本地的存储来独立地对外提供服务。一个leader节点发生故障失效时,失败故障是快速响应的,消息层负责重新选择一个leader节点,继续作为协调服务集群的中心,处理客户端的写请求,并将ZooKeeper协调系统的数据变更同步(广播)到其他的follower节点上。8.1.2.2ZooKeeper容灾能力ZooKeeper能够完成选举,正常对外提供服务。ZooKeeper在进行选举时,当某一个实例获得了半数以上的票时,则变为leader。对于n个实例的服务,n可能为奇数或偶数。当n为奇数时,假定n=2x+1,则成为leader的节点需获得x+1票,容灾能力为x。当n为偶数时,假定n=2x+2,则成为leader的节点需获得x+2票(大于一半),容灾能力为x。由此可见,2x+1个节点与2x+2个节点的容灾能力相同(即3个节点与4个节点相同,5个节点与6个节点相同……),但考虑到选举及完成写操作的速度与节点数的相关性,建议ZooKeeper部署奇数个节点。8.1.1ZooKeeper的基本概念8.1.2Zookeeper服务架构的组成8.1.3ZooKeeper的关键特性8.1.4ZooKeeper与其他组件的关系任务8.1ZooKeeper的基本概念和架构原理8.1.3ZooKeeper的关键特性ZooKeeper的关键特性主要有以下几个。(1)最终一致性。无论哪个Server,对外展示的均是同一个视图。(2)实时性。保证客户端能够在一个时间间隔范围内获得服务器的更新信息,或者服务器失效的信息。(3)可靠性。当一条消息被一个Server接收后,这条消息将会被所有Server接收。(4)等待无关性。慢的或者失效的Client不会干预快速的Client的请求,使得每个Client都能有效的等待。(5)原子性。更新只能成功或者失败,没有中间状态。(6)顺序一致性。所有请求都会按照严格的顺序执行,确保了发送的顺序和最后执行的顺序一致。8.1.3.2ZooKeeper的写特性ZooKeeperClient可以向任意Server发起写请求。若向follower节点发起写请求,则follower节点将请求转发给leader节点,leader节点获取写请求后,会将这个写请求发送给所有Server,询问是否能够执行这次操作。follower节点会根据自身情况反馈应答信息ACK给leader节点,leader节点根据反馈的信息获取可以执行写操作的数量,当大于实例总数的一半时,则认为本次写操作可以执行。leader节点将结果反馈给各个follower节点,完成写操作,各follower节点同步leader数据,本次写操作完成。ZooKeeper的写特性如图8.1.3所示,图中有三个节点,其中包括一个leader节点,两个follower节点,中间是leader节点。图8.1.3
ZooKeeper的写特性8.1.3.3访问控制列表设置ACL的命令为:setAcl/path-to-znodescheme:id:permission。命令中各参数的功能如下。(1)/path-to-znode:要设置ACL的ZooKeeper节点的路径,如/spark。(2)scheme:认证方式,用于定义如何识别用户或实体。ZooKeeper内置了多种方式。world:默认方式,表示任何人都可以访问。例如,world:anyone:cdrwa。digest:使用用户名和密码生成MD5哈希值作为认证ID。例如,digest:username:password:cdrwa。ip:使用客户端主机IP地址来进行认证。例如,ip:192.168.0.1:cdrwa。super:超级用户模式,拥有对ZooKeeper的所有操作权限。例如,super:root:root123表示用户root使用密码root123拥有所有权限。sasl:基于sasl(SimpleAuthenticationandSecurityLayer)的认证,是ZooKeeper服务端通过记录登录用户的认证信息作为scheme来设置节点的ACL的一种方式,适用于需要更高安全性的环境。8.1.3.3访问控制列表(3)id:用来认证的字段,不同的scheme认证方式,使用的id也不同。例如,如果scheme使用digest方式,则id将是username:password的MD5散列。如果scheme使用world方式,则id通常是anyone。如果scheme使用ip方式,则id通常是客户端主机IP地址。(4)permission:通过ACL认证的用户对该节点可拥有的操作权限。通常由一系列字母组成,每个字母代表一种权限。c(create):创建子节点的权限。d(delete):删除子节点的权限。r(read):读取数据的权限。w(write):写入数据的权限。a(admin):管理员权限,允许修改ACL。8.1.3.4日志增强ZooKeeper使用一种名为“Znodes”的数据结构来存储数据。在这些Znodes中,有两种类型:持久节点(PersistentNodes)和临时节点(EphemeralNodes)。临时节点在创建它的ZooKeeper客户端会话期间存在。一旦客户端会话结束,这些临时节点就被自动删除。临时节点通常用于标记执行了某些操作或某种状态。例如,在分布式锁的实现中,某个节点可以被创建为一个临时节点,以表明某个特定的锁已经被某个客户端持有。8.1.1ZooKeeper的基本概念8.1.2Zookeeper服务架构的组成8.1.3ZooKeeper的关键特性8.1.4ZooKeeper与其他组件的关系任务8.1ZooKeeper的基本概念和架构原理8.1.4.1ZooKeeper与HDFS的关系ZKFC作为一个ZooKeeper集群的客户端,用来监控NameNode的状态信息,ZKFC进程仅存在于部署NameNode的节点中。HDFSNameNode的Active和Standby节点均有ZKFC进程。HDFSNameNodeStandby通过ZooKeeper感知HDFSNameNodeActive的变化。一旦HDFSNameNodeActive宕机,HDFSNameNodeStandby就会切换为HDFSNameNodeActive。HDFSNameNode的ZKFC连接到ZooKeeper后,把主机名等信息保存到ZooKeeper中,即/hadoop-ha目录下的znode子目录中。创建znode目录的NameNode节点为主节点,另一个节点为备节点。HDFSNameNodeStandby通过ZooKeeper定时读取NameNode信息。8.1.4.1ZooKeeper与HDFS的关系当主节点进程发生异常而结束时,HDFSNameNodeStandby通过ZooKeeper感知到hadoop-ha目录下发生了变化,HDFS就会进行主备切换。ZooKeeper与HDFS的关系如图8.1.4所示,其中,实线箭头表示写入操作,虚线箭头表示监控操作。8.1.4
ZooKeeper与HDFS的关系8.1.4.1ZooKeeper与HDFS的关系ZKFC作为一个ZooKeeper集群的客户端,用来监控NameNode的状态信息,ZKFC进程仅存在于部署NameNode的节点中。HDFSNameNode的Active和Standby节点均有ZKFC进程。HDFSNameNodeStandby通过ZooKeeper感知HDFSNameNodeActive的变化。一旦HDFSNameNodeActive宕机,HDFSNameNodeStandby就会切换为HDFSNameNodeActive。HDFSNameNode的ZKFC连接到ZooKeeper后,把主机名等信息保存到ZooKeeper中,即/hadoop-ha目录下的znode子目录中。创建znode目录的NameNode节点为主节点,另一个节点为备节点。HDFSNameNodeStandby通过ZooKeeper定时读取NameNode信息。8.1.4.2ZooKeeper与YARN的关系在系统启动时,ResourceManager会尝试把选举信息写入ZooKeeper,第一个成功写入ZooKeeper的ResourceManager将被选举为ResourceManagerActive,另一个为ResourceManagerStandby。ResourceManagerStandby定时到ZooKeeper中监控ResourceManagerActive选举信息。一旦ResourceManagerActive异常结束,YARN就会进行主备切换。ResourceManagerActive还会在ZooKeeper中创建Statestore目录,用于存储Application相关信息。当ResourceManagerActive发生故障时,ResourceManagerStandby会从Statestore目录获取Application相关信息,恢复数据并升为ResourceManagerActive。ZooKeeper与YARN的关系如图8.1.5所示,其中,实线箭头表示写入操作,虚线箭头表示监控操作。8.1.4.2ZooKeeper与YARN的关系图8.1.5
ZooKeeper与YARN的关系8.1.4.3ZooKeeper与HBase的关系ZooKeeper要存储HBase元数据、HMaster地址,同时要接受RegionServer的注册。HMaster通过ZooKeeper感知各RegionServer的健康状况,以便进行控制与管理。HBase可以部署多对HMaster实现HA,与HDFSHA类似。当出现HMasterActive宕机时,HBase可立即实现主备切换,避免HBase发生单点故障问题。多对HMaster是指启用HBase的多实例特性,如启用HBase1、HBase2等。ZooKeeper与HBase的关系如图8.1.6所示,实线箭头表示写入操作,虚线箭头表示监控操作。图8.1.6
ZooKeeper与HBase的关系(1)ZooKeeper启动操作。(2)显示所有操作命令。(3)查看当前ZNode中包含的内容。(4)查看当前节点的详细数据。(5)创建节点。(6)修改节点数据值。ZooKeeper是一个开源的、分布式的、为分布式应用提供协调服务的Apache项目。ZooKeeper模型结构从整体上可以看作一棵树,每个节点称作一个ZNode。每个ZNode默认能存储1MB的数据,每个ZNode都可以通过其路径实现唯一标识。本任务在Linux客户端演示ZooKeeper在命令行界面中的基本操作。【任务描述】【关键步骤】任务8.2ZooKeeper客户端常用命令的用法
(7)删除节点。(8)查看当前机器角色。8.2.1ZooKeeper启动操作8.2.2显示所有操作命令8.2.3查看当前ZNode中包含的内容8.2.4查看当前节点的详细数据8.2.5创建节点8.2.6修改节点数据值8.2.7删除节点8.2.8查看当前机器角色任务8.2ZooKeeper客户端常用命令的用法8.2.1ZooKeeper启动操作进入ZooKeeper安装目录,命令如下:启动客户端,命令如下:按Enter键,若出现[zk:localhost:2181(CONNECTED)0],则表示启动成功,如图8.2.1所示。图8.2.1启动客户端8.2.1ZooKeeper启动操作8.2.2显示所有操作命令8.2.3查看当前ZNode中包含的内容8.2.4查看当前节点的详细数据8.2.5创建节点8.2.6修改节点数据值8.2.7删除节点8.2.8查看当前机器角色任务8.2ZooKeeper客户端常用命令的用法8.2.1ZooKeeper启动操作显示所有操作命令,命令如下:图8.2.2显示所有操作命令输出结果如图8.2.2所示。8.2.1ZooKeeper启动操作8.2.2显示所有操作命令8.2.3查看当前ZNode中包含的内容8.2.4查看当前节点的详细数据8.2.5创建节点8.2.6修改节点数据值8.2.7删除节点8.2.8查看当前机器角色任务8.2ZooKeeper客户端常用命令的用法8.2.3查看当前ZNode中包含的内容ZooKeeper的根目录是“/
”,使用如下ls命令可查看当前ZNode中包含的内容:输出结果如图8.2.3所示。图8.2.3查看当前ZNode中包含的内容ZooKeeper在大数据生态中,会将其他组件的数据保存在内部,形成一个个的节点,这里显示[storm,zookeeper,hbase],表示保存了Storm、ZooKeeper、HBase组件的数据。8.2.1ZooKeeper启动操作8.2.2显示所有操作命令8.2.3查看当前ZNode中包含的内容8.2.4查看当前节点的详细数据8.2.5创建节点8.2.6修改节点数据值8.2.7删除节点8.2.8查看当前机器角色任务8.2ZooKeeper客户端常用命令的用法8.2.4查看当前ZNode中包含的内容查看当前节点的详细数据,包含更新次数等,命令如下:输出结果如图8.2.4所示。图8.2.4查看当前节点的详细数据8.2.1ZooKeeper启动操作8.2.2显示所有操作命令8.2.3查看当前ZNode中包含的内容8.2.4查看当前节点的详细数据8.2.5创建节点8.2.6修改节点数据值8.2.7删除节点8.2.8查看当前机器角色任务8.2ZooKeeper客户端常用命令的用法8.2.5创建节点1)创建普通节点分别创建两个普通节点,建议将节点创建为属于用户自己的,命令如下:输出结果如图8.2.5所示。图8.2.5创建普通节点8.2.5创建节点获得节点/huawei_name的数据值,命令如下::图8.2.6获得节点/huawei_name的数据值输出结果如图8.2.6所示。获得节点/huawei_name/gender的数据值,命令如下:输出结果如图8.2.7所示。8.2.5创建节点2)创建临时节点在/huawei_name节点下创建一个临时节点/huawei_name/age,命令如下:图8.2.8创建临时节点输出结果如图8.2.8所示。在当前客户端查看创建的临时节点,命令如下:输出结果如图8.2.9所示。8.2.5创建节点退出当前客户端并重启客户端,命令如下:输出结果如图8.2.10所示。图8.2.10退出当前客户端并重启客户端再次查看根目录下的临时节点,显示已经被删除,命令如下:输出结果如图8.2.11所示。图8.2.11临时节点age不存在8.2.5创建节点3)创建序列节点序列节点即有顺序的节点。创建一个普通节点/huawei_name/day,命令如下:输出结果如图8.2.12所示。图8.2.12创建普通节点/huawei_name/day创建一个序列节点/huawei_name/day/eat,命令如下:8.2.5创建节点输出结果如图8.2.13所示。图8.2.13创建序列节点/huawei_name/day/eat创建一个序列节点/huawei_name/day/drink,命令如下:输出结果如图8.2.14所示。图8.2.14创建序列节点/huawei_name/day/drink8.2.5创建节点输出结果如图8.2.13所示。图8.2.13创建序列节点/huawei_name/day/eat创建一个序列节点/huawei_name/day/drink,命令如下:输出结果如图8.2.14所示。图8.2.14创建序列节点/huawei_name/day/drink8.2.5创建节点输出结果如图8.2.13所示。图8.2.13创建序列节点/huawei_name/day/eat创建一个序列节点/huawei_name/day/drink,命令如下:输出结果如图8.2.14所示。图8.2.14创建序列节点/huawei_name/day/drink8.2.5创建节点创建一个序列节点/huawei_name/day/play,命令如下:输出结果如图8.2.15所示。图8.2.15创建序列节点/huawei_name/day/play创建一个序列节点/huawei_name/day/sink,命令如下:输出结果如图8.2.16所示。图8.2.16创建序列节点/huawei_name/day/sink可见上述创建的4个序列节点分别带有序号0000000000、0000000001、0000000002、0000000003。8.2.1ZooKeeper启动操作8.2.2显示所有操作命令8.2.3查看当前ZNode中包含的内容8.2.4查看当前节点的详细数据8.2.5创建节点8.2.6修改节点数据值8.2.7删除节点8.2.8查看当前机器角色任务8.2ZooKeeper客户端常用命令的用法8.2.6修改节点数据值获得节点/huawei_name的原数据值,命令如下:输出结果如图8.2.17所示。从图8.2.17中可以看出,节点/huawei_name的原数据值为“Tom”。现修改节点/huawei_name的数据值为“Jack”,命令如下:输出结果如图8.2.18所示。图8.2.17节点/huawei_name的原数据值为“Tom”图8.2.18节点/huawei_name的数据值被修改为“Jack”8.2.6修改节点数据值获得节点/huawei_name的原数据值,命令如下:输出结果如图8.2.17所示。从图8.2.17中可以看出,节点/huawei_name的原数据值为“Tom”。现修改节点/huawei_name的数据值为“Jack”,命令如下:输出结果如图8.2.18所示。图8.2.17节点/huawei_name的原数据值为“Tom”图8.2.18节点/huawei_name的数据值被修改为“Jack”从图8.2.18中可以
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 人事档案管理法律协议
- 企业总部高管劳动合同
- 水利泵站机电设备维保技师(中级)考试试卷及答案
- 石材安装劳务协议书
- 国际仲裁条款范例
- 北京考研复试调剂协议书班
- 快递代理点退网协议书
- 猎头业务双向合作协议书
- 代收款代付协议书
- 固废安置协议书
- 2025年浙江省员额检察官遴选笔试试题及答案
- 陕西演艺集团招聘笔试题库2026
- 道路运输车辆驾驶与安全手册
- 老年人肌肉减少症体力活动管理专家共识临床解读总结2026
- 营养学第六章 矿物质
- 关于进一步激励干部在急难险重任务中担当作为有关具体措施的通知
- 建筑公司生产安全事故风险评估报告
- 《青蛙卖泥塘》课本剧
- GB/T 28037-2011信息技术投影机通用规范
- TSG07-2019压力管道设计质量保证手册
- 颈动脉超声检查课件
评论
0/150
提交评论