MapReduce 教程學習手册

Published on 2023-04-20 00:10:05 · 中文 · English · بالعربية · Español · हिंदीName · 日本語 · Русский язык

MapReduce 是一種在 Hadoop 後台運行的程式設計範式,可提供可擴展性和簡單的數據處理解決方案。 本教程解釋了 MapReduce 的功能以及它如何分析大數據。
MapReduce 是一種程式設計模型,用於編寫可以在多個節點上並行處理大數據的應用程式。 MapReduce 提供用於分析大量複雜數據的分析功能。

什麼是大數據?

大數據是無法使用傳統計算技術處理的大型數據集的集合。 例如,Facebook 或 Youtube 需要它每天收集和管理的數據量,就屬於大數據的範疇。 然而,大數據不僅涉及規模和數量,還涉及以下一個或多個方面——速度、多樣性、數量和複雜性。

為什麼是 MapReduce?

傳統的企業系統通常有一個中央伺服器來存儲和處理數據。 下圖描繪了傳統企業系統的示意圖。 傳統模型當然不適合處理海量的可擴展數據,標準資料庫伺服器也無法容納。 此外,集中式系統在同時處理多個檔時會產生過多的瓶頸。
传统企业系统视图
Google 使用一種稱為 MapReduce 的演演算法解決了這個瓶頸問題。 MapReduce 將一個任務分成小部分,並將它們分配給多台計算機。 之後,將結果集中到一處,並進行整合,形成結果數據集。
中央系统

MapReduce 是如何工作的?

MapReduce 演算法包含兩個重要任務,即 Map 和 Reduce。
Map 任務獲取一組數據並將其轉換為另一組數據,其中各個元素被分解為元組(鍵值對)。 Reduce 任務將 Map 的輸出作為輸入,並將這些數據元組(鍵值對)組合成一組較小的元組。
reduce 任務總是在 map 作業之後執行。
現在讓我們來看看請查看每個階段並嘗試了解它們的重要性。
Phases 輸入階段-這裏我們有一個記錄讀取器,它翻譯輸入檔中的每條記錄,並將解析后的數據以鍵值對的形式發送到映射器。 Map-Map 是一個使用者定義的函數,它採用一系列鍵值對並處理每個鍵值對以生成零個或多個鍵值對。 中間鍵-映射器生成的鍵值對稱為中間鍵。 Combiner-組合器是一種當地語系化簡器,它將映射階段的相似數據分組為可識別的集合。 它將映射器的中間鍵作為輸入,並應用使用者定義的代碼在一個映射器的小範圍內聚合值。 它不是主要 MapReduce 演算法的一部分; 它是可選的。 Shuffle and Sort-Reducer 任務從 Shuffle 和 Sort 步驟開始。 它將分組的鍵值對下載到運行 Reducer 的本地機器上。 各個鍵值對按鍵排序到更大的數據清單中。 數據清單將等效鍵組合在一起,以便在 Reducer 任務中輕鬆反覆運算它們的值。 Reducer-Reducer 將分組的鍵值對數據作為輸入,並對它們中的每一個運行一個 Reducer 函數。 在這裡,數據可以通過多種方式進行聚合、過濾和組合,並且需要進行廣泛的處理。 執行結束后,它會向最後一步提供零個或多個鍵值對。 輸出階段-在輸出階段,我們有一個輸出格式化程式,用於轉換來自 Reducer 函數的最終鍵值對,並使用記錄編寫器將它們寫入檔。
讓我們試著借助一個小圖來理解 Map &f Reduce 這兩個任務-
MapReduce Work

MapReduce-示例

讓我們舉一個真實世界的例子來理解 MapReduce 的力量。 Twitter 每天接收大約5億條推文,即每秒近3000條推文。 下圖顯示了 Tweeter 如何在 MapReduce 的説明下管理其推文。
MapReduce 示例
如圖所示,MapReduce 演算法執行以下操作-
Tokenize-將推文標記為標記映射並將它們寫入鍵值對。 Filter-從標記映射中過濾掉不需要的詞,並將過濾后的映射寫為鍵值對。 Count-每個單詞生成一個令牌計數器。 Aggregate Counters-將類似計數器值的聚合準備成小的可管理單元。