重构根本的思想是将?JobTracker?两个基本的功能分离成单独的组件,这两个功能是资源管理和任务调度?/?监控。新的资源管理器全局管理全部应用程序计算资源的分配,每个应用的?ApplicationMaster?负责对应的调度和协调。
一个应用程序无非是一个单独的传统的?MapReduce?任务或者是一个?DAG(?有向无环图?)?任务。
ResourceManager?和每一台机器的节点管理server能够管理用户在那台机器上的进程并能对计算进行组织。
新的?Hadoop?MapReduce?框架(Yarn)架构
上图中?ResourceManager?支持分层级的应用队列。这些队列享有集群一定比例的资源。
从某种意义上讲它就是一个纯粹的调度器,它在执行过程中不正确应用进行监控和状态跟踪。相同,它也不能重新启动因应用失败或者硬件错误而执行失败的任务。
ResourceManager?是基于应用程序对资源的需求进行调度的?;?每个应用程序须要不同类型的资源因此就须要不同的容器。资源包含:内存,CPU,磁盘,网络等等。
能够看出,这同现?Mapreduce?固定类型的资源使用模型有显著差别,它给集群的使用带来负面的影响。资源管理器提供一个调度策略的插件。它负责将集群资源分配给多个队列和应用程序。调度插件能够基于现有的能力调度和公平调度模型。
上图中?NodeManager?是每一台机器框架的代理。是执行应用程序的容器,监控应用程序的资源使用情况?(CPU,内存,硬盘,网络?)?而且向调度器汇报。
每个应用的?ApplicationMaster?的职责有:向调度器索要适当的资源容器,执行任务。跟踪应用程序的状态和监控它们的进程,处理任务的失败原因。
首先client不变,其调用?API?及接口大部分保持兼容。这也是为了对开发使用者透明化,使其不必对原有代码做大的改变。可是原框架中核心的?JobTracker?和?TaskTracker?不见了。取而代之的是?ResourceManager,?ApplicationMaster?与?NodeManager?三个部分。
详解这三个部分:
首先?ResourceManager?是一个中心的服务,它做的事情是调度、启动每个?Job?所属的?ApplicationMaster、另外监控?ApplicationMaster?的存在情况。细心的读者会发现:Job?里面所在的?task?的监控、重新启动等等内容不见了。这就是?AppMst?存在的原因。ResourceManager?负责作业与资源的调度。
接收?JobSubmitter?提交的作业,依照作业的上下文?(Context)?信息。以及从?NodeManager?收集来的状态信息,启动调度过程,分配一个?Container?作为?App?Mstr
NodeManager?功能比較专一。就是负责?Container?状态的维护,并向?RM?保持心跳。
ApplicationMaster?负责一个?Job?生命周期内的全部工作,相似老的框架中JobTracker。但注意每个?Job(不是每一种)都有一个?ApplicationMaster。它能够执行在?ResourceManager?以外的机器上。
1.?这个设计大大减小了?JobTracker(也就是如今的?ResourceManager)的资源消耗,而且让监測每个?Job?子任务?(tasks)?状态的程序分布式化了,更安全、更优美。
2.?在新的?Yarn?中。ApplicationMaster?是一个可变更的部分,用户能够对不同的编程模型写自己的?AppMst,让很多其它类型的编程模型能够跑在?Hadoop?集群中。能够參考?hadoop?Yarn?官方配置模板中的?mapred-site.xml?配置。
3.?对于资源的表示以内存为单位?(?在眼下版本号的?Yarn?中。没有考虑?cpu?的占用?),比之前以剩余?slot?数目更合理。
4.?老的框架中,JobTracker?一个非常大的负担就是监控?job?下的?tasks?的执行状况,如今,这个部分就扔给?ApplicationMaster?做了,而?ResourceManager?中有一个模块叫做?ApplicationsMasters(?注意不是?ApplicationMaster),它是监測?ApplicationMaster?的执行状况,假设出问题,会将其在其它机器上重新启动。
5.?Container?是?Yarn?为了将来作资源隔离而提出的一个框架。这一点应该借鉴了?Mesos?的工作,眼下是一个框架,只提供?java?虚拟机内存的隔离?,hadoop?团队的设计思路应该兴许能支持很多其它的资源调度和控制?,?既然资源表示成内存量,那就没有了之前的?map?slot/reduce?slot?分开造成集群资源闲置的尴尬情况。
新旧?Hadoop?脚本?/?变量?/?位置变化表
新旧?Hadoop?框架配置项变化表
亲。下一博客。就会介绍yarn框架的搭建,耐心等待。
hadoop备战:yarn框架的简单介绍(mapreduce2)
原文:https://www.cnblogs.com/ldxsuanfa/p/10744176.html