• 大数据组件RPC/大数据组件和zookeeper关系思考总结


    RPC总结

    kafka 模仿netty自己实现
    hbase/hdfs 用netty
    flink/spark 老版本 akka 新版本 netty

    hadoop 是大量数据传输用http,常规远程调用用hadoop RPC

    主从NameNode的镜像备份和合并的数据传输通过http形式,大量数据传输用http
    简单的方法调用用hadoop RPC,如获取文件契约(类似获取文件的写锁)
    
    额外简单提及一下:
    NameNode不会直接操作DataNode,主要通过DataNode主动通过周期性发送心跳给NameNode,
    然后NameNode返回响应指令给DataNode。
    某个client或dataNode想访问某个dataNode,都需要先和NameNode通信获取主机名端口号。
    DataNode启动后开放一个(RPC)socket服务,等待别人调用
    
    DataNode写流程
    DataNode对NameNode心跳保持文件契约和续约
    pipeline数据管道流程,减小客户端压力
    有数据容错,收到数据传输成功的ack,才会删除数据。不然重试
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    Zookeeper关系

    凡是涉及到主从的都是需要使用zookeeper来实现的

    hadoop
    Zookeeper负责NameNode主从选举和切换,DN同时向NN们回报block清单

    kafka
    1 zk负责主从副本的选举,记录元数据信息
    2 主副本监听zk元数据的变化(即如后续用户修改了分区数量等问题)并作更新,然后从副本做元数据同步

    kafka 主副本不需要动态修改元数据信息。因为分区数量,副本数量多少等问题是kafka启动时就设定好的,是静态的不是动态的,数据只需要根据hash等规则固定的打散写入不同的副本中即可

    hbase
    1 zk负责master主从选举,记录元数据信息
    2 hbase 和 kafka 不一样,因为涉及数据的动态文件合并/切分/GC等,元数据不是固定不变的。所以hbase需要加入master角色来负责做数据的负载均衡等问题,并更新到zookeeper中。
    3 master不和RegionServer集群通讯,rs集群和zk汇报信息,master只监听zk子节点的变化即可。即如集群添加一个rs,子节点会增加一个,master则能够感知到 (这点和kafka主副本功能类似)

    现象总结:单主多从,单主节点宕机,也就是当Master不存在时,依然支持数据的读写。但是 1 不能再建表,修改表结构 2 不能再处理如region的切分等造成的元数据变动

  • 相关阅读:
    2022 年杭电多校第十场补题记录
    机器人路径规划:基于A*算法的机器人路径规划(提供Python代码)
    YOLOv5 添加 OTA,并使用 coco、CrowdHuman数据集进行训练。
    【react】父组件获取子组件实例对象/方法
    企业电子招投标采购系统——功能模块&功能描述+数字化采购管理 采购招投标
    gitlab安装和使用
    一文看懂ELK日志查看安装配置(超详细)
    接口自动化测试完整版(文档+视频)
    Golang基础 变量与常量
    LeetCode——面试题 01.02.判定是否互为字符重排
  • 原文地址:https://blog.csdn.net/weixin_40503364/article/details/125889737