Hadoop架构学习

HDFS HA中,设计了两个NN,一个处于活跃状态,一个处于待命状态,由Zookeeper进行状态监测、控制和切换,由于待命NN需要时刻准备接替活跃状态NN的工作,所以需要待命NN与活跃NN实时保持元数据的一致性,所以,活跃状态NN和待命状态NN会共用一份共享存储系统,实时同步EditLog信息,而映射表信息的同步是通过DN同时向活跃状态NN和待命状态NN汇报的方式实现的。

HDFS Federation,解决资源控制和隔离的作用。通过设计多个独立的NN(2.0之前,单NN在启动50G元数据、映射信息等信息的HDFS时,需要用时30分钟到2小时,整体性能受限于单NN)实现水平扩展,并且各NN可分别进行命名空间和块的管理,不需要彼此协调。NN下层的DN是可以共用的。

对于Federation多个命名空间的管理方面,Federation是通过客户端挂载表(即全局命名空间)的方式进行统一管理的,即将子命名空间挂载到总命名空间下,以进行访问和管理。

Federation增强了HDFS集群扩展性,而不受内存限制;提高了性能和数据吞吐量;提供了良好的隔离性,使不同业务数据交由不同的NN进行管理,降低了各应用之间的相互影响。

如果需要提供HA特性,又希望具有很好的扩展性和性能,则需要HA和Federation配合,即为Federation管理下的每个NN都提供HA。

Hadoop2.0前:由于只有JobTracker进行任务管理,导致任务过重(资源管理、任务调度、任务监控),所以在任务多时,内存开销极大,上限只能到4k个结点。

Hadoop2.0以后:

YARN的设计思路,在Master端将原JobTracker的资源管理工作交给ResourceManager,将原JobTracker的任务调度和任务监控工作交给ApplicationManager执行;在Slave端,将原TaskTracker的工作交给NodeManager完成。所以Yarn的工作范围是负责资源管理,而不再参与任务调度与监控,只作资源管理,不再参与计算。而在Hadoop2.0以后,MR不再是资源管理框架,而是纯粹的计算框架。

ResourceManager:全局资源管理器,包括Scheduler和Applications Manager两个组件。负责处理客户端请求;由Applications Manager负责启动/监控ApplicationManager;监控NM;Scheduler进行资源分配与调度。Scheduler在接收到ApplicationManager发出的资源申请后,会以“容器”而不再是slot的形式,将集群资源分配给AM。容器的分配和选择会参考就近原则,使计算和数据“最近”,

ApplicationManager:ApplicationManager同样运行在ResourceManager分配的容器中,负责为应用程序向ResourceManager申请资源并分配给内部任务。ApplicationManager在申请到资源后,会进行二次分配(给Map和Reduce);对NodeManager保持通信,控制任务启停等,进行任务调度、监控与容错;AM还需要定时向RM发送心跳信息,通报作业状态。作业完成时通知RM,注销容器,完成任务周期。

NodeManager:单节点上的资源管理,负责容器生命周期的管理,监控每个容器内资源的使用情况,跟踪节点健康状况,以心跳方式与RM保持通信,向RM汇报作业资源使用情况及容器的运行状态;处理来自ResourceManager和ApplicationManager的命令,如AM对容器内任务的启停操作等。NM管容器、AM管容器里的任务,这点需要明确。

扫描二维码关注公众号,回复: 3434883 查看本文章

YARN的部署与Hadoop集群统一部署,RM与NN在同一节点、AM和NM与DN在同一节点部署、NM与DN同一节点部署。

执行过程:

1.用户将应用程序向YARN提交,包括启动AM的命令、AM程序以及用户程序;

2.RM接收并处理客户端请求,为应用程序分配一个容器以启动AM;

3.AM创建完成后,向RM注册;

4.AM以轮询的方式向RM申请资源;

5.RM以容器形式根据“申请”分配资源;

6.AM在容器中进行资源的二次分配,将运行应用程序的命令写入脚本并发送到容器,容器通过该脚本启动任务;

7.容器中的任务状态先向NM反馈,再由NM代理向AM汇报任务状态和进度;

8.任务完成后,AM向RM注销自己和相关资源。

YARN框架是一个纯粹的资源管理框架,其中的AM是可替换的,所以可以为YARN定制针对不同类型计算的AM(如Storm、Spark等),使YARN可以为不同类型的计算框架提供资源调度支撑。

Yarn的目标是实现“一个集群多个框架”的合谐相处和各个框架的弹性伸缩。这里的框架是指计算框架,在同一个集群上,同时支撑流计算、内存计算等,而这些计算框架的资源调度使用Yarn进行统一管理与协调,避免资源管理混乱。

猜你喜欢

转载自blog.csdn.net/junweishiwo/article/details/82877633
今日推荐