初学者有关Hadoop版本选择的考虑

来源:互联网 发布:网络外教一对一价格 编辑:程序博客网 时间:2024/05/28 09:32

一、前言:  

   刚开始学习Hadoop时就曾经一直抱怨Hadoop的安装部署为什么这么麻烦,对于一个新手需要捯饬一天才能把分布式环境安装配置好。而对于一个自学Hadoop而周围又没人交流的菜鸟来说,对版本的选择还是比较重要,Hadoop除了Apache这个版本,还有许多第三方的版本,而且已经很好地解决了Hadoop部署管理复杂的问题。为了后来者少走弯路在此记录一下,也给新人提个醒。

   目前Hadoop的发行版除了Apache的开源版本之外,还有华为发行版、Intel发行版、Cloudera发行版(CDH)、Hortonworks发行版(HDP)、MapR等,所有这些发行版均是基于Apache Hadoop衍生出来的,因为Apache Hadoop的开源协议允许任何人对其进行修改并作为开源或者商业产品发布。国内大多数公司发行版是收费的,比如Intel发行版、华为发行版等。不收费的Hadoop版本主要有国外的四个,分别是Apache基金会hadoop、Cloudera版本(CDH)、Hortonworks版本(HDP)、MapR版本。


二、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
  • 提供了部署、安装、配置工具,大大提高了集群部署的效率,可以在几个小时内部署好集群。
  • 运维简单。提供了管理、监控、诊断、配置修改的工具,管理配置方便,定位问题快速、准确,使运维工作简单,有效。

缺点:

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

三、第三方发行版本的比较

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


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


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


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

以上为具有代表性的第三方发行版,另外的发行版则不一一列举了。


四、选择决定

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

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

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

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

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


总结

  综上所述,考虑到大数据平台高效的部署和安装,中心化的配置管理,使用过程中的稳定性、兼容性、扩展性,以及未来较为简单、高效的运维,遇到问题低廉的解决成本。
建议使用第三方发行版本。
其中在第三发发行版中,国内应用较多的是Cloudera的CDH。大家也可以详细对比优缺点,根据自己的需要做选择。


五、最后,附上业界朋友对待这个问题的一些代表性看法:

路人甲:

果断CDH。
数据工程师应该更关注应用而不是环境本身。
据我了解几家前20的互联网公司也是Cloudera的用户。
话说行业分工也越来越细,Hadoop肯定会往基础组件的方向发展,如果不是希望深入做Hadoop运维的话,就不用折腾原生的了。
路人乙:
我的答案是CDH。必须要说CDH用起来最省时省力。自动探测host,选择版本,配置简单,几乎是傻瓜式一键安装。MapR方便程度就稍微差一些,但是仍然比Apache要方便很多。但是MapR版本有一个致命的缺点,它用的不是Hadoop的HDFS而是他们自己实现的MapRFS。导致了Hadoop生态系统中所有涉及到文件系统操作的系统都需要使用MapR的发行版。为了兼容MapRFS,源码都被改过。可以到MapR的github账户上看到。Apache的话就真心需要专职运维人员去管理了。需要使用一些集群管理配置工具了。手动绝对累死。你所说的CDH没有对yarn的开发力度不大我觉得这个倒不用太担心。CDH会定期根据Apache开源的最新稳定版本发布相应的CDH版本,所以不存在版本落后最新版很多的情况。而且我记得CDH现在加入了parcel管理,可以非常简单方便地切换hadoop版本而不需要重新安装集群。这个功能诱惑力太大了。另外CDH对于超过50个节点的集群就要开始收费了。这个是需要考虑的问题。

路人丙:
在ubuntu 的wiki里看到因为cloudera由于方便安装,有75%新手选择。网上没有找到这两个组织发行hadoop的比较。不过cloudera貌似基于apache hadoop做bug fix 发布的。CHD是一个公司发布的,但很多国内小公司都采用。大公司还是自己搞apache的比较好。
路人丁:
CDH 免费版本的功能限制有点多
路人戊:
CDH5.X版本已经取消了50个节点的限制。
路人己:
说实话,真觉得hortonworks的好,三种版本都玩过,还是更喜欢hortonworks,初学者喜欢用cdh,因为更省事一些吧。