Apache Hadoop

Apache Hadoop是一款支持數據密集型分佈式應用程序并以Apache 2.0許可協議發佈的開源軟體框架，有助于使用许多计算机组成的网络来解决数据、计算密集型的问题。基于MapReduce计算模型，它为大数据的分布式存储与处理提供了一个软件框架。所有的Hadoop模块都有一个基本假设，即硬件故障是常见情况，应该由框架自动处理。

Apache Hadoop的核心模块分为存储和计算模块，前者被称为Hadoop分布式文件系统（HDFS），后者即MapReduce计算模型。Hadoop框架先将文件分成数据块并分布式地存储在集群的计算节点中，接着将负责计算任务的代码传送给各节点，让其能够并行地处理数据。这种方法有效利用了数据局部性，令各节点分别处理其能够访问的数据。与传统的超级计算机架构相比，这使得数据集的处理速度更快、效率更高。

Apache Hadoop框架由以下基本模块构成：
 Hadoop Common – 包含了其他Hadoop 模块所需的库和实用程序；
 Hadoop Distributed File System (HDFS) – 一种将数据存储在集群中多个节点中的分布式文件系统，能够提供很高的带宽；
 Hadoop YARN – （于2012年引入） 一个负责管理集群中计算资源，并实现用户程序调度的平台；
 Hadoop MapReduce – 用于大规模数据处理的MapReduce计算模型实现；
 Hadoop Ozone – （于2020年引入） Hadoop的对象存储。

Hadoop 一词通常代指其基本模块和子模块以及生态系统，或可以安装在 Hadoop 之上的软件包的集合，例如Apache Pig、Apache Hive、Apache HBase、Apache Phoenix、Apache Spark、Apache ZooKeeper、Cloudera Impala、Apache Flume、Apache Sqoop、Apache Oozie和Apache Storm。 

Apache Hadoop的MapReduce和HDFS模块的灵感来源于Google的MapReduce和Google File System论文。

Hadoop 框架本身主要是用Java编程语言编写的，也包括了一些C语言编写的本机代码和Shell脚本编写的命令行实用程序。尽管MapReduce Java代码很常见，但任何编程语言都可以与Hadoop Streaming一起使用来实现用户程序的map和reduce部分。Hadoop 生态系统中的其他项目实现了更为丰富的用户界面。

主要子项目 

 Hadoop Common：在0.20及以前的版本中，包含HDFS、MapReduce和其他项目公共内容，从0.21开始HDFS和MapReduce被分离为独立的子项目，其余内容为Hadoop Common
 HDFS：Hadoop分佈式文件系統（Distributed File System）－HDFS（Hadoop Distributed File System）
 MapReduce：并行计算框架，0.20前使用org.apache.hadoop.mapred旧接口，0.20版本开始引入org.apache.hadoop.mapreduce的新API

相關项目 
 Apache HBase：分布式NoSQL列数据库，类似谷歌公司BigTable。
 Apache Hive：构建于hadoop之上的数据仓库，通过一种类SQL语言HiveQL为用户提供数据的归纳、查询和分析等功能。Hive最初由Facebook贡献。
 Apache Mahout：机器学习算法软件包。
 Apache Sqoop：结构化数据（如关系数据库）与Apache Hadoop之间的数据转换工具。
 Apache ZooKeeper：分布式锁设施，提供类似Google Chubby的功能，由Facebook贡献。
 Apache Avro：新的数据序列化格式与传输工具，将逐步取代Hadoop原有的IPC机制。

知名用戶

Hadoop在Yahoo!的應用 
2008年2月19日，雅虎使用10,000個微處理器核心的Linux计算机集群運行一個Hadoop應用程式。

其他用戶 
其他知名用戶包括：
 A9.com
 Facebook
 Fox Interactive Media
 华为
 IBM
 ImageShack
 資訊科學研究院
 Joost
 Last.fm
 Powerset
 紐約時報
 Rackspace
 Veoh
 中華電信
 中国移动

Hadoop與Sun Grid Engine 
昇陽電腦的Sun Grid Engine可以用来调度Hadoop Job。

Hadoop與Condor 
威斯康辛大學麥迪遜分校的Condor計算機集群軟件也可以用作Hadoop Job的排程。

參見 
 大数据
 雲端運算
 高性能計算集群
 OpenStack－以Apache許可證授權的雲端運算軟件。
 Apache Spark

参考文献

外部連結 
 Hadoop官方網站

Hadoop
Java
Apache软件基金会
文件系统
分散式檔案系統