Hadoop2 运行机制简介

1. Resource Manager,Application Master 和 Node Manager

Hadoop2 运行机制简介_第1张图片
在Hadoop2中将JobTracker两个主要的功能分离成单独的组件,这两个功能是资源管理(Resource Manager)和任务调度/监控(Application Master)。
新的资源管理器全局管理所有应用程序计算资源的分配,每一个应用的 ApplicationMaster 负责相应的调度和协调。一个应用程序无非是一个单独的传统的 MapReduce 任务或者是一个 DAG( 有向无环图 ) 任务。

事实上,每一个应用的ApplicationMaster是一个详细的框架库,它结合从ResourceManager获得的资源和 NodeManager 协同工作来运行和监控任务。

在上图中ResourceManager支持分层级的应用队列,这些队列享有集群一定比例的资源。从某种意义上讲它就是一个纯粹的调度器,它在执行过程中不对应用进行监控和状态跟踪。同样,它也不能重启因应用失败或者硬件错误而运行失败的任务。

ResourceManager 是基于应用程序对资源的需求进行调度的 ; 每一个应用程序需要不同类型的资源因此就需要不同的容器。资源包括:内存,CPU,磁盘,网络等等。可以看出,这同现 Mapreduce 固定类型的资源使用模型有显著区别,它给集群的使用带来负面的影响。资源管理器提供一个调度策略的插件,它负责将集群资源分配给多个队列和应用程序。调度插件可以基于现有的能力调度和公平调度模型。

在上图中 NodeManager 是每一台机器框架的代理,是执行应用程序的容器,监控应用程序的资源使用情况 (CPU,内存,硬盘,网络 ) 并且向调度器汇报。

在上图中,每一个应用的 ApplicationMaster的职责有:向调度器索要适当的资源容器,运行任务,跟踪应用程序的状态和监控它们的进程,处理任务的失败原因。

2. 调用顺序呢

Hadoop2 运行机制简介_第2张图片
(1)客户端的Map Reduce程序通过hadoop shell提交到hadoop的集群中
(2)程序会通过RPC通信将打成jar包的程序的有关信息传递给Hadoop集群中RM(ResourceManager),可称为领取Job ID的过程
(3)RM将提交上来的任务分配一个唯一的ID,同时会将run.jar的在HDFS上的存储路径发送给客户端.
(4)客户端得到那个存储路径之后,会相应的拼接出最终的存放路径目录,然后将run.jar分多份存储在HDFS目录中,默认情况下备份数量为10份.可配置
(5)客户端提交一些配置信息,例如:最终存储路径,Job ID等给RM
(6)RM会将这些配置信息放入一个队列当中,供调度器调用.至于调度的算法,不必深究
(7)NM(NodeManager)和RM是通过心跳机制保持着通信的,NM会定期的向RM去领取任务
(8)RM会在任意的一台或多台的NM中,启动任务监控的进程Application Master.用来监控其他NM中YARN Child的执行的情况
(9)NM在领取到任务之后,得到信息,会去HDFS的下载run.jar.然后在本地的机器上启动YARN Child进程来执行map或者reduce函数.map函数的处理之后的中间结果数据会放在本地文件系统中的
(10)在结束程序之后,将结果数据写会HDFS中

一个Job从提交到执行的过程差不多如上所述。

参考链接
1. http://my.oschina.net/codeWatching/blog/345374#OSC_h2_3

其他

微信公众号:CodingRush 分享数据挖掘、分布式机器学习、编程等相关知识。
CodingRush

你可能感兴趣的:(basic)