Apache Hadoop是一款支持数据密集型分布式应用程序并以Apache 2.0许可协议发布的开源软件框架,有助于使用许多计算机组成的网络来解决数据、计算密集型的问题。基于MapReduce计算模型,它为大数据的分布式存储与处理提供了一个软件框架。所有的Hadoop模块都有一个基本假设,即硬件故障是常见情况,应该由框架自动处理。
Apache Hadoop的核心模块分为存储和计算模块,前者被称为Hadoop分布式文件系统(HDFS),后者即MapReduce计算模型。Hadoop框架先将文件分成数据块并分布式地存储在集群的计算节点中,接着将负责计算任务的代码传送给各节点,让其能够并行地处理数据。这种方法有效利用了数据局部性,令各节点分别处理其能够访问的数据。与传统的超级计算机架构相比,这使得数据集的处理速度更快、效率更高。
Apache 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 生态系统中的其他项目实现了更为丰富的用户界面。
2008年2月19日,雅虎使用10,000个微处理器核心的Linux计算机集群运行一个Hadoop应用程序。
其他知名用户包括:
昇阳电脑的Sun Grid Engine可以用来调度Hadoop Job。
威斯康辛大学麦迪逊分校的Condor计算机集群软件也可以用作Hadoop Job的调度。