Hadoop - 簡介



Hadoop 是一個用 Java 編寫的 Apache 開源框架,它允許使用簡單的程式設計模型在計算機叢集上對大型資料集進行分散式處理。Hadoop 框架應用程式在一個提供跨計算機叢集的分散式儲存計算的環境中工作。Hadoop 旨在從單個伺服器擴充套件到數千臺機器,每臺機器都提供本地計算和儲存。

Hadoop 架構

Hadoop 的核心有兩個主要層,即:

  • 處理/計算層 (MapReduce),以及
  • 儲存層 (Hadoop 分散式檔案系統)。
Hadoop Architecture

MapReduce

MapReduce 是一種用於編寫分散式應用程式的並行程式設計模型,由 Google 設計,用於在大型商品硬體叢集(數千個節點)上高效處理大量資料(多 TB 資料集),並以可靠、容錯的方式執行。MapReduce 程式執行在 Hadoop 上,Hadoop 是一個 Apache 開源框架。

Hadoop 分散式檔案系統

Hadoop 分散式檔案系統 (HDFS) 基於 Google 檔案系統 (GFS),提供了一個旨在執行在商品硬體上的分散式檔案系統。它與現有的分散式檔案系統有很多相似之處。但是,與其他分散式檔案系統的區別也很顯著。它具有高度容錯性,並且設計用於部署在低成本硬體上。它為應用程式資料提供高吞吐量訪問,適用於具有大型資料集的應用程式。

除了上述兩個核心元件之外,Hadoop 框架還包括以下兩個模組:

  • Hadoop Common - 這些是其他 Hadoop 模組所需的 Java 庫和實用程式。

  • Hadoop YARN - 這是一個用於作業排程和叢集資源管理的框架。

Hadoop 如何工作?

構建具有強大配置的大型伺服器來處理大規模處理非常昂貴,但作為替代方案,您可以將許多具有單 CPU 的商品計算機連線在一起,作為一個單一的、功能性的分散式系統,實際上,叢集機器可以並行讀取資料集並提供更高的吞吐量。此外,它比一臺高階伺服器更便宜。因此,這是使用 Hadoop 的第一個動機因素,它可以在叢集和低成本機器上執行。

Hadoop 在計算機叢集上執行程式碼。此過程包括 Hadoop 執行以下核心任務:

  • 資料最初被劃分為目錄和檔案。檔案被劃分為大小統一的塊,大小為 128M 和 64M(最好為 128M)。

  • 然後將這些檔案分佈到各個叢集節點進行進一步處理。

  • HDFS 位於本地檔案系統之上,負責監督處理過程。

  • 複製塊以處理硬體故障。

  • 檢查程式碼是否成功執行。

  • 執行 Map 和 Reduce 階段之間的排序操作。

  • 將排序後的資料傳送到特定計算機。

  • 為每個作業寫入除錯日誌。

Hadoop 的優勢

  • Hadoop 框架允許使用者快速編寫和測試分散式系統。它效率很高,可以自動將資料和工作分佈到各個機器上,從而利用底層 CPU 核心的並行性。

  • Hadoop 不依賴於硬體來提供容錯和高可用性 (FTHA),相反,Hadoop 庫本身已被設計為在應用程式層檢測和處理故障。

  • 可以動態地將伺服器新增到叢集中或從叢集中移除,而 Hadoop 則繼續不間斷地執行。

  • Hadoop 的另一個主要優勢是,除了開源之外,它還相容所有平臺,因為它基於 Java。

廣告