Hadoop 1.x与Hadoop 2.x的区别

最近看了某大神的博客,很是详细地描述了关于Hadoop 1.x与Hadoop 2.x的区别和改进,博客原文连接以下:html

http://www.cnblogs.com/edisonchou/p/4470682.htmlnode

看了博客以后,本身简单总结概述了一下二者之间的区别,与Hadoop 1.x相比,Hadoop 2.x的改进主要在如下两个方面:服务器

(1)HDFS的改进架构

HDFS的NameNode能够以集群的方式布署,加强了NameNodes的水平扩展能力和高可用性,分别体如今HDFS Federation与HA。框架

(2)MapReduce的改进oop

MapReduce将JobTracker中的资源管理及任务生命周期管理(包括定时触发及监控),拆分红两个独立的组件,并改名为YARN(Yet Another Resource Negotiator)。性能

1、HDFS的改进

1. 提出HA

Hadoop 1.x中NameNode只能有一个,虽然能够经过SecondaryNameNode与NameNode进行数据同步备份,可是总会存在必定的时延,若是NameNode挂掉,可是若是有部份数据尚未同步到SecondaryNameNode上,仍是可能会存在着数据丢失的问题。spa

针对Hadoop1.0单NameNode一旦挂掉则不能恢复集群,Hadoop2.0提出了HA,指的是能够同时启动2个NameNode。其中一个处于工做(Active)状态,另外一个处于随时待命(Standby)状态。这样,当一个NameNode所在的服务器挂掉时,能够在数据不丢失的状况下,手工或者自动切换到另外一个NameNode提供服务。htm

2. 提出 HDFS Federation

Hadoop1.x的HDFS架构的局限:blog

(1)访问隔离

如今大部分公司的集群都是共享的,天天有来自不一样group的不一样用户提交做业。单个namenode难以提供隔离性,即:某个用户提交的负载很大的job会减慢其余用户的job,单一的NameNode难以像HBase按照应用类别将不一样做业分派到不一样NameNode上。

(2)横向扩展

HDFS的底层存储是能够水平扩展的(解释:底层存储指的是datanode,当集群存储空间不够时,可简单的添加机器已进行水平扩展),但NameNode不能够。

(3)NameNode性能

文件操做的性能制约于单个NameNode的吞吐量,单个NameNode当前仅支持约60K的task,所以要想办法增长NameNode。

针对Hadoop1.0单NameNode制约HDFS的扩展性问题,Hadoop2.0提出了HDFS Federation,它让多个NameNode分管不一样的目录进而实现访问隔离和横向扩展,同时完全解决了NameNode单点故障问题。

2、MapReduce的改进

Hadoop1.x的MapReduce框架的主要局限:

(1)JobTracker 是 Map-Reduce 的集中处理点,存在单点故障;

(2)JobTracker 完成了太多的任务,形成了过多的资源消耗,当 map-reduce job 很是多的时候,会形成很大的内存开销,潜在来讲,也增长了 JobTracker 失效的风险,这也是业界广泛总结出老 Hadoop 的 Map-Reduce 只能支持 4000 节点主机的上限;

针对上述问题,Hadoop2.0将JobTracker中的资源管理和做业控制分开,分别由ResourceManager(负责全部应用程序的资源分配)和ApplicationMaster(负责做业控制)实现,即引入了资源管理框架YARN。因为YARN具备通用性,所以YARN也能够做为其余计算框架的资源管理系统,不只限于MapReduce,也是其余计算框架(例如Spark)的管理平台。 

相关文章
相关标签/搜索