•
2.2 Hadoop的不同版本
• 这一节我们来看一下Hadoop的版本。为什么我们需要 强调版本问题呢,因为具体在使用的时候版本的功能差别还是很大的。大体上来讲,Apache Hadoop版本分为两代,我们这里是讲Apache Hadoop,一会还要讲其他版本的Hadoop。因为不同的企业会根据自己的需要开发适合自己的Hadoop,所以就有一些企业版的Hadoop。那么Apache Hadoop
• 我们将第一代Hadoop称为Hadoop 1.0,第二代Hadoop称为Hadoop 2.0,2017年 Hadoop3.0 发布,这个版本是 Apache Hadoop 3.0.0 的第一个稳定版本,有很多重大的改进,比如支持EC、支持多于 2 个的 NameNodes、Intra-datanode 均衡器等等。下面我们来看一下这几个Apache版本的 Hadoop
• 第一代Hadoop包含三个大版本,分别是0.20.x,0.21.x和0.22.x,其中,0.20.x最后演化成1.0.x,看到后面的X,X都是可以替换的,0.20.x变成了稳定版1.0.x,而0.21.x和0.22.x则增加了NameNode HA等新的重大特性
• 第二代Hadoop包含两个版本,分别是0.23.x和2.x,可以看出版本是比较乱的,一会是0开头,一会是1或者2.可以看出版本规划是无序性的。它们完全不同于Hadoop 1.0,是一套全新的架构,均包含HDFS Federation和YARN两个系统,相比于0.23.x,2.x增加了NameNode HA和Wire-compatibility两个重大特性
• 我们来详细看一下两个版本到底不一样在什么地方,从这张图可以看出来,Hadoop有两大核心,一个是HDFS,一个是MapReduce,Mapreduce从这个单词你可以看出来,它其实包括两部分,一个是数据处理DataProcessing,一个是集群的资源管理Cluster resource management.MapReduce其实是要做两份工作,一个是数据处理,一个呢就是底层资源的调度,它要把CPU,内存这些资源分配给上面的计算任务,这个都是由MapReduce框架自己来管理的。正是因为在1.0版本当中,MapReduce这么一个框架结构,它所管的东西太多了,导致它效率低下。正如我们如果在企业中,一个主管既要管人事,又要管财务,还得管销售,那么他的做事效率肯定高不了。所以到了2.0版本当中,系统设计人员就把Mapreduce所承担的任务分解了,把它对资源的调度管理功能单独给划出来,不让它再去管资源调度了,就只负责处理数据就可以了。
• MapReduce借助了函数处理语言,你只需要用Map函数或Reduce函数去完成你相关的处理就可以了,所以把Mapreduce里面相关的负责资源处理的模块全部单独抽出来,抽出来干嘛呢,单独做成一个新的框架,叫什么呢?叫做YARN。它的全称是Yet Another Resource Negotiator。另外一个资源协调器,可以看出来它的名字的含义。就是另外一个单独负责协调资源的这样一个角色。它的作用就很明确了,就是给上层计算调度底层资源。到了2.0版本,MapReduce就可以专心只做数据处理工作了。那么计算时所需的CPU,内存,带宽这些资源就是由YARN来调度。Mapreduce是架构在Yarn之上的第一个产品,Yarn还可以为其他的计算框架完成资源调度,比如我们后面要讲的流计算平台Spark,Yarn就可以为它提供资源调度,1.0和2.0 区别还是非常明显的。除了这个以外,HDFS在两个版本中也是有很大区别的,在后面我们会讲HDFS它的可拓展新不是很好,数据多了以后呢?唯一的名称节点管理非常多数据,扩展性就会比较差,那么怎么办呢?HDFS到了2.0以后增加了一个叫做NN Federation这个新的技术。NN是什么呢?全称叫做NameNode,就是名称节点,这个大家在后面会学到,就是整个HDFS当中会有个节点叫做名称节点。它就是作为数据目录服务的,外界访问都先访问这么一个目录服务,然后再去取数据,这就好像我们要到图书馆找某一本书,我们会先去查一下这本书在图书馆里的摆放位置目录,然后再去相对应的位置去拿到这本书。又有点像大家在宜家家居买家俱。我们也是先通过产品目录找到摆放的位置,再去取到所需的商品。HDFS2.0设置多个名称节点,进行分区管理,你管这片数据,我管那片数据,责任非常明晰。构成一个联邦叫做Federation,另外 HDFS2.0引入了HDFS HA,HA全称High Avalability,为什么叫这个名字,高可用性,整个HDFS 1.0版本有个非常大的缺陷。他只有一个Namenode,会出现什么问题呢?作为一个存储元数据的目录服务器,,会发生单点失效,一旦失效以后,整个系统就不可用了,到了2.0当中,我们引入了HA机制,给NameNode做了热备份,有两个Namenode,另外一个是热备份,一旦一个出故障,另一个马上顶过来,它是引入这么一个机制。
• 2017年,12月Apache软件基金会宣布了分布式计算开源软件框架第三版。ApacheHadoop3.0可以说是自2013年Hadoop2.0发布以来的第一个主要版本。
• ApacheHadoop3.0的项目经理AndrewWang表示呢,Hadoop3.0是该项目的一个重要里程碑,也是迄今为止最大的发布版本。它代表了自Hadoop2.0以来五年中数百名贡献者的共同努力。他很期待用户可以从该版本的新功能中获益,从而提高平台的效率,可扩展性和可靠性。
• 。最新版本包含HDFSerasure编码,YARNTimelineService版本2的预览,YARN资源类型以及云存储系统周围的改进功能和性能增强,包括HadoopCommon,用于支持其他Hadoop模块,Hadoop分布式文件系统,HadoopYARN和HadoopMapReduce。
• ApacheHadoop副总裁ChrisDouglas表示,该平台随着硬件趋势不断发展,并适应批量分析以外的新工作负载,特别是实时查询和长期运行服务。与此同时,众多开源贡献者已经将ApacheHadoop应用于广泛的部署环境,包括云。
• ApacheHadoop广泛部署在Adobe,AWS,Apple,Cloudera,eBay,Facebook,Google,Hortonworks,IBM,Intel,LinkedIn,Microsoft,Netflix和Teradata等企业。此外,它还促进了其他Hadoop相关项目,如:ApacheCassandra,HBase,Hive,Spark和ZooKeeper等的发展。
• ApacheHadoop以其能够在大数据生态系统的大型硬件集群上运行和管理数据应用程序而闻名,而Hadoop除了Apache软件基金会的版本以外呢,还有其他的一些版本。Hadoop遵从Apache开源协议,用户可以免费地任意使用和修改Hadoop,也正因此,市面上出现了很多Hadoop版本。其中有很多厂家在Apache Hadoop的基础上开发自己的Hadoop产品,比如Cloudera的CDH,Hortonworks的HDP,MapR的MapR产品等。
• 那么Apache 版本的Hadoop和其他版本的Hadoop比较究竟有什么优缺点呢,我们在实际开发中应该如何选择呢。下面我们比较一下Apache Hadoop和其他版本Hadoop的区别:
• Apache社区版本
• 优点:
• 完全开源免费。
• 社区活跃
• 文档、资料详实
• 缺点:
• 复杂的版本管理。版本管理比较混乱的,各种版本层出不穷,让很多使用者不知所措。
• 复杂的集群部署、安装、配置。通常按照集群需要编写大量的配置文件,分发到每一台节点上,容易出错,效率低下。
• 复杂的集群运维。对集群的监控,运维,需要安装第三方的其他软件,如ganglia,nagois等,运维难度较大。
• 复杂的生态环境。在Hadoop生态圈中,组件的选择、使用,比如Hive,Mahout,Sqoop,Flume,Spark,Oozie等等,需要大量考虑兼容性的问题,版本是否兼容,组件是否有冲突,编译是否能通过等。经常会浪费大量的时间去编译组件,解决版本冲突问题。
• 第三方发行版本(如CDH,HDP,MapR等)
• 优点:
• 基于Apache协议,100%开源。
• 版本管理清晰。比如Cloudera,CDH1,CDH2,CDH3,CDH4,CDH5 等,后面加上补丁版本,如CDH4.1.0 patch level 923.142,表示在原生态Apache Hadoop 0.20.2基础上添加了1065个patch。
• 比Apache Hadoop在兼容性、安全性、稳定性上有增强。第三方发行版通常都经过了大量的测试验证,有众多部署实例,大量的运行到各种生产环境。
• 版本更新快。通常情况,比如CDH每个季度会有一个update,每一年会有一个release。
• 基于稳定版本Apache Hadoop,并应用了最新Bug修复或Feature的patch
• 提供了部署、安装、配置工具,大大提高了集群部署的效率,可以在几个小时内部署好集群。
• 运维简单。提供了管理、监控、诊断、配置修改的工具,管理配置方便,定位问题快速、准确,使运维工作简单,有效。
• 通过比较,我们看到,排名前十的Hadoop发行版中,只有CDH、HDP、Apache、MapR是开源的软件,其他都是闭源软件,暂时不参与讨论。MapR由于在分布存储上不采用HDFS,而是重写了HDFS,所以,暂时也不讨论它。那么,我们只进行第三方商业发行版CDH、HDP之间的比较。
• 在这张表中,我们可以很清晰的看到各个版本Hadoop 的特点和对比。

