孙小娟
(重庆电子工程职业学院 重庆 401331)
Hadoop项目诞生于Doug Cutting 和Mike Cafarella创建的开源搜索引擎项目Nutch,基于Java语言编写,具有良好的跨平台特性,可以部署在廉价的计算机集群中。Hadoop包含三大核心技术,即HDFS、Map Reduce和YARN,它们的发展离不开Google的三驾马车,即Google的《The Google File System》《Map Reduce》《Bigtable: A Distributed Storage System for Structured Data》三篇论文。Apache Hadoop诞生后,衍生了很多商用的Hadoop版本,如CDH、HDP、MapR等。
HDFS(Hadoop Distributed File System)分布式文件系统,是Google GFS论文的开源,Hadoop核心项目的子项目。支持海量数据的存储,具有高容错性、高可靠性、高可扩展性、高吞吐率等特征,适合“一次写入,多次读取”,处理PB级以上海量数据的存储。HDFS主要由NameNode、DataNode和SecondaryNameNode组成,NameNode是HDFS的管理者;DataNode储存数据块,Hadoop1.0中文件块默认大小为64MB,Hadoop2.0中文件块的默认大小为128MB;SecondaryNameNode是NameNode的冷备。
Map Reduce是一种分布式并行编程模型,用于大数据集的计算,具有易编程、高可扩展性、高容错性的特点。Map Reduce采用“分而治之”的思想,将对大规模数据集的操作,划分给一个主节点管理下的各个子节点共同完成,再整合各个子节点的中间结果,从而得到最终的计算结果,即“分散任务,汇总结果”[1]。Map Reduce,顾名思义,由Map(映射)阶段和Reduce(归约)阶段组成,用户只需编程map()和reduce()两个函数,即可完成分布式的计算。客户端输入一个大文件后,通过split过程,将其划分成多个分片,每个分片由单独的机器处理(map方法),最后将各个机器的计算结果汇总从而得到最终结果(reduce方法)。
YARN(Yet Another Resource Negotiator)是一种通用资源调度架构,不仅支持Map Reduce,也可以支持其他分布式计算模式,如Spark、Tez等分布式计算架构。YARN被引入Hadoop2.0,克服了Hadoop1.0中Map Reduce的不足,提高了集群的利用率,方便资源的统一管理和调度,具有良好的扩展性和高可用性。
Hadoop的生态系统还包含其他组件。Hbase,hadoop的非关系型数据库,是一个分布式的、面向列的开源数据库,位于HDFS基础之上,是Google Bigtable的开源实现,介于关系型和非关系型数据库之间,主要用来存储结构化和半结构化的松散数据,具有高容错性和高可靠性。Hive是基于Hadoop的一个数据仓库工具,由Facebook实现并开源,可以将结构化的数据文件映射为一张数据库表,并提供类sql查询功能,可以将sql语句转换为MapReduce任务进行运行。Zookeeper,由雅虎创建,是Google Chubby的开源实现,是一个开源的高可用的分布式数据管理和协调框架,基于对Paxos算法的实现,能够很好地保证分布式环境中数据的一致性。同时,ZooKeeper是一个集中式服务,用于维护配置信息,提供分布式同步和提供组服务。Mahout,Apache旗下的一个开源项目,提供了一些经典的机器学习的算法,可帮助开发人员更加方便快捷地创建智能应用程序。Mahout主要有三大类机器学习算法,包括聚类、分类和推荐。
Apache Hadoop是Apache提供的官方版本,目前有三个版本,Hadoop1.0、Hadoop2.0及Hadoop3.0。Hadoop1.0包含三个大版本,分别为0.20.x,0.21.x和0.22.x。Hadoop2.0包含两个版本,分别为0.23.x和2.x,它们完全不同于Hadoop1.0,Hadoop2.0是在Hadoop1.0上的重构,相比Hadoop1.0增加了资源管理系统YARN[2]。Hadoop3.0版本于2017年发布,对Hadoop的功能和性能做了很大的提升。Apache Hadoop完全开源,社区活跃,具有详实的文档资料,但其版本管理混乱,集群运维复杂,工作量庞大,需要借助第三方软件,运维系统环境复杂,需要考虑版本组件的兼容问题,兼容性差,安全性差[3]。
CDH,Cloudera’s Distribution Including Apache Hadoop,是 Cloudera公司的Hadoop发行版本。Cloudera公司成立于2008年,是最早将Hadoop商用的公司。CDH基于稳定版本的Apache Hadoop开发,完全开源,支持Kerberos安全认证,版本的更新速度快,且其版本划分清晰,CDH3基于Hadoop1.x,CDH4和CDH5基于Hadoop2.x。支持多种安装方式,如Cloudera Manager、yum、rpm等。CDH开发并贡献了可实时处理大数据的Impala项目。CDH比 Apache Hadoop 在兼容性、安全性和稳定性上有所增强,部署和运维方便,已成为企业生产环境下装机量最大的Hadoop发行版本,有免费版和企业版,具有强大的社区支持。CDH是一个拥有集群自动化安装、中心化管理、集群监控、报警功能的一个大数据处理工具。
HDP,Hortonworks Data Platform,Hortonworks公司基于apache Hadoop生态系统构建的大数据分析平台,开源。Hortonworks公司于2011年7月由雅虎与硅谷风投公司Benchmark Capital合资组建,Hortonworks在推行发行版本的同时还为Apache Hadoop社区作出了很大贡献,是开源Hadoop社区的重要贡献者。Hortonworks入门提供了一个非常好的、易于使用的沙盒,提出了YARN、Tez等扩展框架,开发了很多增强特性并提交至核心主干,其Stinger开创性地极大地优化了Hive项目。HDP除了常见的项目,还包含Ambari,它是一款基于web的工具,支持Hadoop集群的创建、管理和监控。
成立于2009年的MapR公司,曾被称为大数据行业的独角兽,它提供了一款独特的Hadoop发行版本,有商业版和免费版,免费版在功能上有所缩减。MapR认为Hadoop的性能缺陷来自于其架构设计本身,故用新架构重写HDFS,开发了自己的文件系统MAPR-FS,注重实时流处理应用,与现有HDFS的API兼容,自带快照功能,专注于数据安全优化的Hadoop大数据分析平台。
当然,还有其他的Hadoop发行版本,如,EMC的Pivotal HD、IBM的InfoSphere BigInsights大数据平台、华为的FusionInsight Hadoop、Intel的发行版、DKhadoop等,华为和Intel的Hadoop发行版本都是收费的。CDH、HDP和MapR是全球三大Hadoop开源大数据供应商,其中Cloudera和Hortonworks于2018年合并,MapR于2019年被惠普企业HPE收购。
总之,每个发行版本都有其自身的特点。MapR没有使用Apache Hadoop HDFS,本文主要比较社区版Hadoop和CDH、HDP的区别。企业版和Apache Hadoop社区版相比,企业版存在厂商锁定的问题,部分服务收费。但CDH和HDP也有免费版、开源,与Apache Hadoop版本相比,它们更易于维护、管理,且稳定性高。企业版中,CDH的文档资料更详细,大数据部署案例更多;HDP与apache版本同步,且其内部员工大部分是Apache代码贡献者。在Hadoop集群的管理中,Apache Hadoop采用手工部署管理方式,工作量大。CDH采用Cloudera Manager工具部署,HDP采用Ambari工具部署,均大大提高了Hadoop集群的部署效率,Cloudera Manger和Ambari是当前两大最主流的Hadoop集群管理工具。开发人员在选择Hadoop版本时,主要要考虑该版本是否开源、是否有稳定版,是否有强大的社区支持等因素,其中强大的社区支持可以为用户提供一个答疑解惑的平台,方便讨论交流。