Apache Hadoop

Apache Hadoop是一款支持數據密集型分佈式應用程序並以Apache 2.0許可協議發佈的開源軟體框架,有助於使用許多計算機組成的網絡來解決數據、計算密集型的問題。基於MapReduce計算模型,它為大數據分布式存儲與處理提供了一個軟件框架。所有的Hadoop模塊都有一個基本假設,即硬件故障是常見情況,應該由框架自動處理[3]

Apache Hadoop
Hadoop Logo
原作者Doug Cutting, Mike Cafarella
開發者Apache軟件基金會
首次發布2006年4月1日,​18年前​(2006-04-01[1]
當前版本
  • 3.4.0(2024年3月17日)[2]
編輯維基數據鏈接
源代碼庫 編輯維基數據鏈接
編程語言Java
操作系統跨平台
類型大數據分佈式系統
許可協議Apache許可證 2.0
網站hadoop.apache.org

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 PigApache HiveApache HBaseApache PhoenixApache SparkApache ZooKeeperCloudera ImpalaApache FlumeApache SqoopApache OozieApache Storm[9]

Apache Hadoop的MapReduce和HDFS模塊的靈感來源於GoogleMapReduceGoogle 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]

參見

參考文獻

  1. ^ Hadoop Releases. apache.org. Apache Software Foundation. [2019-04-28]. (原始內容存檔於2019-04-28). 
  2. ^ Release 3.4.0 available. [2024年4月10日]. 
  3. ^ Welcome to Apache Hadoop!. hadoop.apache.org. [2016-08-25]. (原始內容存檔於2017-09-23). 
  4. ^ Malak, Michael. Data Locality: HPC vs. Hadoop vs. Spark. datascienceassn.org. Data Science Association. 2014-09-19 [2014-10-30]. (原始內容存檔於2017-09-10). 
  5. ^ Wang, Yandong; Goldstone, Robin; Yu, Weikuan; Wang, Teng. Characterization and Optimization of Memory-Resident MapReduce on HPC Systems. 2014 IEEE 28th International Parallel and Distributed Processing Symposium. IEEE. October 2014: 799–808. ISBN 978-1-4799-3800-1. S2CID 11157612. doi:10.1109/IPDPS.2014.87. 
  6. ^ Resource (Apache Hadoop Main 2.5.1 API). apache.org. Apache Software Foundation. 2014-09-12 [2014-09-30]. (原始內容存檔於2014-10-06). 
  7. ^ Murthy, Arun. Apache Hadoop YARN – Concepts and Applications. hortonworks.com. Hortonworks. 2012-08-15 [2014-09-30]. (原始內容存檔於2017-09-11). 
  8. ^ Continuuity Raises $10 Million Series A Round to Ignite Big Data Application Development Within the Hadoop Ecosystem. finance.yahoo.com. Marketwired. 2012-11-14 [2014-10-30]. (原始內容存檔於2017-09-10). 
  9. ^ Hadoop-related projects at. Hadoop.apache.org. [2013-10-17]. (原始內容存檔於2017-09-23). 
  10. ^ Data Science and Big Data Analytics: Discovering, Analyzing, Visualizing and Presenting Data. John Wiley & Sons. 2014-12-19: 300 [2015-01-29]. ISBN 9781118876220. 
  11. ^ nlpatumd; Adventures with Hadoop and Perl. Mail-archive.com. 2010-05-02 [2013-04-05]. (原始內容存檔於2017-08-14). 
  12. ^ Yahoo! Launches World's Largest Hadoop Production Application (Hadoop and Distributed Computing at Yahoo!). [2008-09-04]. (原始內容存檔於2008-05-14). 
  13. ^ PoweredBy. [2008-09-07]. (原始內容存檔於2012-11-29). 
  14. ^ Creating Hadoop pe under SGE. Sun Microsystems. 2008-01-16 [2008-09-04]. (原始內容存檔於2008-09-12). 
  15. ^ HDFS-Aware Scheduling With Grid Engine (PDF). Sun Microsystems. 2009-09-10. [永久失效連結]
  16. ^ Condor integrated with Hadoop's Map Reduce (PDF). 威斯康辛大學麥迪遜分校. 2010-04-15 [2011-03-15]. (原始內容存檔 (PDF)於2011-04-01). 

外部連結