Hadoop是ApacheSoftware Foundation的一个顶级Apache项目。它是构建于一个分布式集群文件系统之上的计算环境,专门针对非常大型的数据操作而设计。
Hadoop的灵感来自于Google在其Google(分布式)File System(GFS) 和MapReduce编程模式上的工作,在该模式上,工作被分解为多个mapper和reducer任务,以操作在整个服务器集群中存储的数据,实现大规模并行化。MapReduce并不是一个概念(IBM在2007年10月联手Google进行一些关于MapReduce和GFS联合大学研究,以了解大规模Internet的问题);然而,Hadoop已实际被应用到更广泛的用例。与事务系统不同,Hadoop旨在通过一个高度可扩展的分布式批量处理系统,对大型数据集进行扫描以产生结果。
Hadoop是一个能够对大量数据进行分布式处理的软件框架,实现了Googel的MapReduce编程模型和框架,能够把应用程序分割成许多小的工作单元,并把这些单元放到任何集群据节点上执行。在MapReduce中,一个准备提交执行的应用程序称为“作业(job)”,而从一个作业划分出来的、运行与各个节点的工作单元称为“任务(task)”。此外,Hadoop提供的分布式文件系统(HDFS)主要负责各个节点上的数据存储,并实现了高吞吐率的数据读写。在Hadoop核心框架中,MapReduce常被称为mapred,HDFS经常被称为dfs。,Hadoop的组件如表1所示。
表1 Hadoop的组件
Pig | Chukwa | Hive | HBase | |||
MapReduce | HDFS | Zoo Keeper | ||||
Core | Avro |
Hadoop的各个组件的功能列表如表2所示。
表2 Hadoop各个组件的功能
组件 | 功能 |
Core | 提供一系列分布式文件系统和通用I/o的组件和接口(序列化、Java RPC和持久化数据结构) |
Avro | 一种提供高效、跨语言RPC的数据系列系统,持久化数据存储 |
MapReduce | 分布式数据处理模式和执行环境 |
HDFS | 分布式文件系统 |
Pig | 一种数据流语言和运行环境,用以检测非常大的数据集。Pig运行在MapReduce和HDFS的集群上 |
Hbase | 一个分布式、列存储数据库。Hbase使用HDFS为底层存储,同时支持MapReduce的批量式计算和点查询(随机读取)。 |
ZooKeeper | 一个分布式的、高可用性的协调服务。ZooKeeper提供分布式锁等用于构建分布式应用 |
Hive | 分布式数据仓库。Hive管理HDFS中的存储的数据,并提供基于SQL的查询语言(在运行时引擎转换成MapReduce作业)用于查询数据 |
Chukwa | 分布式数据收集和分析系统,它使用MapReduce来生成报告。 |