大数据面试必问-Spark、MR任务是如何提交集群资源如何管理分配

大数据
后台-插件-广告管理-内容页头部广告(手机)

Spark、MR任务执行过程,不管是那种应用的执行,都离不开资源分配。这类问题我们可以先从资源分配这个角度进行阐述,这个角度搞清楚了,相信在面试过程中很多问题,都能迎刃而解。

我们以资源调度工具Yarn为例,先简单了解下yarn的前世今生,在hadoop1.x的年代,资源管理是靠JobTracker来完成,JobTracker 主要完成资源管理和作业调度/监控,那这种设计方式缺点显而易见:单点故障,任务过重。yarn的设计就是把这些任务角色剥离,分散到不同的进程中去单独部署处理。

那么yarn到底是有什么组成的?通俗的话来讲,分为以下几个

1)资源管理的单位:Container,他是Yarn中资源的抽象,把节点上的资源做了一个封装,目前只有内存和CPU。

2)资源管理的老大:ResourceManager 简称RM,他是负责系统中所有可用资源的管理和调度。那我集群中有多少资源可以用,是谁告诉ResourceManager 的呢?那就是第二个角色NodeManager。

3)资源管理的小兵:NodeManager,他分布在各个计算节点上,定时向ResourceManager 汇报节点的可用资源如cpu,内存(Container)。监控每个Container 杀死。

4)我们提交的任务的管理者:ApplicationMaster简称AM,我们提交的每一个任务都会对应一个AM,他负责这个作业的资源申请(和ResourceManager申请),作业监控,作业容错等。

了解了上面几个角色的职责,那么我们的任务是如何提交的就比较好理解了。我们可以分为以下5个步骤。

1:用户将应用程序提交到ResourceManager上。

2:ResourceManager与某个NodeManager通信为当前程序的ApplicationMaster申请一个Container。申请完成后,ApplicationMaster在此容器中启动。

3:ApplicationMaster与ResourceManager通信,申请我们程序所需要的资源。

4:资源申请到之后,ApplicationMaster与NodeManager通信,在分配资源的节点上启动对应的任务。

5:任务完成后,ApplicationMaster向ResourceManager注销。应用程序结束。

再来看一下Apache Hadoop YARN官方文档上的工作示意图,是不是就很明确啦?

 
后台-插件-广告管理-内容页尾部广告(手机)
标签:

评论留言

我要留言

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。