您的位置:首页 > 大数据 > 云计算

云计算(二十四)- Apache Hadoop NextGen MapReduce (YARN)

2013-12-28 19:27 471 查看
前面学习了第一代的MR,今天开始学习一下YARN,MR部分的源码以及常用的几个demo(join,二次排序,自定义inputfomat等)会在以后的博客中介绍,相关的优化也会在其中实现,该分析应该会在学习完大部分hadoop生态圈后进行深入的学习。下面开始正题:

MapReduce在hadoop-0.23中已经进行了升级,这个升级被我们成为MapReduce 2.0 (MRv2)或者是YARN。

MRv2的基本思路就是将原来的JobTracker分成两个部分:资源管理进程和job调控监控进程。这个改变会产生一个全局的ResourceManager
(RM)和为每一个应用产生一个ApplicationMaster (AM)。其中的应用可以是一个典型的MR
job也可以是一个DAG。

ResourceManager
和每一个Slave节点,NodeManager形成了一个数据计算框架。ResourceManager决定了系统中所有资源的调配。

每一个应用的ApplicationMaster负责与ResourceManager谈判获取资源并且和NodeManager一起去执行监控任务的。



ResourceManager包括两个主要组件:Scheduler 和ApplicationsManager
Scheduler是负责分配资源给各种的应用,包括容量和队列等。他只是一个调度器,不会监控跟踪应用的状态。另外他不保证重启因为应用运行失败或者硬件失败的任务。Scheduler调度功能是基于应用的资源需求的。它基于resourceContainer的抽象,它包含元素,如内存、cpu、磁盘、网络等等。在第一个版本中,只有内存被支持。
Scheduler采用插件式管理,负责在众多队列和应用中分隔资源。当前Map-Reduce调度器比如CapacityScheduler
和FairScheduler可以作为例子。
CapacityScheduler支持hierarchical
queues,允许具有预见性的集群资源共享。
ApplicationsManager负责接受提交的job,决定执行程序应用的第一个容器为ApplicationsManager,并且提供失败后的服务重启功能
NodeManager负责每个节点上的资源管理,负责向ResourceManager/Scheduler报告containers的状态和监控资源使用情况,这些也将想RM汇报。
每一个应用的ApplicationMaster都要负责和Scheduler协商获取资源,跟踪监控内部运行的状态。
MRV2
具有版本兼容性,之前所有的Map-Reduce还是可以在MRv2 运行,只需要重新编译一下

细节可以参考:http://hortonworks.com/hadoop/yarn/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: