Apache Hadoop 2.0-alpha发布

Apache Hadoop 2.0-alpha发布了,直接从0.23.x升为2.0版本,让我们再一次被Hadoop版本的混乱无序状态搞晕。本文将解析Hadoop -2.0-alpha中的新特性。

相对于Hadoop-1.x版本(为了更全面的描述Hadop 2.0中的新特性,我们没有将之与0.23.x比较),添加了以下几个功能:

1. HDFS HA (manual failover)

Hadoop HA分支merge进了该版本,并支持热切,主要特性包括:

(1) NN配置文件有改变,使得配置更加简单

(2) NameNode分为两种角色:active NN与 standby NN,active NN对外提供读写服务,一旦出现故障,便切换到standby NN。

(3) 支持Client端重定向,也就是说,当active NN切换到standby NN过程中,Client端所有的进行时操作都可以无缝透明重定向到standby NN上,Client自己感觉不到切换过程。

(4) DN同时向active NN和standby NN汇报block信息。

具体设计文档参考:https://issues.apache.org/jira/browse/HDFS-1623

当前Hadoop HA只能实现人工切换,该功能在某些情况下非常有用,比如,对NN进行升级时,先将NN切换到standby NN,并对之前的active NN进行升级,升级完成后,再将NN切换至升级后的NN上,然后对standby NN进行升级。

2. MR2/YARN

YARN是一套资源统一管理和调度平台,可管理各种计算框架,包括MapReduce,Spark,MPI等。尽管它是完全重写而成,但其思想是从MapReduce衍化而来的,并克服了它在扩展性和容错性等方面的众多不足。具体参考:

http://hadoop.apache.org/common/docs/r0.23.0/hadoop-yarn/hadoop-yarn-site/YARN.html

3. HDFS Federation

传统HDFS是master/slave结构,其中,master(也就是NameNode)需要存储所有文件系统的元数据信息,且所有文件存储操作均需要访问多次NameNode,因而NameNode成为制约扩展性的主要瓶颈所在。为了解决该问题,引入了HDFS Federation,允许HDFS中存在多个NameNode,且每个NameNode分管一部分目录,而DataNode不变,也就是“从中央集权专政变为各个地方自治”,进而缩小了故障带来的影响范围,并起到一定的隔离作用。具体参考:

http://dongxicheng.org/mapreduce-nextgen/nextgen-mapreduce-introduction/

4. 性能基准测试

该版本中为HDFS和YARN添加了性能的基准测试集,其中HDFS测试包括:

(1) dfsio基准 测试HDFS I/O读写性能

(2) slive基准 测试NameNode内部操作的性能

(3) scan基准 测试MapReduce作业访问HDFS的I/O性能

(4) shuffle基准 测试shuffle阶段性能

(5) compression基准 测试MapReduce作业中间结果和最终结果的压缩性能

(6) gridmix-V3基准 测试集群吞吐率

YARN 测试包括:

(1) ApplicationMaster扩展性基准测试

主要测试调度task/container的性能。与1.0版本比较,大约快2倍。

(2) ApplicationMaster恢复性基准测试

测试YARN重启后,作业恢复速度。稍微解释一下ApplicationMaster恢复作业的功能:在作业执行过程中,Application Master会不断地将作业运行状态保存到磁盘上,比如哪些任务运行完成,哪些未完成等,这样,一旦集群重启或者master挂掉,重启后,可复原各个作业的状态,并只需重新运行未运行完成的哪些任务。

(3) ResourceManager扩展性基准测试

通过不断向Hadoop集群中添加节点测试RM的扩展性。

(4) 小作业基准测试

专门测试批量小作业的吞吐率

具体参考:

http://hortonworks.com/blog/delivering-on-hadoop-next-benchmarking-performance/

5. Wire-compatibility for both HDFS & YARN

Hadoop RPC采用了Hadoop自己的一套序列化框架对各种对象进行序列化反序列,但存在一个问题:扩展性差,很难添加新的数据类型同时保证版本兼容性。为此,Hadoop 2.0将数据类型模块从RPC中独立出来,成为一个独立的可插拔模块,这样允许用户根据个人爱好使用各种序列化/反序列化框架,比如thrift,arvo,protocal Buffer等,默认情况采用Protocal Buffer。

http://hortonworks.com/blog/rpc-improvements-and-wire-compatibility-in-apache-hadoop/

除了以上五个特性外,还有两个非常重要的特性正在研发中,分别是:

6. HDFS快照

用户可在任意时间对HDFS做快照,这样,在HDFS出现故障时,可将数据恢复到某个时间点的状态。具体参考:

http://hortonworks.com/blog/snapshots-for-hdfs/

7. HDFS HA自动切换

前面介绍的第一个功能“HDFS HA”当前只能实现人工切换,也就是说,管理员运行某个命令,使得acitve NN切换到standby NN上。以后将支持自动切换,也就是说,监控模块可检测出active NN何时出现故障,并自动将之切换到standby NN上,这样可大大较小Hadoop集群运维人员的工作量。具体参考:

http://s.apache.org/hdfs-autofailover

转载自董的博客

你可能感兴趣的:(Apache Hadoop 2.0-alpha发布)