当我们现在(2014年7月)访问Apache的Hadoop官方网站,可以看到目前官网提供了三个推荐版本。像我一样的初学者必然感到困惑: 1.2.X - current stable version, 1.2 release 2.4.X - current stable 2.x version 0.23.X - similar to 2.X.X but missing NN H
当我们现在(2014年7月)访问Apache的Hadoop官方网站,可以看到目前官网提供了三个推荐版本。像我一样的初学者必然感到困惑:
1.2.X - current stable version, 1.2 release
2.4.X - current stable 2.x version
0.23.X - similar to 2.X.X but missing NN HA.
1、为什么会提供这么奇怪的版本,我做了一些了解
Hadoop一代:原来Hadoop最初的开发时候出现了0.20,0.21,0.22,0.23这样的版本,后来0.20.x版本最后演化成了现在的1.0.x版本,也就是Hadoop第一代的稳定版本。也就是说第一代Hadoop包含三个大版本,分别是0.20.x,0.21.x和0.22.x,其中,0.20.x最后演化成1.0.x,变成了稳定版,也就是现在官网推荐的一代稳定产品1.2.x。 0.21.x和0.22.x是下一代Hadoop中的MapReduce实现,只不过资源管理系统还是用的JobTracker,没有使用YARN。
Hadoop二代:而最初的0.23版本,完全不同于第一代Hadoop,是一套全新的架构,包含HDFS Federation和YARN两个系统,后来也由0.23演化出了2.0.x系列的二代版本。 至于0.23和2.0.x系列的不同,那就是相比于0.23.x,2.x增加了NameNode HA和Wire-compatibility两个重大特性。
那么,我们就可以非常清楚的明白,Hadoop官网给出的三个下载链接:
1.2.x代表第一代的Hadoop框架; 2.4.x代表第二代的Hadoop框架;0.23.x也是第二代框架,只是缺少了NN HA特性。
什么是NN HA? 答:Namenode High Available,即Namenode高可用性。这里有一篇关于HA解决方案的介绍:
http://wenku.baidu.com/link?url=aPnXLQjY3rXyxSwgn_9u4-7fuvmuW6WNmLDLr3YFQ7_RZjFR7YODjPK-pSbgyHBX2AZ9bzB5EYeiR09LO_ecSa6KmDNJn4R-3ImzUVGWjL_
http://www.infoq.com/cn/articles/hadoop-2-0-namenode-ha-federation-practice-zh
http://blog.csdn.net/wf1982/article/details/7793166
2、我们应该下载哪个版本?
由于我本次实验室所工作的事情初次接触该框架,而且需要用到较多的特性,故果断选择第二代框架。而且,作为使用者,我们必然要选择Stable版本,我们看到官网提供的2.4.x确实是Stable版本,而且当我进入下载,找到华科大的镜像服务器时,其Stable目录下,正是2.4.1,因此本次项目我们使用2.4.1的版本。
想看最全的Hadoop版本,就去这里:http://svn.apache.org/repos/asf/hadoop/common/branches/
实际上,当前Hadoop只有两个版本:Hadoop 1.0(我觉得应该叫他一代)和Hadoop 2.0(我觉得应该叫他二代,中文免得混乱),其中,Hadoop 1.0由一个分布式文件系统HDFS和一个离线计算框架MapReduce组成,而Hadoop 2.0则包含一个支持NameNode横向扩展的HDFS,一个资源管理系统YARN和一个运行在YARN上的离线计算框架MapReduce。相比于Hadoop 1.0,Hadoop 2.0功能更加强大,且具有更好的扩展性、性能,并支持多种计算框架。
当我们决定是否采用某个软件用于开源环境时,通常需要考虑以下几个因素:
(1)是否为开源软件,即是否免费。
(2) 是否有稳定版,这个一般软件官方网站会给出说明。
(3) 是否经实践验证,这个可通过检查是否有一些大点的公司已经在生产环境中使用知道。
(4) 是否有强大的社区支持,当出现一个问题时,能够通过社区、论坛等网络资源快速获取解决方法。
3、CHD基于开源Hadoop的另一个分发版本------
我们在关注Hadoop时可能会经常看到CDH3或CDH4之类的Hadoop版本,那么他们就是由一家叫做Cloudera的公司发行的,就像Linux操作系统领域有Redhat一样,Hadoop是Apache的开源项目,然后有一家公司Cloudera就利用Hadoop改造成另一个发行版。CDH是在Apache的基础上进行优化的版本。这家云计算公司发展非常强劲,大有成为下一个Redhat之势。
可以在官网了解到相关知识:http://www.cloudera.com/content/support/en/downloads.html
4、Hadoop2代中的相关概念
(1) Hadoop 1.0
第一代Hadoop,由分布式存储系统HDFS和分布式计算框架MapReduce组成,其中,HDFS由一个NameNode和多个DataNode组成,MapReduce由一个JobTracker和多个TaskTracker组成,对应Hadoop版本为Hadoop 1.x和0.21.X,0.22.x。
(2) Hadoop 2.0
第二代Hadoop,为克服Hadoop 1.0中HDFS和MapReduce存在的各种问题而提出的。针对Hadoop 1.0中的单NameNode制约HDFS的扩展性问题,提出了HDFS Federation,它让多个NameNode分管不同的目录进而实现访问隔离和横向扩展;针对Hadoop 1.0中的MapReduce在扩展性和多框架支持方面的不足,提出了全新的资源管理框架YARN(Yet Another Resource Negotiator),它将JobTracker中的资源管理和作业控制功能分开,分别由组件ResourceManager和ApplicationMaster实现,其中,ResourceManager负责所有应用程序的资源分配,而ApplicationMaster仅负责管理一个应用程序。对应Hadoop版本为Hadoop
0.23.x和2.x。
(3) MapReduce 1.0或者MRv1(MapReduce version 1)
第一代MapReduce计算框架,它由两部分组成:编程模型(programming model)和运行时环境(runtime environment)。它的基本编程模型是将问题抽象成Map和Reduce两个阶段,其中Map阶段将输入数据解析成key/value,迭代调用map()函数处理后,再以key/value的形式输出到本地目录,而Reduce阶段则将key相同的value进行规约处理,并将最终结果写到HDFS上。它的运行时环境由两类服务组成:JobTracker和TaskTracker,其中,JobTracker负责资源管理和所有作业的控制,而TaskTracker负责接收来自JobTracker的命令并执行它。
(4)MapReduce 2.0或者MRv2(MapReduce version 2)或者NextGen MapReduc
MapReduce 2.0或者MRv2具有与MRv1相同的编程模型,唯一不同的是运行时环境。MRv2是在MRv1基础上经加工之后,运行于资源管理框架YARN之上的MRv1,它不再由JobTracker和TaskTracker组成,而是变为一个作业控制进程ApplicationMaster,且ApplicationMaster仅负责一个作业的管理,至于资源的管理,则由YARN完成。
简而言之,MRv1是一个独立的离线计算框架,而MRv2则是运行于YARN之上的MRv1。
(5) YARN
Hadoop 2.0中的资源管理框架,它是一个框架管理器,为各种框架进行资源分配和提供运行时环境。而MRv2则是运行在YARN之上的第一个计算框架,其他计算框架,比如Spark、Storm等,都正在往YARN上移植。YARN类似于几年前的资源管理系统mesos和更早的Torque。Yarn的官方介绍http://hadoop.apache.org/docs/r2.2.0/hadoop-yarn/hadoop-yarn-site/YARN.html
(6) HDFS Federation
Hadoop 2.0中对HDFS进行了改进,使NameNode可以横向扩展成多个,其中,每个NameNode分管一部分目录,这不仅增强了HDFS的扩展性,也使HDFS具备了隔离性。
5、分布式计算相关的其他概念
Spark:Spark是一个高效的分布式计算系统,发源于美国加州大学伯克利分校AMPLab的集群计算平台。 Spark被称为“Hadoop的瑞士军刀”,拥有非凡的速度和易用性。Spark立足于内存计算,相比Hadoop MapReduce,Spark在性能上要高100倍,而且Spark提供了比Hadoop更上层的API,同样的算法在Spark中实现往往只有Hadoop的1/10或者1/100的长度。 Apache Spark? is a fast and general engine for large-scale
data processing.
Storm:分布式实时计算系统。按照storm作者的说法,storm对于实时计算的意义类似于hadoop对于批处理的意义。我们都知道,根据google mapreduce来实现的hadoop为我们提供了map, reduce原语,使我们的批处理程序变得非常地简单和优美。同样,storm也为实时计算提供了一些简单优美的原语。 有一篇介绍Strom的博客:http://www.searchtb.com/2012/09/introduction-to-storm.html
------------本文引用出处-----------
http://dongxicheng.org/mapreduce-nextgen/how-to-select-hadoop-versions/
http://dongxicheng.org/mapreduce-nextgen/hadoop-2-0-terms-explained/
http://dongxicheng.org/mapreduce-nextgen/hadoop-2-2-0/
Stellungnahme:Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn