必威电竞|足球世界杯竞猜平台

Apache Hadoop
來源:互聯網

Hadoop是一個開源的分布式計算平臺,能夠使用簡單的編程模型跨計算機集群分布式處理大規模數據。Hadoop 的歷史可以追溯到2002年,當時雅虎的Doug Cutting和Mike Cafarella開始開發一個能夠處理大規模數據集的系統。他們的開發基于谷歌的兩篇論文,一篇是關于Google文件系統(GFS)的論文,另一篇是關于MapReduce計算模型的論文。Hadoop的前身是Apache Lucene的子項目Nutch的一部分,Doug Cutting將其取名為Hadoop,以紀念他兒子的玩具大象,并在2006年剝離出來成為一個獨立發展的軟件。

Hadoop在Lucene歷史背景說明了它最初的設計目的:處理海量數據。在早期,Hadoop主要被用于處理網絡爬蟲的數據,然后被用于搜索引擎等應用。隨著時間的推移,Hadoop被越來越多地應用于數據倉庫、數據湖、數據分析、機器學習等領域,成為了處理大數據的標準工具之一。

發展歷史

2002年-2005年:Hadoop的前身Nutch

2002年10月,Doug Cutting和Mike Cafarella創建了開源網頁爬行綱項目nutch。Nutch最初是為了從網絡中收集和索引大量的網頁信息,以便后續進行搜索和數據分析。然而,Nutch的發展需要一個可靠的分布式文件系統和計算模型來處理海量的數據,這正是Hadoop的主要功能。

2003年10月,谷歌發表了Google File System(GFS)論文,這啟發了Doug Cutting和Mike Cafarella將GFS的設計思想應用到Nutch中。2004年,他們在Nutch中實現了GFS的功能,即Hadoop分布式文件系統(hdfs)的前身。隨后,在2004年10月,Google又發表了MapReduce論文,這引導了Hadoop計算模型的設計。

2005年2月,Mike Cafarella在nutch中實現了MapReduce的最初版本。同年12月,Nutch使用MapReduce和NDFS(Nutch Distributed File System)運行。

2006年-2010年:Hadoop成為一個獨立的項目

2006年1月,Doug Cutting加入雅虎,雅虎提供一個專門的團隊和資源將Hadoop發展成一個可在網絡上運行的系統。2月,Apache Hadoop項目正式啟動以支持MapReduce和HDFS的獨立發展。4月,Apache Hadoop發布了第一個版本,Doug Cutting將其取名為Hadoop,以紀念他兒子的玩具大象

2008年1月,Hadoop成為apache頂級項目。6月,Hadoop SQL框架——hive成為了Hadoop的子項目。

2009年7月,Hadoop Core模塊更名為Hadoop Common。同時,MapReduce和Hadoop Distributed File System(HDFS)成為Hadoop項目的獨立子項目。此外,Avro和Chukwa也成為Hadoop新的子項目。

2009年8月,Hadoop創始人Doug Cutting加入Cloudera擔任首席架構師。他的團隊致力于推動Hadoop的商業應用和發展。

2010年5月,多個Hadoop相關項目成為apache頂級項目。其中,Avro和HBase脫離Hadoop項目,成為Apache頂級項目。hive和Pig也脫離Hadoop,成為獨立的Apache頂級項目。 在這段時間內,Hadoop逐漸被越來越多的企業采用,包括雅虎、Facebook、Twitter等。這促進了Hadoop生態系統的發展,并使得Hadoop成為當時最受歡迎的大數據處理平臺之一。

2011年-2012年:Hadoop的快速發展

2011年10月,Apache Hadoop 0.20.205版本發布,這個版本引入了Apache Hadoop Security,這使得Hadoop可以處理更敏感的數據。同年,Apache Hadoop 0.22.0版本發布,這個版本加入了Hadoop Common項目,使得Hadoop更加通用化。

2011年12月,Apache Hadoop 1.0.0版本發布。這個版本標志著Hadoop成為了一個真正的可靠和穩定的大數據處理平臺。同年,Cloudera發布了CDH4(Cloudera's Distribution Including Apache Hadoop 4)版本,這個版本加入了Hadoop的許多新特性和工具,包括HBaseApache ZooKeeper和Hue等。

2012年10月,第一個Hadoop原生查詢引擎Impala加入到了Hadoop生態圈。

除了技術上的發展,Hadoop在這段時間內也吸引了更多的企業加入到Hadoop生態系統中。例如,IBM發布了InfoSphere BigInsights,基于Hadoop的大數據處理平臺。還有一些新的Hadoop發行版出現,如Hortonworks和MapR等,他們都為Hadoop的發展做出了貢獻。

2013年至今:Hadoop不斷擴展功能與完善生態系統

2013年11月,Hadoop 2.0發布,引入了yarn(Yet Another 資源 Negotiator)資源管理器。YARN使得Hadoop不再局限于MapReduce計算模型,而是將MapReduce作為一種應用程序,可以運行在YARN之上。并且也可以支持其他計算框架,如Spark和Storm等。

2014年2月,apache Spark成為Hadoop生態系統中備受關注的一個項目,并成為Apache基金會頂級項目。相比于MapReduce,Spark具有更高的性能和更多的計算功能。許多企業開始將Spark集成到Hadoop生態系統中。

2015年4月,Hadoop 2.7發布,引入了Hadoop Docker支持,使得Hadoop能夠更容易地在Docker容器中部署和運行。此外,Hadoop 2.7還引入了許多新的功能和改進,如備份節點、磁盤負載均衡等。

2016年4月,apache Zeppelin成為了Hadoop生態系統中備受關注的一個數據分析和可視化工具。Zeppelin提供了一個交互式的Web界面,使得用戶能夠輕松地進行數據分析和可視化

2016年9月,Hadoop 3.0發布,引入了許多新的功能和改進,如支持Erasure coding、GPU加速、Container Shuffle等。Hadoop 3.0還升級了yarnhdfs,使得Hadoop能夠更好地支持大規模的數據處理。

2018年中,Hadoop生態系統中的項目繼續不斷增加。例如,Apache Kafka成為了Hadoop生態系統中備受關注的一個實時流處理平臺。此外,Apache Druid成為了Hadoop生態系統中備受關注的一個OLAP數據存儲和查詢引擎。

2019年3月,Hadoop 3.2發布,引入了許多新的功能和改進,如支持Erasure coding、GPU加速、Container Shuffle等。此外,Hadoop 3.2還引入了許多新的API和工具,如S3A支持、Hadoop Ozone、Hadoop Token Service等。

2020年中,Hadoop生態系統中的項目繼續不斷增加。例如,Apache Arrow成為了Hadoop生態系統中備受關注的一個跨語言數據存儲和處理框架。此外,apache Hudi成為了Hadoop生態系統中備受關注的一個分布式數據湖工具。

Hadoop已經成為了大數據處理領域的重要工具之一,其生態系統中包括許多重要的項目,如Spark、Kafkahive等。隨著新的技術和應用場景的出現,Hadoop生態系統將不斷擴展和完善。

Hadoop的核心組件

Hadoop是一個開源的分布式計算框架,用于處理大規模數據集。Hadoop的核心組件主要包括以下四個部分。

Hadoop分布式文件系統(HDFS)

HDFS(Hadoop Distributed File System)是Hadoop生態系統中的一個分布式文件系統,最初由Apache Hadoop項目開發和維護。它的設計目標是支持大規模數據處理應用程序的存儲和處理。HDFS是基于谷歌文件系統(GFS)的研究成果,但在一些方面進行了優化和改進。

HDFS由兩個核心組件組成:NameNode和DataNode。NameNode是主節點,負責管理文件系統的命名空間、控制數據塊的復制和處理客戶端訪問請求。DataNode是數據節點,存儲和提供數據塊。hdfs中的文件被分成數據塊(通常大小為128 MB或256 MB),并在數據節點之間進行復制,以提供故障容許度能力。每個數據塊都有多個副本(通常是三個),這些副本分布在不同的數據節點上,以保證可靠性。這樣,即使某個數據節點失效,數據塊也可以從其他節點恢復。

HDFS提供了多種方式來訪問存儲在其中的文件,包括Java API、命令行界面和Web界面。用戶可以使用這些接口來上傳、下載、刪除和查看文件。HDFS還具有高擴展性和高可靠性的優點。它可以容易地擴展到數百臺甚至數千臺服務器,并且可以通過數據塊復制來保證數據的可靠性和可用性

Hadoop YARN

yarn是Hadoop的資源管理器,它最初是作為Hadoop 2.0的新功能引入的。YARN的設計目標是將Hadoop從一個僅適用于MapReduce的系統轉變為一個通用的分布式計算平臺,使得Hadoop可以支持多種分布式計算框架,如Apache Spark、Apache Flink等。

YARN通過將集群資源的管理和任務的調度分離開來,使得不同的應用程序可以共享集群資源,提高了集群資源的利用率。YARN中包含兩個核心組件:ResourceManager和NodeManager。ResourceManager負責管理集群資源,為不同的應用程序分配資源;NodeManager在每個節點上運行,并負責啟動、停止和監控容器(運行應用程序的進程)。在yarn中,應用程序被封裝成容器(集裝箱),容器是一種虛擬化的執行環境,它包含應用程序的代碼、依賴項和環境設置。YARN根據應用程序的需求為其分配容器,并根據需要動態調整容器的數量和大小。

YARN提供了豐富的API和CLI接口,用于管理和監控應用程序的運行狀態,如啟動、停止、查詢等操作。此外,YARN還提供了Web界面,可以查看集群資源的使用情況、應用程序的運行狀態等信息。

Hadoop MapReduce

MapReduce是Hadoop的數據處理框架,用于處理大規模數據集。它最初由谷歌的MapReduce研究論文啟發,是Hadoop 1.0版本的核心組件之一。Hadoop MapReduce的設計目標是將數據分布式處理,使得數據處理任務可以在分布式計算節點上并行執行。

Hadoop MapReduce的處理流程可以分為兩個階段:Map階段和Reduce階段。Map階段將輸入數據分成若干個小塊,并對每個小塊執行相同的計算,生成一個鍵值對序列作為輸出;Reduce階段對Map輸出的鍵值對序列進行排序和歸并,并執行相應的計算,生成最終的輸出結果。

在Hadoop MapReduce中,Map和Reduce任務可以在不同的計算節點上并行執行,使得數據處理任務可以快速處理大規模數據集。此外,Hadoop MapReduce還提供了數據本地化優化機制,即將計算任務盡可能地調度到存儲著相關數據的計算節點上執行,從而減少數據傳輸的開銷,提高處理效率。

Hadoop MapReduce提供了多種API和CLI接口,如Java API、Streaming API等,以支持開發人員使用自己熟悉的編程語言進行數據處理。此外,Hadoop MapReduce還提供了豐富的監控和管理工具,如JobTracker、TaskTracker等,用于監控和管理任務的執行狀態、失敗重試等。

Hadoop Common

Hadoop Common是Hadoop生態系統中的一個核心模塊,提供了Hadoop分布式計算框架中需要的基礎庫和工具。它包含了分布式文件系統(hdfs)和分布式計算框架(MapReduce)的通用代碼和工具。

Hadoop Common提供了Hadoop生態系統中各個組件之間的通信和協調機制,如RPC機制、序列化和反序列化機制、安全認證機制、日志和異常處理等。此外,Hadoop Common還提供了一系列工具和實用程序,如命令行工具、文件系統操作API、Shell API等,以便于開發人員使用Hadoop分布式計算框架進行數據處理和管理。

Hadoop Common還提供了一些額外的組件,如Apache ZooKeeper、Avro、Thrift等,以支持更豐富的分布式計算場景。例如,ZooKeeper用于分布式協調和鎖定,Avro和thrift用于支持不同語言和平臺之間的數據交換。Hadoop Common還提供了豐富的配置選項和可擴展性接口,以滿足不同的業務需求和環境需求。開發人員可以通過修改配置文件和實現自定義擴展點等方式,來定制Hadoop分布式計算框架的行為和性能。

Hadoop的生態系統

除了Hadoop本身,Hadoop生態系統還包括許多其他工具和技術,如Avro、Parquet、Apache Sqoophive、Pig、HBase、Spark等。這些工具可以幫助用戶更方便地使用Hadoop來處理和分析數據。以下是Hadoop生態系統中的重要的組件和技術Hive、Spark、Hbase的簡要介紹。

Hive

Hive是一個基于Hadoop的數據倉庫工具,它提供了一種類SQL的查詢語言,稱為HiveQL,用于查詢和分析大規模的數據。Hive將查詢翻譯成MapReduce作業,并在Hadoop集群上執行。hive的應用場景主要包括數據倉庫、數據分析、日志分析等領域。它可以幫助用戶快速地進行大規模數據處理和分析,從而提高數據處理的效率和精度。

Spark

Spark是一個用于大規模數據處理的統一分析引擎,由加利福尼亞大學伯克利分校的AMPLab開發。Spark支持基于內存的計算,可以比Hadoop MapReduce更快地處理數據,Spark可以在Hadoop、Mesos、yarnkubernetes等集群管理器上運行,也可以在單機上運行。Spark的應用場景包括數據科學機器學習SQL分析和BI、存儲和基礎設施等領域。

HBase

HBase是一個分布式的、面向列的開源數據庫系統,基于Apache Hadoop項目構建。它支持海量數據存儲和實時讀寫操作,通常用于存儲非結構化或半結構化數據,例如Web頁面、日志數據、傳感器數據等。HBase適用于大規模、高速讀寫的數據存儲場景,如實時大數據分析、Web日志處理、用戶行為分析、在線廣告等。

Hadoop 的優缺點和應用場景

Hadoop的優勢在于可以處理大規模的數據集,以及提供了高可靠性、高可擴展性和高容錯性,盡管Hadoop具有很多的優點,但也存在著不適合低延遲數據訪問等缺點。Hadoop的分布式存儲和計算模型使其成為處理海量數據的理想選擇,它的應用場景涵蓋了多個領域,如搜索引擎、社交網絡、金融、醫療保健、電信等。

優勢

處理大規模數據集

Hadoop可以處理大規模的數據集,包括海量結構化和非結構化數據,它支持多種數據類型和格式,例如文本、圖像、音頻、視頻等。Hadoop可以有效地處理從幾十GB到幾百PB的數據集

高可靠性

Hadoop的高可靠性是由其分布式存儲和計算模型決定的。數據在Hadoop中被分成許多塊,并存儲在不同的計算節點上,這樣即使某個節點發生故障,數據也可以在其他節點上找到。此外Hadoop還具有數據冗余功能,可以在數據丟失時自動恢復數據。

高可擴展性

Hadoop的計算和存儲能力可以隨著集群規模的增加而線性擴展,因此可以輕松處理不斷增長的數據量。

高容錯性

Hadoop的高容錯性是指其可以在計算節點或數據節點出現故障時繼續運行。Hadoop的數據冗余和計算任務重試機制可以確保故障節點的任務被重新分配到其他可用節點上,從而保證了任務的完成和數據的可靠性。

不足

不適合低延遲數據訪問

hdfs是為大規模數據批處理而設計的,具有高吞吐率,但同時也存在較高的延時。主要是由于HDFS需要將大文件切分為多個塊并分布式存儲,同時還需要進行數據本地性優化以減少網絡傳輸開銷。此外,Hadoop的MapReduce模型也需要大量數據交換磁盤I/O,增加了處理時間。因此,在需要實時處理的場景中,應考慮使用或者引入其他技術。

不能高效存儲大量小文件

Hadoop是基于HDFS文件存儲系統,HDFS是采用塊為基本單位存儲數據,每個塊大小為64KB,如果一個文件達不到64KB,也會存成一個獨立的塊。如果存在大量的小于64KB的小文件,那么會造成每個塊都無法存儲滿,造成大量的空間浪費。

不支持多用戶寫入并任意修改文件

Hadoop目前不支持多用戶并發寫入和隨機修改同一文件的功能。相反,它只允許一個文件只有一個寫入者,并且只允許對文件進行追加操作,也就是新寫入的數據會添加在文件末尾。這種方式與傳統關系型數據庫不同,因為Hadoop的設計目標是高吞吐量和數據處理能力而非實時數據訪問。

應用場景

搜索引擎

搜索引擎需要處理網頁、圖片、視頻等數據并進行存儲、索引和分析。Hadoop可以幫助搜索引擎公司處理這些數據,提高搜索引擎的響應速度和搜索質量。在2007 年,百度集團開始使用 Hadoop 做離線處理。

社交網絡

社交網絡需要處理用戶上傳的文本、圖片、視頻等數據,同時需要進行用戶行為分析、廣告推薦等任務。Hadoop可以幫助社交網絡公司處理這些數據,提高社交網絡的運營效率和用戶體驗。例如Facebook利用Hadoop進行數據處理和分析,并推出了數據倉庫工具hive

電子商務

電子商務需要處理大量的用戶數據、訂單數據、商品數據等,同時需要進行數據分析、推薦系統等任務。Hadoop 可以幫助電商公司處理這些數據,并進行實時分析,以便更好地了解用戶行為和提供個性化的服務。在2008年,淘寶開始投入研究基于 Hadoop 的系統“云梯”,并將其用于處理電子商務相關數據。

在線廣告

在線廣告需要處理大量的廣告數據和用戶數據,同時需要進行實時的競價、定位和投放。Hadoop可以幫助在線廣告公司處理這些數據,以便更好地了解用戶行為和提供精準的廣告投放,Hadoop便是起源于美國著名的互聯網門戶網站雅虎

Hadoop的未來發展

Hadoop已經成為大數據處理領域的重要技術,其未來發展前景廣闊,以下是Hadoop未來發展的幾個趨勢。

參考資料 >

Apache Hadoop.Hadoop官網.2023-04-20

Apache Lucene.Apache Lucene.2023-04-14

github Nutch.Nutch代碼倉庫.2023-04-23

Hive官方網站.Hive官方網站.2023-04-14

hadoop common.apache hadoop.2023-04-23

apache Avro.apache Avro.2023-04-23

chukwa.apache chukwa.2023-04-23

cloudera官網.cloudera官網.2023-04-23

HBase官方網站.HBase官方網站.2023-04-14

apache pig.apache pig.2023-04-23

release 0.20.205.0 available.apache hadoop.2023-04-23

Hadoop 0.22.0 Release Notes.apache hadoop.2023-04-23

release 1.0.0 available.apache hadoop.2023-04-23

CDH Components.cloudera.2023-04-23

Apache Impala.Impala官方網站.2023-04-20

biginsights.ibm biginsights.2023-04-23

Hortonworks Data Platform.cloudera Hortonworks .2023-04-23

MapR Hadoop Distribution.MapR Hadoop Distribution.2023-04-23

Release 2.0.0-alpha available.apache hadoop.2023-04-23

Spark官方網站.Spark官方網站.2023-04-14

Release 2.7.0 available.apache hadoop.2023-04-23

Apache Zeppelin.Apache Zeppelin.2023-04-23

Release 3.0.0-alpha1 available.apache hadoop.2023-04-23

apache kafka.apache kafka.2023-04-23

apache/druid.github.2023-04-23

Apache Hadoop 3.2.0.Apache Hadoop 3.2.0.2023-04-23

Get Arrow.Get Arrow.2023-04-23

Apache Hudi.Apache Hudi.2023-04-23

生活家百科家居網