日期:2014-05-16 浏览次数:20864 次
MapReduce?在hadoop 0.23版本中经历了一次大修改。现在叫做MapReduce 2.0 (MRv2) 或者 YARN。
JobTracker在MRv2 中被拆分成了两个主要的功能使用守护进程执行:资源管理和任务的调度与监视。这个想法创建一个全局的资源管理(global ResourceManager (RM))和为每个应用创建一个应用管理(ApplicationMaster (AM))。一个应用可以使一个MR jobs的经典场景或者是一串连续的jobs。
?
ResourceManager?和每个slave节点的NodeManager (NM)构成一个资源估算框架。ResourceManager 对在系统中所有应用的资源分配拥有最终的最高级别仲裁权。
?
实际上每个应用的ApplicationMaster(AM)是资源估算框架具体用到的lib包,被用来和ResourceManager 进行资源谈判,并且为NodeManager执行和监控task。
?
?
ResourceManager?拥有两个主要的组件:调度器(Scheduler) 和资源管理器(ApplicationsManager)
?
调度器负责为正在执行的各种各样的熟悉容量约束和队列的?applications subject 分配资源。感觉上调度器只是纯粹的调度程序而并不去监视和追踪application执行的状态。所以它并不会去重启失败的任务或处理失败的application或者是硬件错误引起的问题。调度器的调度程序是基于application要求的资源来执行的。调度器也不会基于一个资源容器(内存,CPU,硬盘,网络带宽)的概念来调度,在目前的版本里,它只是基于内存的调度。
?
调度器支持可插拔的策略负责对集群中各种各样的队列和应用进行资源分配。在当前版本中Map-Reduce的调度器,例如CapacityScheduler 和?FairScheduler 是一些可插拔的例子。
?
CapacityScheduler?支持hierarchical queues,所以它可以根据预判来分配集群资源。
?
ApplicationsManager?负责接收?job-submissions,与第一个container谈判用哪个ApplicationMaster 来执行application ,为失败的ApplicationMaster ?container提供重启服务。
?
NodeManager?是每个节点的代理对container负责,监控它们的资源使用情况(内存,CPU,硬盘,网络带宽),给?ResourceManager/Scheduler提交报告。
?
每个应用的ApplicationMaster?负责与调度器谈判资源占用的containers数量,追踪状态和监控进程。
?
MRV2?与 之前版本(hadoop-0.20.205)保持兼容。这意味着所有的job只需要重新编译而不做任何修改就可以在MRv2 上运行。
?