内容来自《Hadoop技术内幕:深入解析YARN架构设计与实现原理》第2章:http://book.51cto.com/art/201312/422022.htm

Hadoop版本变迁

当前Apache Hadoop版本非常多,本小节将帮助读者梳理各个版本的特性以及它们之间的联系。在讲解Hadoop各版本之前,先要了解Apache软件发布方式。对于任何一个Apache开源项目,所有的基础特性均被添加到一个称为“trunk”的主代码线(main codeline),当需要开发某个重要的特性时,会专门从主代码线中延伸出一个分支(branch),这被称为一个候选发布版(candidate release),该分支将专注于开发该特性而不再添加其他新的特性,待bug修复之后,经过相关人士投票便会对外公开成为发布版(release version),并将该特性合并到主代码线中。需要注意的是,多个分支可能会同时进行研发,这样,版本高的分支可能先于版本低的分支发布。

由于Apache以特性为准延伸新的分支,故在介绍Apache Hadoop版本之前,先介绍几个独立产生Apache Hadoop新版本的重大特性:

Append:HDFS Append主要完成追加文件内容的功能,也就是允许用户以Append方式修改HDFS上的文件。HDFS最初的一个设计目标是支持MapReduce编程模型,而该模型只需要写一次文件,之后仅进行读操作而不会对其修改,即“write-once-read-many”,这就不需要支持文件追加功能。但随着HDFS变得流行,一些具有写需求的应用想以HDFS作为存储系统,比如,有些应用程序需要往HDFS上某个文件中追加日志信息,HBase需使用HDFS具有 Append功能以防止数据丢失等。

HDFS RAID:Hadoop RAID模块在HDFS之上构建了一个新的分布式文件系统DistributedRaidFileSystem(DRFS),该系统采用了Erasure Codes增强对数据的保护,有了这样的保护,可以采用更低的副本数来保持同样的可用性保障,进而为用户节省大量存储空间。

Symlink:让HDFS支持符号链接。符号链接是一种特殊的文件,它以绝对或者相对路径的形式指向另外一个文件或者目录(目标文件),当程序向符号链接中写数据时,相当于直接向目标文件中写数据。

Security:Hadoop的HDFS和MapReduce均缺乏相应的安全机制,比如在HDFS中,用户只要知道某个block的blockID,便可以绕过NameNode直接从DataNode上读取该block,用户可以向任意DataNode上写block;在MapReduce中,用户可以修改或者杀掉任意其他用户的作业等。为了增强Hadoop的安全机制,从2009年起,Apache专门抽出一个团队,从事为Hadoop增加基于Kerberos和Deletion Token的安全认证和授权机制的工作。

MRv1:正如前面所述,第一代MapReduce计算框架由三部分组成:编程模型、数据处理引擎和运行时环境。其中,编程模型由新旧API两部分组成;数据处理引擎由MapTask和ReduceTask组成;运行时环境由JobTracker和TaskTracker两类服务组成。

MRv2/YARN:MRv2是针对MRv1在扩展性和多框架支持等方面的不足而提出来的,它将MRv1中的JobTracker包含的资源管理和作业控制两部分功能拆分开来,分别将由不同的进程实现。考虑到资源管理模块可以共享给其他框架使用,MRv2将其做成了一个通用的YARN系统,YARN系统的引入使得计算框架进入了平台化时代。

NameNode Federation:针对Hadoop 1.0中NameNode内存约束限制其扩展性问题提出的改进方案,它使NameNode可以横向扩展成多个,其中,每个NameNode分管一部分目录,这不仅使HDFS扩展性得到增强,也使HDFS具备了隔离性。

NameNode HA:大家都知道,HDFS NameNode存在NameNode内存约束限制扩展性和单点故障两个问题,其中,第一个问题通过NameNode Federation方案解决,而第二个问题则通过NameNode热备方案(NameNode HA)实现。

到2013年8月为止,Apache Hadoop已经出现四个大的分支,如图2-5所示。

Apache Hadoop的四大分支构成了三个系列的Hadoop版本。

(1)0.20.X系列

0.20.2版本发布后,几个重要的特性没有基于trunk而是在0.20.2基础上继续研发。值得一提的主要有两个特性:Append与Security。其中,含Security特性的分支以0.20.203版本发布,而后续的0.20.205版本综合了这两个特性。需要注意的是,之后的1.0.0版本仅是0.20.205版本的重命名。0.20.X系列版本是最令用户感到疑惑的,因而它们具有的一些特性,trunk上没有,反之trunk上有的一些特性0.20.X系列版本却没有。

(2)0.21.0/0.22.x系列

这一系列版本将整个Hadoop项目被分割成三个独立的模块,分别是 Common、HDFS和MapReduce。HDFS和MapReduce都对Common模块有依赖,但是MapReduce对HDFS并没有依赖,这样,MapReduce可以更容易运行在其他的分布式文件系统之上,同时,模块间可以独立开发。具体各个模块的改进如下:

Common模块:最大的新特性是在测试方面添加了Large-Scale Automated Test Framework和fault injection framework。

HDFS模块:主要增加的新特性包括支持追加操作与建立符号连接、Secondary NameNode改进(secondary namenode被剔除,取而代之的是checkpoint node同时添加一个backup node的角色,作为NameNode的冷备)、允许用户自定义block放置算法等。

MapReduce模块:在作业API方面,开始启动新MapReduce API,但仍然兼容老的API。

0.22.0在0.21.0基础上修复了一些bug并进行了部分优化。

(3)0.23.X系列

0.23.X是为了克服Hadoop在扩展性和框架通用性方面的不足而提出来的,它包括基础库Common、分布式文件系统HDFS、资源管理框架YARN和运行在YARN上的MapReduce四部分,其中,新增的可对接入的各种计算框架(如MapReduce、Spark等)进行统一管理,该发行版自带MapReduce库,而该库集成了迄今为止所有的MapReduce新特性。

(4)2.X系列

同0.23.x系统一样,2.X系列属于下一代Hadoop,与0.23.X相比,2.X增加了NameNode HA和Wire-compatibility等新特性。

表2-1总结了Hadoop各个发布版的特性以及稳定性。

表2-1 Hadoop各个发布版特性以及稳定性

(2)

本书介绍的Hadoop YARN设计思想适用于所有Apache Hadoop 2.x版本,但涉及具体的体现(指源代码级别的实现)时,则以Apache Hadoop 2.2.0及更高稳定版本为主。

《Hadoop技术内幕:深入解析MapReduce架构设计与实现原理》第2章:http://book.51cto.com/art/201312/422133.htm

Hadoop版本变迁

到2012年5月为止,Apache Hadoop已经出现四个大的分支,如图2-1所示。

Apache Hadoop的四大分支构成了四个系列的Hadoop版本。

1. 0.20.X系列

0.20.2版本发布后,几个重要的特性没有基于trunk而是在0.20.2基础上继续研发。值得一提的主要有两个特性:Append与Security。其中,含Security特性的分支以0.20.203版本发布,而后续的0.20.205版本综合了这两个特性。需要注意的是,之后的1.0.0版本仅是0.20.205版本的重命名。0.20.X系列版本是最令用户感到疑惑的,因为它们具有的一些特性,trunk上没有;反之,trunk上有的一些特性,0.20.X系列版本却没有。

2. 0.21.0/0.22.X系列

这一系列版本将整个Hadoop项目分割成三个独立的模块,分别是 Common、HDFS和MapReduce。HDFS和MapReduce都对Common模块有依赖性,但是MapReduce对HDFS并没有依赖性。这样,MapReduce可以更容易地运行其他分布式文件系统,同时,模块间可以独立开发。具体各个模块的改进如下。

Common模块:最大的新特性是在测试方面添加了Large-Scale Automated Test Framework和Fault Injection Framework。

HDFS模块:主要增加的新特性包括支持追加操作与建立符号连接、Secondary NameNode改进(Secondary NameNode被剔除,取而代之的是Checkpoint Node,同时添加一个Backup Node的角色,作为NameNode的冷备)、允许用户自定义block放置算法等。

MapReduce模块:在作业API方面,开始启动新MapReduce API,但老的API仍然兼容。

0.22.0在0.21.0的基础上修复了一些bug并进行了部分优化。

3. 0.23.X系列

0.23.X是为了克服Hadoop在扩展性和框架通用性方面的不足而提出来的。它实际上是一个全新的平台,包括分布式文件系统HDFS Federation和资源管理框架YARN两部分,可对接入的各种计算框架(如MapReduce、Spark等)进行统一管理。它的发行版自带MapReduce库,而该库集成了迄今为止所有的MapReduce新特性。

4. 2.X系列

同0.23.X系列一样,2.X系列也属于下一代Hadoop。与0.23.X系列相比,2.X系列增加了NameNode HA和Wire-compatibility等新特性。

表2-1总结了Hadoop各个发布版的特性以及稳定性。

表2-1 Hadoop各个发布版的特性以及稳定性

本书之所以以分析Apache Hadoop 1.0.0为主,主要是因为这是一个稳定的版本,再有其为1.0.0,具有里程碑意义。Apache发布这个版本,也是希望该版本成为业界的规范。需要注意的是,尽管本书以分析Apache Hadoop 1.0.0版本为主,但本书内容适用于所有Apache Hadoop 1.X版本。

 

Hadoop版本变迁的更多相关文章

  1. [.net 面向对象程序设计深入](4)MVC 6 —— 谈谈MVC的版本变迁及新版本6.0发展方向

    [.net 面向对象程序设计深入](4)MVC 6 ——谈谈MVC的版本变迁及新版本6.0发展方向 1.关于MVC 在本篇中不再详细介绍MVC的基础概念,这些东西百度要比我写的全面多了,MVC从1.0 ...

  2. hadoop版本比较 [转]

    由于Hadoop版本混乱多变,因此,Hadoop的版本选择问题一直令很多初级用户苦恼.本文总结了Apache Hadoop和Cloudera Hadoop的版本衍化过程,并给出了选择Hadoop版本的 ...

  3. Oracle数据库的版本变迁功能对比

    Oracle数据库自发布至今,也经历了一个从不稳定到稳定,从功能简单至强大的过程.从第二版开始,Oracle的每一次版本变迁,都具有里程碑意义. 1979年的夏季,RSI(Oracle公司的前身,Re ...

  4. Pig安装及简单使用(pig版本0.13.0,Hadoop版本2.5.0)

    原文地址:http://www.linuxidc.com/Linux/2014-03/99055.htm 我们用MapReduce进行数据分析.当业务比较复杂的时候,使用MapReduce将会是一个很 ...

  5. Hadoop版本选择

    刚开始学习Hadoop时就曾经一直抱怨Hadoop的安装部署为什么这么麻烦,对于一个新手需要捯饬一天才能把分布式环境安装配置好.而对于一个自学Hadoop而周围又没人交流的菜鸟来说,我对Hadoop的 ...

  6. 【云计算 Hadoop】Hadoop 版本 生态圈 MapReduce模型

    忘的差不多了, 先补概念, 然后开始搭建集群实战 ... . 一 Hadoop版本 和 生态圈 1. Hadoop版本 (1) Apache Hadoop版本介绍 Apache的开源项目开发流程 : ...

  7. 转:Spring历史版本变迁和如今的生态帝国

    Spring历史版本变迁和如今的生态帝国     版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/bntX2jSQfEHy7/article/deta ...

  8. 痞子衡嵌入式:SEGGER J-Link仿真器硬件版本变迁

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是J-Link仿真器版本变迁. 硬件版本 主控芯片 固件升级工具 V7 ARM7TDMI, 55MHz Atmel AT91SAM7S64 ...

  9. 【大数据技术】操作系统和Hadoop版本选择

    1.操作系统选择 Hadoop产品是由Java语言开发的,所以推荐的是Linux操作系统,理由很简单开源免费,推荐的操作系统CentOS. CentOS是一个基于Red Hat 企业级 Linux 提 ...

随机推荐

  1. cell与cell之间的间距问题,以及section跟随屏幕滑动而滑动问题

    苹果在cell与cell之间默认没有间距,这样有时候不能满足我们界面要求,所以我们就需要将cell设置为分组模式(也就是每组一行或者多行,分为n组),然后我们就可以在代理中根据自己的需求设计cell之 ...

  2. C# Chrome内核

    C#将WebBowser控件替换为Chrome内核 摘要 由于最近要做一个浏览器式的软件,其中有不少地方需要使用到jQuery和BootStrap,但是在C#中,默认的WebBrowser控件默认使用 ...

  3. Hangfire项目实践

    Hangfire项目实践分享 Hangfire项目实践分享 目录 Hangfire项目实践分享 目录 什么是Hangfire Hangfire基础 基于队列的任务处理(Fire-and-forget ...

  4. 打印机设置(PrintDialog)、页面设置(PageSetupDialog) 及 RDLC报表如何选择指定打印机

    如果一台电脑同时连接多个打印机,而且每个打印机使用的纸张大小各不相同(比如:票据打印钱用的小票专用张,办公打印机用的是A4标准纸),在处理打印类的需求时,如果不用代码干预,用户必须每次打印时,都必须在 ...

  5. sql server利用开窗函数over() 进行分组统计

    这是一道常见的面试题,在实际项目中经常会用到. 需求:求出以产品类别为分组,各个分组里价格最高的产品信息. 实现过程如下: declare @t table( ProductID int, Produ ...

  6. oracle 分组排序函数

    项目开发中,我们有时会碰到需要分组排序来解决问题的情况:1.要求取出按field1分组后,并在每组中按照field2排序:2.亦或更加要求取出1中已经分组排序好的前多少行的数据 这里通过一张表的示例和 ...

  7. win7下IIS配置以及域名映射方法

    win7下IIS配置以及域名映射方法 第一步:打开控制面板,选择程序与功能,如下图: 第二步:双击打开程序与功能面板,如下图: 第三步:打开”打开或关闭windows功能”(红线圈起来的地方),如下图 ...

  8. Apache下开启SSI配置使html支持include包含

    写页面的同学通常会遇到这样的烦恼,就是页面上的 html 标签越来越多的时候,寻找指定的部分就会很困难,那么能不能像 javascript 一样写在不同的文件中引入呢?答案是有的,apache 能做到 ...

  9. [bzoj2286][Sdoi2011]消耗战(虚树上的DP)

    题目:http://www.lydsy.com:808/JudgeOnline/problem.php?id=2286 分析:对于普通的树形dp:f[x]=min(∑f[son],m[x]),其中f[ ...

  10. 360demo--关于WM_GETMINMAXINFO

    在duilib的demo中,看到这么一段: LRESULT OnGetMinMaxInfo(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHa ...