今天,Hadoop 是一个分布式计算基础架构这把"大伞"下的相关子项目的集合。这些项目属于Apache 软件基金会(http://hadoop.apache.org),后者为开源软件项目社区提供支持。虽然Hadoop 最出名的是MapReduce 及其分布式文件系统(HDFS,从NDFS 改名而来),但还有其他子项目提供配套服务,其他子项目提供补充性服务。这些子项目的简要描述如下,其技术栈如图1-1 所示。
图1-1:Hadoop 的子项目
Core
一系列分布式文件系统和通用I/O 的组件和接口(序列化、Java RPC 和持久化数据结构)。
Avro
一种提供高效、跨语言RPC 的数据序列化系统(Serialiazation system),持久化数据存储。
PS:RPC(Remote Procedure Call Protocol)——远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。RPC协议假定某些传输协议的存在,如TCP或UDP,为通信程序之间携带信息数据。在OSI网络通信模型中,RPC跨越了传输层和应用层。RPC使得开发包括网络分布式多程序在内的应用程序更加容易。
MapReduce
分布式数据处理模式和执行环境,运行于大型商用机集群。
HDFS
分布式文件系统,运行于大型商用机集群。
Pig
一种数据流语言和运行环境,用以检索非常大的数据集。Pig 运行在MapReduce 和HDFS的集群上。
Hbase
一个分布式的、列存储数据库。HBase 使用HDFS 作为底层存储,同时支持MapReduce的批量式计算和点查询(随机读取)。
HBase是Google Bigtable的开源实现,类似Google Bigtable利用GFS作为其文件存储系统,HBase利用Hadoop HDFS作为其文件存储系统;Google运行MapReduce来处理Bigtable中的海量数据,HBase同样利用Hadoop MapReduce来处理HBase中的海量数据;Google Bigtable利用 Chubby作为协同服务,HBase利用Zookeeper作为对应。
ZooKeeper
一个分布式的、高可用性的协调服务。ZooKeeper 提供分布式锁之类的基本服务用于构
建分布式应用。
Hive
分布式数据仓库。Hive 管理HDFS 中存储的数据,并提供基于SQL 的查询语言(由运行时引擎翻译成MapReduce 作业)用以查询数据。
hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供完整的sql查询功能,可以将sql语句转换为MapReduce任务进行运行。 其优点是学习成本低,可以通过类SQL语句快速实现简单的MapReduce统计,不必开发专门的MapReduce应用,十分适合数据仓库的统计分析。
Chukwa
分布式数据收集和分析系统。Chukwa 运行HDFS 中存储数据的收集器,它使用MapReduce 来生成报告。