Hadoop 1.x与Hadoop 2.x的区别
(1)HDFS的改进
HDFS的NameNode可以以集群的方式布署,增强了NameNodes的水平扩展能力和高可用性,分别体现在HDFS Federation与HA.
(2)MapReduce的改进
MapReduce将JobTracker中的资源管理及任务生命周期管理(包括定时触发及监控),拆分成两个独立的组件,并更名为YARN(Yet Another Resource Negotiator)翻译过来就是 另一个资源谈判者
Hadoop 1.x中 NameNode只能有一个 ,虽然可以通过SecondaryNameNode与NameNode进行数据同步备份,但是总会存在一定的时延,如果NameNode挂掉,但是如果有部份数据还没有同步到SecondaryNameNode上,还是可能会存在着数据丢失的问题,做数据最怕的就是数据丢失.
针对Hadoop1.0单NameNode一旦挂掉则不能恢复集群,Hadoop2.0提出了HA,指的是可以同时启动2个NameNode.其中一个处于工作(Active)状态,另一个处于随时待命(Standby)状态.这样,当一个NameNode所在的服务器挂掉时,可以在数据不丢失的情况下,手工或者自动切换到另一个NameNode提供服务.
Hadoop1.x的HDFS架构的局限:
(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单点故障问题.
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)的管理平台.