1.3 Hadoop和它的小伙伴们
Hadoop迅速发展壮大,由原来的MapReduce和HDFS发展到Hadoop生态圈,人们提到Hadoop,更多的是代表生态圈内数十个产品,并且越来越多。那么,生态圈中有这么多小伙伴,它们的架构是怎么样的呢?接下来请Hadoop和它最常用(也最重要)的伙伴出场。图1-1为Hadoop生态圈组织架构示意图。
图1-1 Hadoop生态圈组织架构示意图
这里,我们先对Hadoop的常用小伙伴做一个简单的介绍,大概记住名字和主要功能即可,后续章节我们还会多次打交道,再逐个详细阐述。
MapReduce:核心成员,是一种编程模型,使得大规模数据可以并行计算。从概念上看,MapReduce有两个部分——“Map(映射)”和“Reduce(归约)”,当然不能简单地理解为Map和Reduce两个函数。事实上,此模型包含若干个函数和接口,其主要思想最先由Google的工程师提出,得益于函数式编程语言的思想,以及从矢量编程语言里借来的特性。它使编程人员在不懂分布式并行编程的情况下,也能将自己的程序运行在分布式系统上。
HDFS:一个分布式文件系统。分布式文件系统相信大家都不陌生,但相对于其他文件系统,HDFS的设计有着为大数据处理“私人订制”的意思,提供高吞吐量的数据访问,非常适合大规模数据集上的应用。并且它是一个高度容错的系统,适合部署在廉价的机器上。
Hive:一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供完整的SQL查询功能,可以将SQL语句转换为MapReduce任务运行。其优点是学习成本低,可以通过类SQL语句快速实现简单的MapReduce统计,不必开发专门的MapReduce应用,非常适合数据仓库的统计分析。
HBase:一个分布式的、面向列的开源数据库,和Google Bigtable类似。HBase是Apache的Hadoop项目的子项目。HBase不同于一般的关系数据库,它是一个适合于非结构化数据存储的数据库。另一个不同点是HBase是基于“列”的而不是基于“行”的模式。2010年5月,HBase脱离Hadoop项目,成为Apache顶级项目。
Pig:一个高级过程语言,适合于使用Hadoop和MapReduce平台来查询大型半结构化数据集。通过允许对分布式数据集进行类似SQL的查询,Pig可以简化Hadoop的使用。2010年9月,Pig脱离Hadoop,成为Apache顶级项目。
ZooKeeper:一个分布式应用程序的协调服务,类似于Google的Chubby,提供的功能包括配置维护、名字服务、分布式同步、组服务等。其目标就是封装好复杂易出错的关键服务,将简单易用的接口和性能高效、功能稳定的系统提供给用户。2011年1月,ZooKeeper脱离Hadoop,成为Apache顶级项目。
Hadoop其他的主要成员有如下几个,限于篇幅,本书不对其展开讲解。
Mahout:一个在Hadoop上运行的可扩展的机器学习和数据挖掘类库(例如分类和聚类算法)。
Avro:一种支持高效、跨语言的RPC及永久存储数据的序列化系,主要负责数据的序列化。2009年7月成为Hadoop新的子项目,并于2010年5月脱离Hadoop项目,成为Apache顶级项目。
Sqoop:在数据库和HDFS之间高效传输数据的工具。
Hadoop家族阵营之大,不是一两本书可以介绍的,把任何一个组件拿出来单独讲解可能都需要很大篇幅,建议有兴趣的读者参照Apache官网介绍。