* HDFS——Hadoop生态系统的基础组件是Hadoop分布式文件系统(HDFS)。HDFS的机制是将大量数据分布到计算机集群上,数据一次写入,但可以多次读取用于分析。他是其他一些工具的基础,例如HBASE。
* MapReduce——Hadoop的主要执行框架即MapReduce,他是一个用于分布式并行数据处理的编程模型,将作业分为mapping和reduce阶段,开发人员为Hadoop编写MapReduce作业,并使用HDFS中存储的数据,二HDFS可以保障快速的数据访问。鉴于MapReduce的特性,哈豆粕一并行的方式将处理的过程移向数据,从而实现快速处理。
* HBASE——一个构建在HDFS之上的面向列的NoSQL数据库,HBASE用于对大量数据进行快速读取/写入。HBASE将ZooKeeper用于自身管理,一保障其所有组件都正在运行。
* Zookeeper——Zookeeper是Hadoop的分布式协调服务,Zookeeper被设计成可以再机器群上运行,是一个具有高度可用性的服务,用于Hadoop操作的管理,而且有很多Hadoop组件都以来它。
* Oozie——一个可扩展的workflow系统,Oozie已经被集成到Hadoop软件栈中,用于协调多个MapReduce作业的执行,它能够处理大量的复杂性,基于外部事件(包括定时和所需数据是否存在)来管理执行。
* Pig——对MapReduce编程复杂性的抽象,pig平台包含用于分析Hadoop数据集的执行环境和脚本语言(pig Latin)它的编译器将pig latin 翻译为MapReduce程序序列。
* Hive——类似于SQL的高级语言,用于执行对存储在Hadoop中数据的查询,hive允许不熟悉MapReduce的开发人员编写数据查询语句,它会将其翻译为Hadoop中的MapReduce作业,类似于pig,hive是一个抽象层,但更倾向于面向叫熟悉SQL而不是java编程的数据分析师。
Hadoop生态系统还包含一些用于与其他企业级应用进行集成的框架
* Sqoop是一个连通性工具,用于在关系型数据库和数据仓库与Hadoop之间移动数据,sqoop利用数据库来描述导入/导出数据的模式,并使用MapReduce实现并行操作盒容错。
* Flume是一个分布式的,具有可靠性的和高可服务性的服务,用于从单独的机器上将大量数据搞笑的收集、聚合、并移动到HDFS中,它基于一个简单灵活的架构,提供流式数据操作,它借助于简单可扩展的数据模型,允许将来自企业中多台机器上的数据移至Hadoop
在上图核心组件基础上,Hadoop生态系统还杂增长,并不断提供更加新颖的功能和组件,例如:
* Whirr——他是一组静态库,让用户能够在Amazon EC2、Rackspace或任何虚拟基础架构上构建Hadoop集群
*Mahout——一个机器学习和数据挖掘的库,用于聚类、回归测试盒统计建模常见算法的MapReduce实现
* BigTop——一个正式的流程和框架,用于对Hadoop的子项目和相关组件进行打包盒互操作性测试
* Ambari——该项目致力于简化Hadoop的管理,提供对Hadoop集群进行供应、管理和监控的支持。