hadoop2学习URl

hadoop2学习URl


http://blog.csdn.net/wind5shy/article/category/1261200/2




解析Hadoop 2.3.0版本的新特性  
流式计算框架Storm,
内存计算框架Spark


2014年2月20日,Hadoop 2.3.0版本发布,这是apache 在2014年发布的第一个Hadoop版本,揭开了Hadoop 2014发展的序幕。


该版本引入了很多大家期待已久的特性,包括HDFS 的异构层次化存储架构、DataNode Cache,YARN的单点故障解决方案,以及MapReduce的自动化部署等。
本文尝试为大家解析这些特性,并给出一些资料供大家深入了解。


HDFS新特性。 2.3.0中引入了两个大的HDFS特性,分别是异构层次化存储架构和DataNode Cache。
首先是异构层次化存储架构,在之前的版本,HDFS默认DataNode上所有的存储介质是磁盘,即用户所有数据存储在磁盘上,不管是热数据还是冷数据。
但随着近几年存储介质的高速发展,SSD、Flash等新型介质日益成熟,HDFS开始尝试支持异构介质,即同一个Hadoop集群中可以同时存在多种存储介质,
用户可根据需要将不同类型的数据存放到不同介质中,比如热点数据存到SSD中,海量的网页数据放到磁盘中。异构层次化存储架构的引入,使得HDFS应用范围更广。
第二个特性是DataNode Cache。在旧版本中,HDFS DataNode并未考虑数据缓存,毕竟HDFS定位是一个分布式磁盘存储系统,但随着HDFS之上计算框架多样化的出现,
比如流式计算框架Storm,内存计算框架Spark、DAG计算框架Tez等,Hadoop不再仅仅把自己局限在离线处理和分析上,而是能够同时支持离线分析和在线处理,
为此,
为了能够更好地支持在线处理,降低在线应用的延迟,提高性能,DataNode Cache出现了(值得一提的是,Spark生态系统中的Tachyon存储系统,便是一个构建在HDFS之上的内存系统)。
这两个功能都是Hadoop全功能型系统发展的必然产物,HDFS从此不再局限于存储一些离线的批处理数据,也开始尝试支持存储在线数据。这两个功能的设计文档可参考:


https://issues.apache.org/jira/browse/HDFS-2832


https://issues.apache.org/jira/browse/HDFS-4949


需要注意的是,目前这两个特性正处于初期发展阶段,尽管愿景很美好,但目前仅仅实现了最基本的功能,很多功能尚未实现,比如异构层次化存储架构中,
想让一个block的三个副本,一个存储在SSD上,另外两个存储在磁盘上。


YARN新特性。YARN目前存在最大的问题是ResourceManager单点故障,该问题是目前最急需解决的遗留问题之一,若不解决,YARN作为资源管理系统就无法承载更多类型的应用。
在2.3.0版本中,该问题基本得到了解决,解决方案类似于NameNode HA,是通过Zookeeper实现的。但还不推荐大家使用该版本中的HA方案,而是建议在下一个版本2.4.0中使用。
除了HA外,还有两个非常重要的功能将在下一个版本中发布,分别是Generic Application Timeline和Generic Application Timeline Log。
第一个特性是Generic Application Timeline,该特性提供了一个共享存储模块,供YARN之上的应用程序存储一些自己的数据,比如运行事件、运行日志等;
第二个特性则解决了YARN之上应用程序历史日志管理问题,目前仅有MapReduce可以查看和管理history log,其他应用程序,
比如Spark等,不能查看,需要由各个框架/应用程序自行解决该问题,为了防止重复造轮子,YARN干脆提供了一个通用的历史日志管理模块。这两个功能的设计文档可参考:


https://issues.apache.org/jira/browse/YARN-1530


https://issues.apache.org/jira/browse/YARN-321


MapReduce新特性。在Hadoop 2.0中,MapReduce jar包是同YARN和HDFS jar包打包在一起的,部署Hadoop时会一同被分发到各个节点上的,这实际上违背了YARN的设计初衷。
YARN是一个资源管理系统,其上面所有应用程序不需要事先部署到各个节点上,只需在客户端存在一份jar包,然后由YARN自动分发到各个节点上即可,
为此,Hadoop 2.3.0对此进行了修正。值得一提的是,Spark和Storm等程序不存在这个问题,这使得同一集群中可以运行不同版本的Spark和Storm实例。
具体可参考:


https://issues.apache.org/jira/browse/MAPREDUCE-4421 




Hadoop 2.2.0正式版特性分析


Hadoop2.2.0特性
Apache官网的说明:


15 October, 2013: Release 2.2.0 available


Apache Hadoop2.2.0 is the GA release of Apache Hadoop 2.x.


Users areencouraged to immediately move to 2.2.0 since this release is significantlymore stable and is guaranteed to remain compatible in terms of both APIs andprotocols.


To recap, thisrelease has a number of significant highlights compared to Hadoop 1.x:


·        YARN - A general purpose resourcemanagement system for Hadoop to allow MapReduce and other other data processingframeworks and services


·        High Availability for HDFS


·        HDFS Federation


·        HDFS Snapshots


·        NFSv3 access to data in HDFS


·        Support for running Hadoop on MicrosoftWindows


·        Binary Compatibility for MapReduceapplications built on Hadoop-1.x


·        Substantial amount of integration testingwith rest of projects in the ecosystem


 


      从以上说明可以看到,Hadoop 2.2.0是Hadoop 2.x时代第一个稳定版本,建议所有正在使用Hadoop 2.x的用户升级到这个版本。


      2.2.0相对于2.x之前的版本,主要功能上没有太大的变化,所以这里所列举的新特性都是基于Hadoop 1.x来说的。




·1: YARN


YARN全名为“YetAnother Resource Negotiator”,是Hadoop 0.23之后开始引入的一个资源管理框架,
目的是为了让各种计算框架都可以在Hadoop上运行而不是仅限于Hadoop 1.x时代的MapReduce。


目前YARN可以管理的资料类型包括了CPU和内存,未来可能会加入对磁盘和网络等类型的支持。


目前YARN可以支持的框架包括:MapReduce(批处理框架)、Storm(流式处理框架,项目为Stormon YARN,主要由Hortonworks在推进。
正式版本未出但可用,yahoo和淘宝等在内部已经大规模使用)、Spark(内存处理框架,项目为Spark on YARN,主要由Cloudera在推进。
正式版本未出但可用,淘宝等在内部也已经大规模使用)。


正在YARN上开发且未来比较靠谱的框架有:Tez(DAG框架,继承自MapReduce,性能有巨大提升)、Hoya(将HBase运行在YARN上,主要由Hortonworks在推进)。


此外,还有一些框架,如BSP、MPI等也有在YARN的开源项目,但前景还不太明朗。




·2: High Availability for HDFS


解决HDFS的单点问题。


实现是基于NameNode的主从切换,关键点在于主从NameNode通过一个共享储存同步元数据信息。Hadoop目前提供了NFS、QJM和Bookeeper三种共享储存可选。
三种方案中年,NFS本身又存在单点问题,而QJM和Bookeeper都是分布式系统,不存在单点问题;前者由Cloudera推出,后者由Yahoo推出,相对来说,QJM更简单,更易于维护。




· 3: HDFS Federation


解决NameNode内存容量限制HDFS元数据数量的问题。


HDFS的所有元数据都是储存在NameNode的内存中。HDFS Federation将整个HDFS的元数据空间分隔为多个独立的空间,每个空间的元数据由一个NameNode保存。


这种方式还是存在单点问题:如果有NameNode故障,那么它保存的那部分元数据将无法访问。同时,由于每个DataNode需要向所有的NameNode汇报心跳,会对集群的性能产生影响,
而且NameNode越多,性能影响越大。




· 4: HDFS Snapshots


HDFS快照,这个和数据库快照类似。



· NFSv3 access to data in HDFS


支持以NFS3协议,使得用户可以像访问本地数据一样访问HDFS上的数据。




· Support for running Hadoop on MicrosoftWindows


支持在Windows平台上运行Hadoop。在此版本以前,Windows只是试验平台。




·  Binary Compatibility for MapReduceapplications built on Hadoop-1.x


保持对Hadoop 1.x构建的MapReduce应用的二进制兼容性。


在Hadoop 1.x中的MapReduce有新旧两套API,性能上没有区别,新API封装得更好,扩展性更好。
但2.x之前的一些版本只能使用支持旧API的MapReduce应用,使用新API的应用需要进行一些修改。



·Substantial amount of integration testingwith rest of projects in the ecosystem


和Hadoop生态系统的其他系统进行了充分的集成测试。

你可能感兴趣的:(hadoop2学习URl)