Apache Hadoop
Apache版本衍化比较快,我给你们介绍一下过程
ApacheHadoop版本分为两代,咱们将第一代Hadoop称为Hadoop 1.0,第二代Hadoop称为Hadoop 2.0。第一代Hadoop包含三个大版本,分别是0.20.x,0.21.x和0.22.x,其中,0.20.x最后演化成1.0.x,变成了稳定版,而0.21.x和0.22.x则NameNode HA等新的重大特性。第二代Hadoop包含两个版本,分别是0.23.x和2.x,它们彻底不一样于Hadoop 1.0,是一套全新的架构,均包含HDFS Federation和YARN两个系统,相比于0.23.x,2.x增长了NameNodeHA和Wire-compatibility两个重大特性。通过上面的大致解释,你们可能明白了Hadoop以重大特性区分各个版本的,总结起来,用于区分Hadoop版本的特性有如下几个:
(1)Append 支持文件追加功能,若是想使用HBase,须要这个特性。
(2)RAID 在保证数据可靠的前提下,经过引入校验码较少数据块数目.
(3)Symlink支持HDFS文件连接
(4)Security Hadoop安全。
须要注意的是,Hadoop 2.0主要由Yahoo独立出来的hortonworks公司主持开发。
2013年10月,Hadoop 2.0发布。关键特性包括:
a) YARN
YARN是“YetAnother Resource Negotiator”的简称,它是Hadoop 2.0引入的一个全新的通用资源管理系统,可在其之上运行各类应用程序和框架,好比MapReduce、Tez、Storm等,它的引入使得各类应用运行在一个集群中成为可能。YARN是在MRv1基础上衍化而来的,是MapReduce发展到必定程度的必然产物,它的出现使得Hadoop计算类应用进入平台化时代,个人博客中包含大量介绍YARN的文章,有兴趣的读者可阅读:
http://dongxicheng.org/category/mapreduce-nextgen/
b) HDFS单点故障得以解决
Hadoop2.2.0同时解决了NameNode单点故障问题和内存受限问题,其中,单点故障是经过主备NameNode切换实现的,这是一种古老的解决服务单点故障的方案,主备NameNode之间经过一个共享存储同步元数据信息,所以共享存储系统的选择称为关键,而Hadoop则提供了NFS、QJM和Bookeeper三种可选的共享存储系统,具体可阅读个人这篇文章:Hadoop 2.0单点故障问题方案总结。
c)HDFS Federation
前面提到HDFS的NameNode存在内存受限问题,该问题也在2.2.0版本中获得了解决。这是经过HDFS Federation实现的,它容许一个HDFS集群中存在多个NameNode,每一个NameNode分管一部分目录,而不一样NameNode之间彼此独立,共享全部DataNode的存储资源,注意,NameNode Federation中的每一个NameNode仍存在单点问题,需为每一个NameNode提供一个backup以解决单点故障问题。
d)HDFS快照
HDFS快照是指HDFS文件系统(或者子系统)在某一时刻的只读镜像,它的出现使得管理员可定时为重要文件或目录作快照,以防止数据误删、丢失等。具体可阅读:Snapshots for HDFS(使用说明),Support for RW/ROsnapshots in HDFS。
经过NFSv3访问HDFS
NFS容许用户像访问本地文件系统同样访问远程文件系统,而将NFS引入HDFS后,用户可像读写本地文件同样读写HDFS上的文件,大大简化了HDFS使用,这是经过引入一个NFS gateway服务实现的,该服务能将NFS协议转换为HDFS访问协议,具体以下图所示。有兴趣的读者可阅读:Support NFSv3interface to HDFS,以及相关设计文档:HDFS NFS Gateway。
e)支持Windows操做系统
在2.2.0版本以前,Hadoop仅支持Linux操做系统,而Windows仅做为实验平台使用。从2.2.0开始,Hadoop开始支持Windows操做系统,具体可阅读我以前写的一篇文章:Hadoop For Windows。
f)兼容1.x上运行的MapReduce应用程序与Hadoop生态系统其余系统进行了充分的集成测试
除了HDFS、MapReduce和YARN这三个核心系统外,Hadoop生态系统还包括Hbase、Hive、Pig等系统,这些系统底层依赖于Hadoop内核,而相比于Hadoop 1.0,Hadoop 2.0的最大变化出如今内核(HDFS、MapReduce和YARN),但与生态系统中其余系统进行集成测试是必需的。
除了以上特性外,Apache官方还给出了两个特殊说明:
(1)HDFS变化:HDFS的symlinks(相似于Linux中的软链接)被将移到了2.3.0版本中
(2)YARN/MapReduce注意事项:管理员在NodeManager上设置ShuffleHandler service时,要采用“mapreduce_shuffle”,而非以前的“mapreduce.shuffle”做为属性值
新版本不只加强了核心平台的大量功能,同时还修复了大量bug。新版本对HDFS作了两个很是重要的加强:(1)、支持异构的存储层次;(2)、经过数据节点为存储在HDFS中的数据提供了内存缓存功能。
借助于HDFS对异构存储层次的支持,咱们将可以在同一个Hadoop集群上使用不一样的存储类型。此外咱们还可使用不一样的存储媒介——例如商业磁盘、企业级磁盘、SSD或者内存等——更好地权衡成本和收益。若是你想更详细地了解与该加强相关的信息,那么能够访问这里。相似地,在新版本中咱们还能使用Hadoop集群中的可用内存集中地缓存并管理数据节点内存中的数据集。MapReduce、Hive、Pig等相似的应用程序将可以申请内存进行缓存,而后直接从数据节点的地址空间中读取内容,经过彻底避免磁盘操做极大地提升扫描效率。Hive如今正在为ORC文件实现一个很是有效的零复制读取路径,该功能就使用了这项新技术。
在YARN方面,令咱们很是兴奋的事情是资源管理器自动故障转移功能已经进入尾声,虽然在2.3.0这个版本中该功能尚未被发布,可是极有可能会包含在Hadoop-2.4中。此外,2.3.0版本还对YARN作了一些关键的运维方面的加强,例如更好的日志、错误处理和诊断等。
MapReduce的一个关键加强MAPREDUCE-4421。借助于该功能咱们已经再也不须要在每一台机器上安装MapReduce二进制程序,仅仅须要经过YARN分布式缓存将一个MapReduce包复制到HDFS中就能够了。固然,新版本还包含大量的bug修复以及其余方面的加强。例如:
(1)YarnClientImpl类中的异步轮询操做引入了超时;
(2)修复了RMFatalEventDispatcher没有记录事件缘由的问题;
(3)HA配置不会影响节点管理器的RPC地址;
(4)RM Web UI和REST API统一使用YarnApplicationState;
(5)在RpcResponseHeader中包含RPC错误信息,而不是将其分开发送;
(6)向jetty/httpserver中添加了请求日志;
(7)修复了将dfs.checksum.type定义为NULL以后写文件和hflush会抛出java.lang.ArrayIndexOutOfBoundsException的问题。
2014年4月,Hadoop 2.4.0发布。关键特性包括:
(1)HDFS支持访问控制列表(ACLs,Access Control Lists);
(2)原生支持HDFS滚动升级;
(3)HDFS FSImage用到了 protocol-buffers,从而能够平滑地升级;
(4)HDFS彻底支持HTTPS;
(5)YARN ResourceManager支持自动故障转移,解决了YARNResourceManager的单点故障;
(6)对YARN的Application History Server和 pplication Timeline Server上的新应用增强了支持;
(7)经过抢占使得YARN Capacity Scheduler支持强SLAs协议;
安全对于Hadoop来讲相当重要,因此在Hadoop 2.4.0版本中对HDFS的全部访问(包括WebHDFS, HsFTP甚至是web-interfaces)都支持了HTTPS。在Hadoop 2.4.0解决了ResourceManager的单点故障。这样会在集群中存在两个ResourceManager,其中一个处于Active;另外一个处于 standby。当Active的出现故障,这样Hadoop能够自动平滑地切换到另一个ResourceManager,这个新的ResourceManager将会自动的重启那些提交的applications。在下一阶段,Hadoop将会增长一个热standby(add a hot standby),这个standby能够继续从故障点运行的应用程序,以保存任何已经完成的工做。
2014年8月,Hadoop 2.5.0发布。关键特性包括:
1. Common
a) 使用HTTP代理服务器时认证改进。当经过代理服务器使用WebHDFS时这是很是有用的。
b) 增长了一个新的Hadoop指标监控sink,容许直接写到Graphite。
c) Hadoop文件系统兼容相关的规范工做。
2. HDFS
a) 支持POSIX风格的扩展文件系统。更多细节查看Extended Attributes in HDFS文档。
b) 支持离线image浏览,客户端如今能够经过WebHDFS的API浏览一个fsimage。
c) NFS网关获得大量可支持性的改进和bug修复。Hadoop portmapper不在须要运行网关,网关如今能够拒绝没有权限的端口的链接。
d)SecondaryNameNode, JournalNode, and DataNode 的web UI已经使用HTML5和JS美化。
3. YARN
a) YARN的RESTAPI如今支持写/修改操做。用户能够用REST API提交和杀死应用程序。
b) 时间线存储到YARN,用来存储一个应用通用的和特殊的信息,支持Kerberos认证。
c) 公平调度器支持动态分层用户队列,运行时,用户队列在任一指定的父队列中被动态的建立。
2014年11月,Hadoop 2.6.0发布。(推荐使用)
是市场上企业应用最多,与其它发行版结合最好的版本,推荐你们用这个版本。
关键特性包括:
1. Common
Hadoop Key Management Server(KMS)是一个基于HadoopKeyProvider API编写的密钥管理服务器。他提供了一个client和一个server组件,client和server之间基于HTTP协议使用REST API通讯。Client是一个KeyProvider的实现,使用KMS HTTP REST API与KMS交互。KMS和它的client有内置的安全机制,支持HTTP SPNEGO Kerberos认证和HTTPS安全传输。KMS是一个Java Web应用程序,运行在与Hadoop发行版绑定在一块儿的预先配置好的Tomcat服务器上。
2. Tracing
HDFS-5274增长了追踪经过HDFS的请求的功能,此功能使用了开源的库,HTrace。你们能够看一下HTrace,功能很强大,Cloudera开源出来的。
3. HDFS
a) TransparentEncryption,HDFS实现了一个透明的,端到端的加密方式。一旦配置了加密,从HDFS读出数据解密和写入数据加密的过程对用户应用程序代码带来讲都是透明的。加密过程是端到端的,这意味着数据只能在客户端被加密解密。HDFS历来不存储,也不访问未加密的数据和数据加密密钥。这样知足了加密过程的两个典型的需求:at-rest encryption(静态加密,也就是说,数据持久化在像硬盘这样的媒介上),in-transit encryption(在途加密,例如,当数据在网络中传输的时候)。
b) StorageSSD&& Memory。ArchivalStorage(档案存储器)是将计算能力与不断增加的存储能力分离。拥有高密度低成本的存储可是计算能力较低的节点将变得可用,能够在集群中作冷存储。增长更多的节点做为冷存储能够提升集群的存储能力,跟集群的计算能力无关。
4. MapReduce
这一部分主要是一些bug的修复和改进。增长了两个新的新特,在2.5.2里已经有所描述了。这里在简单看一下。
a) ResourceMangerRestart
b) 容许AM发送历史事件信息到timeline server。
5. YARN
a) NodeManagerRestart:这个特性可使NodeManager在不丢失运行在节点中的活动的container的状况下从新启动。
b) DockerContainer Executor:DockerContainer Executor(DCE)容许YARN NodeManager在Docker container中启动YARN container。用户能够指定他们想用来运行YARN container的Docker的镜像。这些container提供了一个能够自定义的软件环境,用户的代码能够运行在其中,与NodeManager运行的环境隔离。这些运行用户代码的container能够包含应用程序须要的特定的库,它们能够拥有与NodeManager不一样版本的Perl,Python甚至是Java。事实上,这些container能够运行与NodeManager所在的OS不一样版本的Linux。尽管YARNcontainer必须定义运行Job所需的全部的环境和库,可是NodeManager中的全部的东西都不会共享。
Docer为YARN提供了一致和隔离两种模式,一致模式下,全部的YARN container将拥有相同的软件环境,在隔离模式下,无论物理机器安装了什么都不干扰。
2015年7月,Hadoop 2.7.0发布。关键特性包括:
1. Common
支持WindowsAzure Storage,BLOB做为Hadoop中的文件系统。
Hadoop HDFS
a) 支持文件截断(file truncate);
b) 支持每一个存储类型配额(Support for quotas per storage type);
c) 支持可变长度的块文件
2. YARN
一、YARN安全模块可插拔
a)YARN的本地化资源能够自动共享,全局缓存(测试版)
HadoopMapReduce
b)可以限制运行的Map/Reduce做业的任务
c)为很是的大Job(有许多输出文件)加快了FileOutputCommitter。
2. HDFS
a) 支持文件截断(file truncate);
b) 支持每一个存储类型配额(Support for quotas per storage type);
c) 支持可变长度的块文件
2. MAPREDUCE
a) 可以限制运行的Map/Reduce做业的任务
b) 为很是的大Job(有许多输出文件)加快了FileOutputCommitter。
2015年7月,Hadoop 2.7.1发布。关键特性包括:
本版本属于稳定版本,是自Hadoop 2.6.0以来又一个稳定版,同时也是Hadoop 2.7.x版本线的第一个稳定版本,也是 2.7版本线的维护版本,变化不大,主要是修复了一些比较严重的Bug(其中修复了131个Bugs和patches)