1.1.2 Hadoop 2.0
随着Hadoop的影响力逐步扩大,其集群规模得到了迅猛增长,一些弊端就随之暴露出来了,此时Hadoop 2.0应运而生。Hadoop 2.0使Hadoop迎来了第一次质的飞跃,它不仅在稳定性上有了较好的支持,在扩展性上也有了较大的改善,能够轻松应对上千节点的规模。接下来,我们介绍一下Hadoop 2.0的相关组件。
Hadoop 2.0对Hadoop 1.0中的每个组件都进行了升级扩展。先来看HDFS,它的整体架构并没有太大的改变,其新增的特性为HA(高可用)和Federation(联邦模式),这两个特性主要集中在NameNode中。
在Hadoop 2.0中,支持用两个NameNode提供HA功能,这两个NameNode分别为Active NameNode和Standby NameNode,前者负责对外提供服务,后者则作为前者的热备节点,它们通过一个共享的存储结构——通常是QJM(Quorum Journal Manager)实现数据同步。Active NameNode会将操作日志实时写入QJM中,Standby NameNode则会从QJM中实时拉取操作日志进行操作回放,并定期生成集群的状态快照,然后同步给Active NameNode。此时因为Active NameNode和Standby NameNode的数据是实时同步的,所以当Active NameNode发生故障无法提供服务时,Standby NameNode就能快速进行状态转换,变为Active NameNode对外提供服务,从而实现故障转移,增强NameNode的可用性。
虽然NameNode的稳定性通过HA得到了增强,但是随着集群规模的扩大,NameNode的内存逐渐成为影响其扩容的主要因素,而Federation为其提供了横向扩展的能力。在Federation中,一个大HDFS集群会被分为N个小HDFS集群,这些小集群既可以共享DataNode的存储空间,也可以对其进行物理隔离。viewfs负责提供N个小集群的整体视图,对普通用户屏蔽内部架构细节,这样也方便集群管理员管理集群。Federation的整体架构如图1-3所示。
Hadoop 2.0的另一个亮点是将Hadoop 1.0中的MapReduce拆分为两个组件:一个组件专注于分布式计算,依然以MapReduce命名;另一个组件专注于资源管理,命名为YARN,具体内容详见第3章。
图1-3 Federation的整体架构
任何系统都处在不断迭代的过程中,并且在迭代中会解决一些瓶颈问题,而随着使用场景的不断扩大,又会出现新的瓶颈。Hadoop也不例外,虽然Hadoop 2.0解决了很多问题,使其性能得以提升、集群规模得以扩大,但是在扩大的过程中,精益求精的工程师们又发现了新的瓶颈,例如HDFS虽然在Federation下能够横向扩展,但是其使用方式并不利于维护,而且数据冗余存储的方式在大规模集群中暴露出了存储资源利用不足的问题。再者就是HDFS的横向扩展导致在集群达到一定规模时,ResourceManager对资源的调度成了新的瓶颈。为了解决这些问题,Hadoop 3.0问世了。