zookeeper

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想了解的可以留言哦~

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
THE END
分享
二维码
< <上一篇
下一篇>>