现在的位置: 首页 > 综合 > 正文

Hadoop版本说明以及Hadoop2中的几个重要概念

2018年05月07日 ⁄ 综合 ⁄ 共 4292字 ⁄ 字号 评论关闭

当我们现在(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/

【上篇】
【下篇】

抱歉!评论已关闭.