YARN简短的建筑

从Hadoop的0.23版本号,MapReduce进行了全面的彻底的变革。也就是我们今天看到的MapReduce 2.0或者我们也能够叫它YARN.

老版本号的JobTracker有两个基本的功能:资源管理、任务调度与监控。

Yarn的思路就是把这两个功能进行拆分,分别交给两个独立进程进行维护。这两个进程各自是ResourceManager进程和ApplicationMaster进程。

ApplicationMaster进程是每一个Job一个。

RM和NM两种角色构成了Hadoop集群的计算框架。

RM对全部Job的资源申请具有终于的决定权。

ApplicationMaster进程负责从RM获得资源,并与NM一起运行监控tasks.

YARN简短的建筑

RM有两个基本的组件:Sheduler、ApplicationManager

Sheduler负责给执行的程序分配资源(存储容量、队列等)。Sheduler仅仅管调度,无论应用程序的状态。即便是应用程序由于种种原因失败了。也和他没有关系。Sheduler依据每一个程序对资源的申请来进行调度。

resourceContainer是一个新抽象的概念,它是内存、CPU、磁盘、网络等资源的抽象集合,第一版仅仅支持了内存。

Sheduler以resourceContainer为单位进行资源分配。

Scheduler在设计上採用了插件的策略,CapacityScheduler 和FairScheduler
就是Scheduler的两个插件。

类似于Eclipse,扩展起来easy吧?

CapacityScheduler 支持分层次队列,该功能使得它能够分配很多其它的集群资源(分配那些未来会被释放的资源)

ApplicationsManager 负责接收提交的任务,找到运行任务的ApplicationMaster
的容器,在容器失败的情况下,对容器进行重新启动。

NodeManager 是个client程序,提供ApplicationsManager
执行须要的容器,并对所在机器的资源(CPU、内存、磁盘、网络)进行监控,并把监控结果汇报给 ResourceManager/Scheduler.

ApplicationMaster 从Scheduler获得资源。跟踪任务的状态和运行进度。

MRV2与老版本号的稳定版的MR兼容性,旧的版本号MR编译再来看看新的集群方案可以被执行。

版权声明:本文博客原创文章,博客,未经同意,不得转载。

上一篇:POJ1159 - Palindrome(区间DP)


下一篇:Python day8常用格式化format类2