Apache Hadoop 是一款支持數據密集型分佈式 應用程序并以Apache 2.0許可協議 發佈的開源 軟體框架 ,有助于使用许多计算机组成的网络来解决数据、计算密集型的问题。基于MapReduce 计算模型,它为大数据 的分布式存储 与处理提供了一个软件框架 。所有的Hadoop模块都有一个基本假设,即硬件故障是常见情况,应该由框架自动处理[ 3] 。
Apache Hadoop的核心模块分为存储和计算模块,前者被称为Hadoop分布式文件系统(HDFS),后者即MapReduce计算模型。Hadoop框架先将文件分成数据块并分布式地存储在集群的计算节点中,接着将负责计算任务的代码传送给各节点,让其能够并行地处理数据。这种方法有效利用了数据局部性 ,令各节点分别处理其能够访问的数据。与传统的超级计算机 架构相比,这使得数据集的处理速度更快、效率更高[ 4] [ 5] 。
Apache Hadoop框架由以下基本模块构成:
Hadoop Common – 包含了其他Hadoop 模块所需的库和实用程序;
Hadoop Distributed File System (HDFS) – 一种将数据存储在集群中多个节点中的分布式文件系统,能够提供很高的带宽;
Hadoop YARN – (于2012年引入) 一个负责管理集群中计算资源,并实现用户程序调度的平台[ 6] [ 7] ;
Hadoop MapReduce – 用于大规模数据处理的MapReduce计算模型实现;
Hadoop Ozone – (于2020年引入) Hadoop的对象存储。
Hadoop 一词通常代指其基本模块和子模块以及生态系统[ 8] ,或可以安装在 Hadoop 之上的软件包的集合,例如Apache Pig 、Apache Hive 、Apache HBase 、Apache Phoenix 、Apache Spark 、Apache ZooKeeper 、Cloudera Impala 、Apache Flume 、Apache Sqoop 、Apache Oozie 和Apache Storm [ 9] 。
Apache Hadoop的MapReduce和HDFS模块的灵感来源于Google 的MapReduce 和Google File System 论文[ 10] 。
Hadoop 框架本身主要是用Java 编程语言编写的,也包括了一些C语言 编写的本机代码和Shell脚本 编写的命令行 实用程序。尽管MapReduce Java代码很常见,但任何编程语言都可以与Hadoop Streaming一起使用来实现用户程序的map和reduce部分[ 11] 。Hadoop 生态系统中的其他项目实现了更为丰富的用户界面。
主要子项目
Hadoop小计算机集群 用Cubieboard电脑。
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
相關项目
知名用戶
Hadoop在Yahoo!的應用
2008年2月19日,雅虎 使用10,000個微處理器 核心的Linux 计算机集群 運行一個Hadoop應用程式。[ 12]
其他用戶
其他知名用戶包括[ 13] :
Hadoop與Sun Grid Engine
昇陽 電腦的Sun Grid Engine 可以用来调度Hadoop Job。[ 14] [ 15]
Hadoop與Condor
威斯康辛大學麥迪遜分校 的Condor計算機集群 軟件也可以用作Hadoop Job的排程。[ 16]
參見
参考文献
外部連結