前言
hadoop2.x对于计算框架进行改变,这里作一个对比,方便深刻的了解mapreduce的运行机制,从而为后面的计算优化作好铺垫。java
架构图

hadoop 1.x

hadoop 2.x
架构总结

优点
Yarn 框架相对于老的 MapReduce 框架什么优点呢?咱们能够看到:编程
- 这个设计大大减少了 JobTracker(也就是如今的 ResourceManager)的资源消耗,而且让监测每个 Job 子任务 (tasks) 状态的程序分布式化了,更安全、更优美。
- 在新的 Yarn 中,ApplicationMaster 是一个可变动的部分,用户能够对不一样的编程模型写本身的 AppMst,让更多类型的编程模型可以跑在 Hadoop 集群中,能够参考 hadoop Yarn 官方配置模板中的 mapred-site.xml 配置。
- 对于资源的表示之内存为单位 ( 在目前版本的 Yarn 中,没有考虑 cpu 的占用 ),比以前以剩余 slot 数目更合理。
- 老的框架中,JobTracker 一个很大的负担就是监控 job 下的 tasks 的运行情况,如今,这个部分就扔给 ApplicationMaster 作了,而 ResourceManager 中有一个模块叫作 ApplicationsMasters( 注意不是 ApplicationMaster),它是监测 ApplicationMaster 的运行情况,若是出问题,会将其在其余机器上重启。
- Container 是 Yarn 为了未来做资源隔离而提出的一个框架。这一点应该借鉴了 Mesos 的工做,目前是一个框架,仅仅提供 java 虚拟机内存的隔离 ,hadoop 团队的设计思路应该后续能支持更多的资源调度和控制 , 既然资源表示成内存量,那就没有了以前的 map slot/reduce slot 分开形成集群资源闲置的尴尬状况。
这里slot是计算资源的一个逻辑单位,原来slot基本上按照cpu来分配的,后面的版本是按照内存来处理的。安全