对于Hadoop1.0和Hadoop2.0的区别网上有很多资料,其中大部分是在对比MapReduce1.0和YARN,指出YARN的诞生很好的解决了MRv1存在的问题。


但如果再引入MapReduce2.0很多人就产生了疑惑,难道YARN不就是MRv2吗?

其实YARN和MRv2是两个独立存在的个体,而MRv2和MRv1又具有相同的编程模型。实际上Hadoop2.0的改进是依托于MRv2和YRAN的共同作用。


今天就给对比介绍一下MapReduce1.0、MapReduce2.0和YARN之间的联系。


MapReduce1.0

MapReduce 1.0由两部分组成:编程模型和运行时环境。基本编程模型是将问题抽象成Map和Reduce两个阶段;运行环境由两类服务组成:JobTracker和TaskTracker,JobTracker负责资源管理和所有作业的控制,而TaskTracker负责接收来自JobTracker的命令并执行它。HDFS和MapReduce组成Hadoop 1.0。


Hadoop1.0 的缺陷


扩展性差:JobTracker兼备资源管理和作业控制两个功能,当MR任务非常多时,造成很大的内存开销 ,严重制约了整个集群的可扩展性。

可靠性差:JobTracker存在单点故障,JobTracker出现问题将导致整个集群不可用。

资源利用率低:资源无法合理分配,导致有效利率低。

无法支持多种计算框架:Hadoop 1.0只支持MapReduce这种离线批处理计算模式,无法支持内存计算、流式计算、迭代式计算等。


MapReduce2.0

MRv2与MRv1相比编程接口、数据处理引擎完全一样,具有相同的编程模型,不同的是资源管理和作业管理系统。

MRv1中均是由JobTracker实现的,集两个功能于一身,而在MRv2中,将这两部分分开了,分别由组件ResourceManager和ApplicationMaster实现,这样大大减少了MapReduce中Job Tracker的压力。

MRv2变为一个作业控制进程ApplicationMaster,且ApplicationMaster仅负责一个作业的管理;资源管理则由YARN完成。

MRv1是一个独立的离线计算框架,而MRv2可以看做运行于资源管理框架YARN之上的MRv1。

1个支持NameNode横向扩展的HDFS、1个资源管理系统YARN和1个运行在YARN上的MapReduce组成Hadoop 2.0.


Hadoop2.0 优势

相比于Hadoop 1.0,Hadoop 2.0功能更加强大,且具有更好的扩展性、性能,并支持多种计算框架。


YARN

YARN是Hadoop 2.0的资源管理器。它是一个资源统一管理系统,可为上层应用提供统一的资源管理和调度,它的引入为集群在利用率、资源统一管理和数据共享等方面带来了巨大好处。

YARN上面可以运行各种计算框架(包括MapReduce、Spark、Storm等),我们一般将运行在YARN上的计算框架称为“X on YARN”。


MapReduce-On-YARN:YARN上的离线计算;

Spark-On-YARN:YARN上的内存计算;

Storm-On-YARN:YARN上的实时/流式计算;

Tez-On-YARN:YARN上的DAG计算。

 

以上就是Hadoop1.0、Hadoop2.0、MapReduce1.0、MapReduce2.0、YARN之间的真实关系。