Hadoop - HDFS和Yarn相似之处

Hadoop总体包括三块内容,HDFS、Yarn、MapReduce计算框架。其中HDFS是Hadoop底层存储文件系统,Yarn作为资源调度器,上面可以运行Hadoop MapReduce,Flink,Spark,TensorFlow等等计算框架。今天主要记录一下我认为的HDFS和Yarn的相似的地方,便于自己以后的回顾。

HDFS和Yarn架构相似点

HDFS和Yarn都使用了主从架构设计,在HDFS中,主节点是NameNode,从节点是DataNode.在Yarn资源管理器中,主节点是ResourceManager,从节点是NodeManager.
HDFS NameNode主要维护整体文件系统的命名空间和相关元数据,比如整个文件系统有哪些文件,以及文件对应哪些数据块。同时在内存中也会保存着文件块对应在哪些DataNode上面存储,这部分信息是在DataNode启动之后,通过心跳传递过来的。DataNode存储着数据块,同时会定时向NameNode发送心跳信息,比如数据库汇报等。同时会从NameNode中领取相关指令进行执行,比如创建,删除等。
Yarn ResourceManager作为Yarn主节点,管理整个集群资源的调度等,使用Container作为资源调度单位。Container包含了CPU和内存,ResourceManager中通过各种服务与NodeManager,ApplicationMaster进行通信。比如ApplicationMasterService,ResourceTrackerService,AdminService.同时在ResourceManager中有调度器,比如FIFOScheduler,Fair Scheduler,容量调度器。默认是容量调度器,NodeManager中维护了其Container的状态,以及应用使用的Container.这些信息都会通过心跳发送到ResourceManager中。

不同组件通信协议

HDFS NameNode和Client,DataNode都是通过相关协议进行通信的,Client和NameNode进行通信使用的是ClientProtocol这个接口,DataNode和NameNode则是通过DataNodeProtocol协议接口进行通信。
Yarn ResourceManager和ApplicationMaster,NodeManager,Admin等通信也是通过相应的协议来进行通信的,ResourceManager和ApplicationMaster通信的协议接口是ApplicationMasterProtocol,NodeManager和ResourceManager通信的协议接口是ResourceTracker,管理员与NameNode进行通信的协议接口是AdminProtocol。
HDFS中不同组件和Yarn中不同组件进行通信,都是通过各自定义的协议接口来进行通信的。以后再设计相应系统的时候,可以参考这种思想,不同组件,通过协议进行通信。

Yarn监控器和状态机

在Yarn中,对于ApplicationMaster,以及NodeManager,都有相应的监控器,AMLivelinessMonitor监控ApplicationMaster的生命活动情况,如果在一定时间内没有发送心跳(默认十分钟),则任务该ApplicationMaster 运行失败 ,上面的Container置为失败。NMLivelinessMonitor监控NodeManager是否存活,如果一个NodeManager在一定时间内没有发送心跳,默认十分钟,则任务他死掉了。
在ResourceManager中,对应用,NodeManager,以及Container都维护相应的状态机。分别是RMApp,RMAppAttempt,RMContainer,RMNode.
RMApp:用于维护一个Application的生命周期;
RMAppAttempt:用于维护一次试探运行的生命周期,一个RMApp可能对应多个RMAppAttempt
RMContainer:用于维护一个已分配的资源最小单位Container的生命周期;
RMNode:用于维护一个NodeManager的生命周期;

©️2020 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页