Zookeeper
- 核心: 不用开发, 要会用, 架构设计
- 定义:分布式协调服务组件 「帮别人解决问题的组件」
- 功能1:- 辅助选举(HA高可用–对于主从架构集群,通过设置备份节点从而解决单点故障)> 两个节点同时到ZK中争抢创建一个临时节点(生命周期随会话), 失败的节点监听active节点- HDFS中:有2个NameNode,一个是active(选举),一个是standby> Hadoop中的高可用机制需要zookeeper协调主节点(namenode)哪一个工作,哪一个standby- YARN中:有两个ResourceManager,一个是active(选举),一个是standby- Spark中:StandAlone也需要的主节点(Master)和从节点(worker),因此有2个Master,需要选举active- Hbase、Kafka…也如此
- 功能2:- 存储元数据> HDFS分布式以blk块(128M)的形式存储在各个DataNode中,保存数据信息的数据(数据多大、类型、分成了几块、存储位置等)称为「元数据」> > 「元数据」存储在内存中,但因为内存不稳定(故障、关机清空)只能用于临时存储(保存最新最全的那一份),不用长时间且作为唯一存储形式,因此元数据会以不同形式:存储在不同的地方- 以文件形式:存在 HDFS fsimage(上次持久化在磁盘中的内存镜像文件)+edits(内存操作日志)=内存中最新最全的元数据(保存在NameNode中,定期通过SecondaryNameNode合并后持久化到磁盘中), 实际上这个文件(最新最全的元数据)会被加载到内存
思考🤔:没有SSN行不行回答:可以,NN启动时也会合并镜像和日志,但没有SSN的帮助(更新镜像)镜像不更新的情况下,日志文件累增,会影响nn的启动速度NN负责3件事:管理所有从节点、负责管理元数据、负责接收客户端请求
- RDBMS(MySQL):,Sqoop、HIVE(MySQL)、Oozie、Hue的元数据存在关系型数据库中> 用RDBMS存储元数据的软件,一般不是分布式,请求量相对较小- ZooKeeper: Hbase、Kafka> 用ZK存储元数据的软件,一般是分布式软件,请求并发量比较高,因为只有分布式才能扛住高并发 - ZK怎么保证自己不出问题?(软件出问题或者机器出问题)- ZK每个节点上存储的数据内容都是一致的 - 如何实现的? ZK是一种特殊的主从架构—「公平分布式架构」 主节点(leader)负责写,主节点将所有的数据广播给从节点(同步),保证所有节点数据一致- 如果主节点故障了呢? 每个节点都有权利选举成为leader,不需要额外的主节点作Standby 因为ZK的每个节点都可以接收读写请求- 因此ZK只能作为一个小数据的存储系统
思考🤔:ZK的个数能不能是偶数个
可以,但最好是奇数,选举和机器个数的奇偶数没有关系,投票超过半数即可结束
关于zookeeper想了解的可以留言哦~
本文转载自: https://blog.csdn.net/iyak78/article/details/122116722
版权归原作者 敲代码的羊 所有, 如有侵权,请联系我们删除。
版权归原作者 敲代码的羊 所有, 如有侵权,请联系我们删除。