hadoop基础—-hadoop实战(零)—–hadoop的平台版本选择

生产环境中,hadoop的平台版本选择是一个公司架构之时,很重要的一个考虑因素。

hadoop的平台选择

因为hadoop是开源的,所以经过这么多年的发展,已经有更多的分支版本。也有很多公司专门发行了相关版本以及管理工具,甚至对mapreduce等的编写进行了封装形成了套件,实现了配置化的更方便的使用hadoop。

学习使用hadoop之前我们应该对hadoop的版本平台有足够的了解,才能更好的作出选择。

Apache hadoop是官方版本,每个发行版本都包含有Apache Hadoop,而几乎每个大数据套件都包含或使用了一个发行版本。

如下图:

 

 

不同平台的对比

Apache Hadoop

Apache Hadoop是一款支持数据密集型分布式应用并以Apache 2.0许可协议发布的开源软件框架。它支持在商品硬件构建的大型集群上运行的应用程序。Hadoop是根据Google公司发表的MapReduce和Google档案系统的论文自行实作而成。称为社区版Hadoop。(官方版Hadoop)

优点

1.完全开源免费

2.社区活跃

3.文档、资料详实

缺点

1.复杂的版本管理。版本管理比较混乱的,各种版本层出不穷,让很多使用者不知所措。

2.复杂的集群部署、安装、配置。通常按照集群需要编写大量的配置文件,分发到每一台节点上,容易出错,效率低下。

3.复杂的集群运维。对集群的监控,运维,需要安装第三方的其他软件,如ganglia,nagois等,运维难度较大。

4.复杂的生态环境。在Hadoop生态圈中,组件的选择、使用,比如Hive,Mahout,Sqoop,Flume,Spark,Oozie等等,需要大量考虑兼容性的问题,版本是否兼容,组件是否有冲突,编译是否能通过等。经常会浪费大量的时间去编译组件,解决版本冲突问题。

第三方发行版Hadoop

Hadoop遵从Apache开源协议,用户可以免费地任意使用和修改Hadoop,也正因此,市面上出现了很多Hadoop版本。其中有很多厂家在Apache Hadoop的基础上开发自己的Hadoop产品,比如Cloudera的CDH,Hortonworks的HDP,MapR的MapR产品等。

优点

1.基于Apache协议,100%开源。

2.版本管理清晰。比如Cloudera,CDH1,CDH2,CDH3,CDH4等,后面加上补丁版本,如CDH4.1.0 patch level 923.142,表示在原生态Apache Hadoop 0.20.2基础上添加了1065个patch。

3.比Apache Hadoop在兼容性、安全性、稳定性上有增强。第三方发行版通常都经过了大量的测试验证,有众多部署实例,大量的运行到各种生产环境。

4.版本更新快。通常情况,比如CDH每个季度会有一个update,每一年会有一个release。

5.基于稳定版本Apache Hadoop,并应用了最新Bug修复或Feature的patch

6.提供了部署、安装、配置工具,大大提高了集群部署的效率,可以在几个小时内部署好集群。

7.运维简单。提供了管理、监控、诊断、配置修改的工具,管理配置方便,定位问题快速、准确,使运维工作简单,有效。

缺点

1.涉及到厂商锁定的问题。(可以通过技术解决)

第三方公司介绍

Cloudera

最成型的发行版本,拥有最多的部署案例。提供强大的部署、管理和监控工具。Cloudera开发并贡献了可实时处理大数据的Impala项目。

Hortonworks

不拥有任何私有(非开源)修改地使用了100%开源Apache Hadoop的唯一提供商。Hortonworks是第一家使用了Apache HCatalog的元数据服务特性的提供商。并且,它们的Stinger开创性地极大地优化了Hive项目。Hortonworks为入门提供了一个非常好的,易于使用的沙盒。Hortonworks开发了很多增强特性并提交至核心主干,这使得Apache Hadoop能够在包括Windows Server和Windows Azure在内的Microsft Windows平台上本地运行。

MapR

与竞争者相比,它使用了一些不同的概念,特别是为了获取更好的性能和易用性而支持本地Unix文件系统而不是HDFS(使用非开源的组件)。可以使用本地Unix命令来代替Hadoop命令。除此之外,MapR还凭借诸如快照、镜像或有状态的故障恢复之类的高可用性特性来与其他竞争者相区别。该公司也领导着Apache Drill项目,本项目是Google的Dremel的开源项目的重新实现,目的是在Hadoop数据上执行类似SQL的查询以提供实时处理。

Amazon Elastic Map Reduce(EMR)

区别于其他提供商的是,这是一个托管的解决方案,其运行在由Amazon Elastic Compute Cloud(Amazon EC2)和Amzon Simple Strorage Service(Amzon S3)组成的网络规模的基础设施之上。除了Amazon的发行版本之外,你也可以在EMR上使用MapR。临时集群是主要的使用情形。如果你需要一次性的或不常见的大数据处理,EMR可能会为你节省大笔开支。然而,这也存在不利之处。其只包含了Hadoop生态系统中Pig和Hive项目,在默认情况下不包含其他很多项目。并且,EMR是高度优化成与S3中的数据一起工作的,这种方式会有较高的延时并且不会定位位于你的计算节点上的数据。所以处于EMR上的文件IO相比于你自己的Hadoop集群或你的私有EC2集群来说会慢很多,并有更大的延时。

第三方大数据套件

套件一般是一个商业化的整体大数据解决方案,虽然它一般包含hadoop的某个发行版,但不仅仅是hadoop发行版,还包括其它内存数据库,计算引擎和操作管理界面等。

优点

1.部署操作简单

2.管理方便

3.mapreduce等数据运算分析等做了相关封装,能配置化的实现分析,不需要写那么多代码

缺点

1.付费

2.因为套件都是服务商搭配好的,所以具有一定的局限性,而且会捆绑安装,需要考虑是否符合本公司的业务情况。

部分大数据套件介绍

云海Insight

云海Insight是一款大数据中间件的产品套件,包含内存数据库MemDB、分布式数据仓库MPP和分布式计算引擎HD,其中内存数据库MemDB是一个支持OLAP、OLTP、高并发的内存数据库产品,分布式数据仓库MPP是应用于即席查询及实时在线查询的大规模分布式并行处理数据库,而分布式计算引擎HD是处理海量数据、进行数据分析和数据挖掘的Hadoop发行版。

云海Insight提供了部署、监控、管理的可视化工具,另外还提供了SQL、API、命令行、可视化界面多种操作方式,可轻松实现多类型访问接口。云海Insight支持标准化的x86平台,支持融合架构的大数据一体机,可以以内置服务的形式无缝集成进云海IOP平台。

云海Insight有两个典型特征:第一,从处理数据量看,它涵盖了从GB级到TB到PB的数据计算能力;第二,从计算模式看,它支持并行计算、分布式计算、内存计算等多种计算模式。与市场上其他同类产品相比,云海Insight是为企业客户定制和优化的软件套件,可以充分满足用户当前以及未来相当长时间内的大数据应用需求。能够帮助企业客户轻松构建包括数据采集、数据存储、数据处理、数据应用开发等在内的覆盖大数据生命周期的管理体系。

Pivotal BDS开源大数据套件

Pivotal大数据套件中主要包含了以下几个产品:MPP数据库Greenplum、内存数据库GemFire、实时Hadoop分析引擎GemFire XD、SQL-on-Hadoop工具HAWQ以及企业级Hadoop发行版Pivotal HD。其中Greenplum以及GemFire(SQLFire)这两个“老牌”产品主要用来处理结构化数据,其他产品都是Pivotal最新的研发成果,主要用来应对非结构化数据需求。整个套件将从大规模并行处理、内存计算以及Hadoop批处理三方面,满足企业对大数据的需求。

其中主要的三个开源的组件分别是:

GemFire内存中 NoSQL 数据库

HAWQ大规模并行 SQL 分析处理引擎

Greenplum DB大规模并行处理分析数据库

Pivotal 开源这三个核心组件最主要的原因是其成功的Cloud Foundry开源案例。

大数据处理套件TBDS

大数据套件(Tencent Big Data Suit)是基于腾讯多年海量数据处理经验,对外提供的可靠、安全、易用的大数据处理平台。用户可以按需部署大数据处理服务实现

数据处理需求,例如:报表展示,数据提取、分析,客户画像等大数据应用。

平台的选择

我们在上面的介绍中已经说明各个平台的优缺点。

我们再总结如下:

Apache:

学习并理解底层细节

自己选择和配置

发行版本:

容易的设置

初学(新手)

部署工具

需要商业支持

大数据套件:

不同数据源集成

需要商业支持

代码生成

大数据作业的图形化调度

实现大数据处理(集成、操作、分析)

当我们决定是否采用某个软件用于开源环境时,通常需要考虑以下几个因素:

(1)是否为开源软件,即是否免费。

(2) 是否有稳定版,这个一般软件官方网站会给出说明。

(3) 是否经实践验证,这个可通过检查是否有一些大点的公司已经在生产环境中使用知道。

(4) 是否有强大的社区支持,当出现一个问题时,能够通过社区、论坛等网络资源快速获取解决方法。

综上所述,考虑到大数据平台高效的部署和安装,中心化的配置管理,使用过程中的稳定性、兼容性、扩展性,以及未来较为简单、高效的运维,遇到问题低廉的解决成本。

个人建议生产环境中使用第三方发行版本。

当我们对公司的业务逻辑有充分的了解并且对整套的大数据环境有需求时,在公司有预算的前提下 可以考虑 大数据套件。

但对于初学者来说,生产环节建议使用第三方发行版本。 作为我们了解hadoop的配置和运作我们可能还需要安装配置一次Apache 官方版本。

hadoop版本的选择

我们上面已经作了平台的对比和介绍,无论我们选择的是官方版本还是 第三方发行版,还是大数据套件,都是依赖于 官方版本的。

例如比较常用的第三方发行版—Cloudera公司的Hadoop版本。

截至目前为止,CDH共有4个版本,其中,前两个已经不再更新,最近的两个,分别是CDH3(在Apache Hadoop 0.20.2版本基础上演化而来的)和CDH4在Apache Hadoop 2.0.0版本基础上演化而来的),分别对应Apache的Hadoop 1.0和Hadoop 2.0,它们每隔一段时间便会更新一次。

Cloudera以patch level划分小版本,比如patch level为923.142表示在原生态Apache Hadoop 0.20.2基础上添加了1065个patch(这些patch是各个公司或者个人贡献的,在Hadoop jira上均有记录),其中923个是最后一个beta版本添加的patch,而142个是稳定版发行后新添加的patch。由此可见,patch level越高,功能越完备且解决的bug越多。

Cloudera版本层次更加清晰,且它提供了适用于各种操作系统的Hadoop安装包,可直接使用apt-get或者yum命令进行安装,更加省事。

因为hadoop官方版本的2.0和1.0是完全不同的两套架构,所以我们在选择 无论是官方版本还是第三方发行版以及 大数据套件之前都需要对 官方版本有一个了解。

 

 

Apache Hadoop版本衍化

截至目前(2012年12月23日),Apache Hadoop版本分为两代,我们将第一代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增加了NameNode HA和Wire-compatibility两个重大特性。

经过上面的大体解释,大家可能明白了Hadoop以重大特性区分各个版本的,总结起来,用于区分Hadoop版本的特性有以下几个:

(1)Append 支持文件追加功能,如果想使用HBase,需要这个特性。

(2)RAID 在保证数据可靠的前提下,通过引入校验码较少数据块数目。详细链接:

https://issues.apache.org/jira/browse/HDFS/component/12313080

(3)Symlink 支持HDFS文件链接,具体可参考: https://issues.apache.org/jira/browse/HDFS-245

(4)Security Hadoop安全,具体可参考:https://issues.apache.org/jira/browse/HADOOP-4487

(5) NameNode HA 具体可参考:https://issues.apache.org/jira/browse/HDFS-1064

(6) HDFS Federation和YARN

 

 

 

 

 

 

ps:X表示有该特性。

更多新的版本信息可在官网查看:

http://hadoop.apache.org/releases.html

Apache Hadoop版本对其它组件的支持

在部署的时候,需要注意hadoop版本与其它生态圈组件例如hbase的版本匹配。

因为hadoop的版本与其它组件并不是版本向上兼容向下兼容那么简单。

有些版本不对应直接就不能使用。

哪个版本对应哪个版本的组件 需要在组件官网中查询。

例如hbase

下面在给列出官网信息:

下面面符号的含义:

S =支持并且测试,

X = 不支持,

NT =应该可以,但是没有测试.

HBase-0.92.xHBase-0.94.xHBase-0.96.xHBase-0.98.x[a]HBase-1.0.x

Hadoop-0.20.205SXXXX

Hadoop-0.22.xSXXXX

Hadoop-1.0.0-1.0.2[c]XXXXX

Hadoop-1.0.3+SSSXX

Hadoop-1.1.xNTSSXX

Hadoop-0.23.xXSNTXX

Hadoop-2.0.x-alphaXNTXXX

Hadoop-2.1.0-betaXNTSXX

Hadoop-2.2.0XNT[d]SSNT

Hadoop-2.3.xXNTSSNT

Hadoop-2.4.xXNTSSS

Hadoop-2.5.xXNTSSS

更多新的信息可在具体组件的官网部分查看,例如hbase:

http://hbase.apache.org/book.html

 

 

 

 

更多组件官网入口可查看:

http://hadoop.apache.org/releases.html#Release+Notes

 

 

在组件getStart页面 一般都会有说明 或者在组件的 release 页面可查看到相关版本信息。例如 hive:

 

 

版本的选择

上面的发行版本都能灵活地单独使用或是与不同的大数据套件组合使用。而这期间出现的一些其它的发行版本则不够灵活,会将你绑定至特定的软件栈和(或)硬件栈。比如EMC的Pivotal HD原生地融合了Greenplum的分析数据库,目的是为了在Hadoop,或Intel的Apache Hadoop发行版本之上提供实时SQL查询和卓越的性能,Intel的Apache Hadoop发行版本为固态驱动器进行了优化,这是其他Hadoop公司目前还没有的做法。

所以,如果你的企业已经有了特定的供应方案栈,则一定要核查它支持哪个Hadoop发行版本。比如,如果你使用了Greeplum数据库,那么Pivotal就可能是一个完美的选择,而在其他情况下,可能更适合采取更加灵活的解决方案。例如,如果你已经使用了Talend ESB,并且你想使用TalenD Big Data来启动你的大数据项目,那么你可以选择你心仪的Hadoop发行版本,因为Talend并不依赖于Hadoop发行版本的某个特定提供商。

为了做出正确的选择,请了解各个发行版本的概念并进行试用。请查证所提供的工具并分析企业版加上商业支持的总费用。在这之后,你就可以决定哪个发行版本是适合自己的。

目前hadoop2.0的版本已经慢慢趋于稳定。

但hadoop2.0与hadoop1.0 区别太大。

为了更好的学习hadoop。

我们在学习中最好从hadoop1.0开始。

至于生产环境中的hadoop版本选择 则需要根据公司的业务需求会使用到哪些主要的组件。再根据组件反过来决定hadoop的稳定版本即可。

目前生成环境较常用的 版本如下:

 

 

选好底层依赖的相关hadoop版本以及平台之后 我们就可以开始我们hadoop之旅了。

Leave A Comment