从Hadoop的0.23版本号,MapReduce进行了全面的彻底的变革。也就是我们今天看到的MapReduce 2.0或者我们也能够叫它YARN.
老版本号的JobTracker有两个基本的功能:资源管理、任务调度与监控。
Yarn的思路就是把这两个功能进行拆分,分别交给两个独立进程进行维护。这两个进程各自是ResourceManager进程和ApplicationMaster进程。
ApplicationMaster进程是每一个Job一个。
RM和NM两种角色构成了Hadoop集群的计算框架。
RM对全部Job的资源申请具有终于的决定权。
ApplicationMaster进程负责从RM获得资源,并与NM一起运行监控tasks.
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编译再来看看新的集群方案可以被执行。
版权声明:本文博客原创文章,博客,未经同意,不得转载。