hadoop1.x的缺陷
Hadoop 1.0内核主要由两个分支组成:MapReduce和HDFS,众所周知,这两个系统的设计缺陷是单点故障,即MR的JobTracker和HDFS的NameNode两个核心服务均存在单点问题,该问题在很长时间内没有解决,这使得Hadoop在相当长时间内仅适合离线存储和离线计算。
令人欣慰的是,这些问题在Hadoop 2.0中得到了非常完整的解决。Hadoop 2.0内核由三个分支组成,分别是HDFS、MapReduce和YARN,而Hadoop生态系统中的其他系统,比如HBase、Hive、Pig等,均是基于这三个系统开发的。
注:YARN是Hadoop 2.x中的资源管理系统,它是一个通用的资源管理模块,可为各类应用程序进行资源管理和调度。YARN不仅限于MapReduce一种框架使用,也可以供其他框架使用,Spark、Storm等。
hadoop2.x的诞生
Hadoop 2.x即第二代Hadoop,为克服Hadoop 1.x中HDFS和MapReduce存在的各种问题而提出的。针对Hadoop 1.x中的单NameNode制约HDFS的扩展性问题,提出了HDFS Federation,它让多个NameNode分管不同的目录进而实现访问隔离和横向扩展,同时它彻底解决了NameNode 单点故障问题;针对Hadoop 1.x中的MapReduce在扩展性和多框架支持等方面的不足,它将JobTracker中的资源管理和作业控制功能分开,分别由组件ResourceManager和ApplicationMaster实现,其中,ResourceManager负责所有应用程序的资源分配,而ApplicationMaster仅负责管理一个应用程序,进而诞生了全新的通用资源管理框架YARN。基于YARN,用户可以运行各种类型的应用程序(不再像1.x那样仅局限于MapReduce一类应用),从离线计算的MapReduce到在线计算(流式处理)的Storm等
hadoop2.x HA
—主备NameNode
—解决单点故障
1、主NameNode对外提供服务,备NameNode同步主NameNode元数据,以待切换。
2、所有DataNode同时向两个NameNode汇报数据块信息。
—两种切换选择
1、手动切换:通过命令实现主备之间的切换,可以用HDFS升级等场合。
2、自动切换:基于Zookeeper实现。
—基于Zookeeper自动切换方案
1、Zookeeper Failover Controller:监控NameNode健康状态。
2、并向Zookeeper注册NameNode。
3、NameNode挂掉后,ZKFC为NameNode竞争锁,获得ZKFC锁的NameNode变为active。