Hadoop 中的數據處理:Hadoop 組件解釋 [2022]

已發表: 2021-01-03

隨著萬維網多年來的指數級增長,生成的數據也呈指數級增長。 這導致創建了大量數據,並且很難使用傳統的關係數據庫系統處理和存儲如此龐大的數據量。

此外,創建的數據不僅是結構化形式,還包括視頻、圖像等非結構化格式。這種數據不能被關係數據庫處理。 為了解決這些問題,Hadoop 應運而生。

在深入研究 Hadoop 的數據處理之前,讓我們先了解一下 Hadoop 及其組件。 Apache Hadoop 是一個允許以快速有效的方式存儲和處理大量數據的框架。 它可用於存儲大量結構化和非結構化數據。 了解有關 hadoop 生態系統和組件的更多信息。

Hadoop 的關鍵構建塊如下:

目錄

Hadoop的構建塊

1. HDFS(存儲層)

顧名思義,Hadoop分佈式文件系統是Hadoop的存儲層,負責將數據存儲在分佈式環境中(主從配置)。 它將數據拆分為多個數據塊,並將它們存儲在不同的數據節點上。 這些數據塊也會在不同的數據節點之間複製,以防止在其中一個節點出現故障時丟失數據。

它有兩個用於處理數據的主要進程:-

一種。 名稱節點

它在主機上運行。 它保存存儲在文件系統中的所有文件的位置,並跟踪數據在集群中的位置,即它存儲文件的元數據。 當客戶端應用程序想要對數據進行某些操作時,它會與 NameNode 進行交互。 當 NameNode 收到請求時,它通過返回所需數據所在的 Data Node 服務器列表來響應。

灣。 數據節點

這個過程在每台從機上運行。 它的功能之一是將每個 HDFS 數據塊存儲在其本地文件系統中的單獨文件中。 換句話說,它包含塊形式的實際數據。 它週期性地發送心跳信號並等待來自NameNode的請求訪問數據。

2. MapReduce(處理層)

它是一種基於 Java 的編程技術,用於 Hadoop 框架之上,用於更快地處理大量數據。 它使用許多數據節點在分佈式環境中處理這些龐大的數據,從而以容錯的方式實現並行處理和更快的操作執行。

MapReduce 作業將數據集拆分為多個數據塊,這些數據塊進一步轉換為鍵值對,以便由映射器處理。 數據的原始格式可能不適合處理。 因此,與映射階段兼容的輸入數據是使用 InputSplit 函數和 RecordReader 生成的。

InputSplit 是要由單個映射器處理的數據的邏輯表示。 RecordReader 將這些拆分轉換為採用鍵值對形式的記錄。 它基本上將輸入的面向字節的表示轉換為面向記錄的表示。

然後將這些記錄饋送到映射器以進一步處理數據。 MapReduce 作業主要由三個階段組成,即 Map 階段、Shuffle 階段和 Reduce 階段。

一種。 地圖階段

這是數據處理的第一階段。 map 階段的主要任務是處理來自 RecordReader 的每個輸入,並將其轉換為中間元組(鍵值對)。 此中間輸出由映射器存儲在本地磁盤中。

這些鍵值對的值可能不同於從 RecordReader 接收的輸入值。 map 階段還可以包含組合器,也稱為本地化簡器。 它們對數據執行聚合,但僅在一個映射器的範圍內。

由於計算是在不同的數據節點上執行的,因此與同一鍵關聯的所有值都必須合併到一個 reducer 中。 此任務由分區程序執行。 它對這些鍵值對執行哈希函數以將它們合併在一起。

它還確保所有任務都均勻地分配給減速器。 當我們使用多個減速器時,分區器通常會出現。

灣。 洗牌和排序階段

此階段將從映射器獲得的中間輸出傳輸到化簡器。 這個過程稱為洗牌。 映射器的輸出在傳輸到減速器之前也會進行排序。 排序是根據鍵值對中的鍵完成的。 它甚至可以在接收到整個數據之前幫助化簡器對數據執行計算,並最終有助於減少計算所需的時間。

隨著鍵的排序,每當reducer 獲得不同的鍵作為輸入時,它就會開始對先前接收的數據執行reduce 任務。

C。 減少階段

map階段的輸出作為reduce階段的輸入。 它採用這些鍵值對並對它們應用 reduce 函數以產生所需的結果。 鍵和與鍵關聯的值被傳遞給 reduce 函數以執行某些操作。

我們可以過濾數據或將其組合以獲得聚合輸出。 在 reduce 函數執行後,它可以創建零個或多個鍵值對。 該結果被寫回到 Hadoop 分佈式文件系統中。

3. YARN(管理層)

Yet Another Resource Navigator 是 Hadoop 的資源管理組件。 每個節點上運行著後台進程(從機上的節點管理器和主節點上的資源管理器),它們相互通信以分配資源。 資源管理器是 YARN 層的核心,它管理所有應用程序之間的資源並將請求傳遞給節點管理器。

節點管理器監視機器的內存、CPU 和磁盤等資源利用率,並將其傳送給資源管理器。 它安裝在每個數據節點上,負責執行數據節點上的任務。

必讀:面向大數據工程師的 10 大 Hadoop 工具

結論

Hadoop上數據處理的整個工作流程可以總結如下:

  • 輸入分割 邏輯上將駐留在 HDFS 上的數據拆分為多個數據塊。 如何拆分數據的決定由Inputformat完成
  • RecordReader 將數據轉換為鍵值對。 RecordReader 將面向字節的數據轉換為面向記錄的數據。 該數據用作映射器的輸入。
  • 映射器只是一個用戶定義的函數,處理這些鍵值對並生成中間鍵值對以供進一步處理。
  • 這些對通過組合器在本地減少(在一個映射器的範圍內),以減少要從映射器傳輸到減速器的數據量。
  • Partitioner 確保所有具有相同 key 的值都合併到同一個 reducer 中,並且任務在 reducer 之間均勻分佈。
  • 然後將這些中間鍵值對打亂到 reducer 並根據鍵進行排序。 這個結果作為輸入提供給減速器。
  • reduce 函數聚合每個鍵的值,然後使用 RecordWriter 將結果存儲回 HDFS。 在將其寫回 HDFS 之前,應寫入的數據格式由Outputformat決定

如果您有興趣了解有關大數據的更多信息,請查看我們的 PG 大數據軟件開發專業文憑課程,該課程專為在職專業人士設計,提供 7 多個案例研究和項目,涵蓋 14 種編程語言和工具,實用的動手操作研討會,超過 400 小時的嚴格學習和頂級公司的就業幫助。

從世界頂級大學在線學習軟件開發課程獲得行政 PG 課程、高級證書課程或碩士課程,以加快您的職業生涯。

掌握未來的技術 - 大數據

400 多個小時的學習時間。 14 種語言和工具。 IIIT-B 校友身份。
IIIT Bangalore 大數據高級證書課程