您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 公司方案 > hadoop版本差异详解.docx
1Hadoop版本的关键特性调研报高ApacheHadoopApache版本衍化ApacheHadoop版本分为两代,我们将第一代Hadoop称为Hadoop1.0,第二代Hadoop称为Hadoop2.0。第一代Hadoop包含三个大版本,分别是0.20.x,0.21.x和0.22.x,其中,0.20.x最后演化成1.0.x,变成了稳定版,而0.21.x和0.22.x则NameNodeHA等新的重大特性。第二代Hadoop包含两个版本,分别是0.23.x和2.x,它们完全不同于Hadoop1.0,是一套全新的架构,均包含HDFSFederation和YARN两个系统,相比于0.23.x,2.x增加了NameNodeHA和Wire-compatibility两个重大特性。经过上面的大体解释,大家可能明白了Hadoop以重大特性区分各个版本的,总结起来,用于区分Hadoop版本的特性有以下几个:(1)Append支持文件追加功能,如果想使用HBase,需要这个特性。(2)RAID在保证数据可靠的前提下,通过引入校验码较少数据块数目.(3)Symlink支持HDFS文件链接(4)SecurityHadoop安全。需要注意的是,Hadoop2.0主要由Yahoo独立出来的hortonworks公司主持开发。2013年10月,Hadoop2.0发布。关键特性包括:a)YARNYARN是“YetAnotherResourceNegotiator”的简称,它是Hadoop2.0引入的一个全新的通用资源管理系统,可在其之上运行各种应用程序和框架,比如MapReduce、Tez、Storm等,它的引入使得各种应用运行在一个集群中成为可能。YARN是在MRv1基础上衍化而来的,是MapReduce发展到一定程度的必然产物,它的出现使得Hadoop计算类应用进入平台化时代,我的博客中包含大量介绍YARN的文章,有兴趣的读者可阅读:)HDFS单点故障得以解决Hadoop2.2.0同时解决了NameNode单点故障问题和内存受限问题,其中,单点故障是通过主备NameNode切换实现的,这是一种古老的解决服务单点故障的方案,主备NameNode之间通过一个共享存储同步元数据信息,因此共享存储系统的选择称为关键,2而Hadoop则提供了NFS、QJM和Bookeeper三种可选的共享存储系统,具体可阅读我的这篇文章:Hadoop2.0单点故障问题方案总结。c)HDFSFederation前面提到HDFS的NameNode存在内存受限问题,该问题也在2.2.0版本中得到了解决。这是通过HDFSFederation实现的,它允许一个HDFS集群中存在多个NameNode,每个NameNode分管一部分目录,而不同NameNode之间彼此独立,共享所有DataNode的存储资源,注意,NameNodeFederation中的每个NameNode仍存在单点问题,需为每个NameNode提供一个backup以解决单点故障问题。d)HDFS快照HDFS快照是指HDFS文件系统(或者子系统)在某一时刻的只读镜像,它的出现使得管理员可定时为重要文件或目录做快照,以防止数据误删、丢失等。具体可阅读:SnapshotsforHDFS(使用说明),SupportforRW/ROsnapshotsinHDFS。通过NFSv3访问HDFSNFS允许用户像访问本地文件系统一样访问远程文件系统,而将NFS引入HDFS后,用户可像读写本地文件一样读写HDFS上的文件,大大简化了HDFS使用,这是通过引入一个NFSgateway服务实现的,该服务能将NFS协议转换为HDFS访问协议,具体如下图所示。有兴趣的读者可阅读:SupportNFSv3interfacetoHDFS,以及相关设计文档:HDFSNFSGateway。e)支持Windows操作系统在2.2.0版本之前,Hadoop仅支持Linux操作系统,而Windows仅作为实验平台使用。从2.2.0开始,Hadoop开始支持Windows操作系统,具体可阅读我之前写的一篇文章:HadoopForWindows。f)兼容1.x上运行的MapReduce应用程序与Hadoop生态系统其他系统进行了充分的集成测试除了HDFS、MapReduce和YARN这三个核心系统外,Hadoop生态系统还包括Hbase、Hive、Pig等系统,这些系统底层依赖于Hadoop内核,而相比于Hadoop1.0,Hadoop2.0的最大变化出现在内核(HDFS、MapReduce和YARN),但与生态系统中其他系统进行集成测试是必需的。除了以上特性外,Apache官方还给出了两个特殊说明:(1)HDFS变化:HDFS的symlinks(类似于Linux中的软连接)被将移到了2.3.03版本中(2)YARN/MapReduce注意事项:管理员在NodeManager上设置ShuffleHandlerservice时,要采用“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)RMWebUI和RESTAPI统一使用YarnApplicationState;(5)在RpcResponseHeader中包含RPC错误信息,而不是将其分开发送;(6)向jetty/httpserver中添加了请求日志;(7)修复了将dfs.checksum.type定义为NULL之后写文件和hflush会抛出4java.lang.ArrayIndexOutOfBoundsException的问题。2014年4月,Hadoop2.4.0发布。关键特性包括:(1)HDFS支持访问控制列表(ACLs,AccessControlLists);(2)原生支持HDFS滚动升级;(3)HDFSFSImage用到了protocol-buffers,从而可以平滑地升级;(4)HDFS完全支持HTTPS;(5)YARNResourceManager支持自动故障转移,解决了YARNResourceManager的单点故障;(6)对YARN的ApplicationHistoryServer和pplicationTimelineServer上的新应用加强了支持;(7)通过抢占使得YARNCapacityScheduler支持强SLAs协议;安全对于Hadoop来说至关重要,所以在Hadoop2.4.0版本中对HDFS的所有访问(包括WebHDFS,HsFTP甚至是web-interfaces)都支持了HTTPS。在Hadoop2.4.0解决了ResourceManager的单点故障。这样会在集群中存在两个ResourceManager,其中一个处于Active;另一个处于standby。当Active的出现故障,这样Hadoop可以自动平滑地切换到另外一个ResourceManager,这个新的ResourceManager将会自动的重启那些提交的applications。在下一阶段,Hadoop将会增加一个热standby(addahotstandby),这个standby可以继续从故障点运行的应用程序,以保存任何已经完成的工作。2014年8月,Hadoop2.5.0发布。关键特性包括:1.Commona)使用HTTP代理服务器时认证改进。当通过代理服务器使用WebHDFS时这是非常有用的。b)增加了一个新的Hadoop指标监控sink,允许直接写到Graphite。c)Hadoop文件系统兼容相关的规范工作。2.HDFSa)支持POSIX风格的扩展文件系统。更多细节查看ExtendedAttributesinHDFS文档。b)支持离线image浏览,客户端现在可以通过WebHDFS的API浏览一个fsimage。5c)NFS网关得到大量可支持性的改进和bug修复。Hadoopportmapper不在需要运行网关,网关现在可以拒绝没有权限的端口的连接。d)SecondaryNameNode,JournalNode,andDataNode的webUI已经使用HTML5和JS美化。3.YARNa)YARN的RESTAPI现在支持写/修改操作。用户可以用RESTAPI提交和杀死应用程序。b)时间线存储到YARN,用来存储一个应用通用的和特殊的信息,支持Kerberos认证。c)公平调度器支持动态分层用户队列,运行时,用户队列在任一指定的父队列中被动态的创建。2014年11月,Hadoop2.6.0发布。关键特性包括:1.CommonHadoopKeyManagementServer(KMS)是一个基于HadoopKeyProviderAPI编写的密钥管理服务器。他提供了一个client和一个server组件,client和server之间基于HTTP协议使用RESTAPI通信。Client是一个KeyProvider的实现,使用KMSHTTPRESTAPI与KMS交互。KMS和它的client有内置的安全机制,支持HTTPSPNEGOKerberos认证和HTTPS安全传输。KMS是一个JavaWeb应用程序,运行在与Hadoop发行版绑定在一起的预先配置好的Tomcat服务器上。2.TracingHDFS-5274增加了追踪通过HDFS的请求的功能,此功能使用了开源的库,HTrace。大家可以看一下HTrace,功能很强大,Cloudera开源出来的。3.HDFSa)TransparentEncryption,HDFS实现了一个透明的,端到端的加密方式。一旦配置了加密,从HDFS读出数据解密和写入数据加密的过程对用户应用程序代码带来说都是透明的。加密过程是端到端的,这意味着数据只能在客户端被加密解密。HDFS从来不存储,也不访问未加密的数据和数据加密密钥。这样满足了加密过程的两个典型的需求:at-restencryption(静态加密,也就是说,数据持久化在像硬盘这样的媒介上),in-transitencryption(在途加密,例如,当数据在网络中
本文标题:hadoop版本差异详解.docx
链接地址:https://www.777doc.com/doc-4813705 .html