MapReduce 架構解釋,你需要知道的一切
已發表: 2020-02-27隨著技術的進步,每個企業都希望存儲和處理他們的在線數據。 這一需求為企業從線上和線下的活動中收集大數據帶來了新的需求。 收集到的數據需要有效地存儲和處理。
Hadoop 是處理大數據的最流行的框架之一,而 Hadoop 最好的支持塊之一是 MapReduce。 如果您正在尋找數據科學領域的數據分析師職業,那麼您必須了解這種新興且流行的編程語言。
目錄
MapReduce 在數據分析中的重要性
MapReduce 處理廣泛的規模數據,而 Hadoop 完成以多種編程方言編寫的連續 MapReduce 程序,包括 C++、Python、Ruby on Rails、Java 等。 MapReduce 的本質是並行的,這使得它在編程大量數據時非常有用,這些數據可以以集群的形式被多台機器使用。
什麼是 MapReduce 編程?
MapReduce 是一個分佈式計算的程序模塊。 它在 Java 上分兩個階段工作,即
- 地圖階段
- 減少階段
為了理解 MapReduce,每個編碼員和程序員都必須了解這兩個階段及其功能。
1. 地圖階段
在 Map 階段,數據的信息將分為兩個主要部分,即 Value 和 Key。 值僅在發牌階段記錄,而密鑰在處理階段寫入。 每當客戶端屈服於 Hadoop 框架的數據參與時,作業跟踪器就會分配作業,並且數據的信息被分成許多部分。

然後根據信息的性質對信息進行劃分。 記錄閱讀器以鍵值對的形式傳輸分割的信息,這通常稱為(KV)對。 KV 是 Map Phase 的原始輸入數據形式,它再次處理作業跟踪器內部的數據。 對於不同的應用程序,表格上的信息會有所不同。 因此,您需要優化輸入數據以進行相應的加密。
當你取文本格式的信息時,你會找到key,也就是字節偏移量。 此映射階段還使用組合器和分區模塊對程序進行編碼,以便執行不尋常的數據操作。 您會發現數據本地化只會發生在數據的映射器單元中。
- Map階段的Combiner模塊
在 Map 階段,combiner 模塊也稱為 mini reducer。 當映射器處理大量數據時,需要組合器來征服高帶寬。 為了解決top bandwidth問題,需要在map階段使用combiner邏輯來獲得優秀的輸出結果。
- Map階段的分區模塊
就像在組合器模塊中一樣,分區段為 MapReduce 編程語言提供了一個至關重要的方面,最終影響了 Hadoop 框架。 分區段降低了還原過程中產生的壓力,從而提供了出色的輸出。 您甚至可以根據不同的情況,根據您的數據自定義分區。
您甚至可以在此過程中使用默認分區。 此外,還有靜態和動態分區,可幫助計算機操作員使用 reduce 和 map 階段方法將數據劃分為多個圖形。 您可以根據業務需求設計和自定義這些分區。 這個分區模塊對於在 MapReduce 架構的上述兩個進程之間傳輸數據將是有價值的。

2.減少階段
在 map 階段處理之後,組織和混雜的數據將成為 Reduce 階段的輸入。 在這個階段,所有排序後的數據將被合併,在 HDFS 框架中會考慮實際的 Key-Value 對。 記錄作者記錄了從 Reducer 階段到 HDFS 框架的統計數據。 儘管此階段對於搜索和映射是可選的,但它在提高性能方面起著至關重要的作用。
閱讀:用於大數據的 10 大 Hadoop 工具
此階段啟動 Map 階段提供的數據的實際過程。 Map 階段提供 reducer 結果,例如 part-r-0001。 您還需要為用戶想要跟踪的每個任務提供一組數字。 您還可以設置許多優先級,以便放置特定情況的名稱。
在這個階段,理論執行對於運行數據至關重要。 如果多個 reducer 正在處理相同的數據並且第一個 reducer 處理速度很慢,那麼任務跟踪器可以將處理分配給下一個可用的 reducer 以加速該過程。 這種分配給可用reducer 的工作稱為FIFO,即先進先出。
了解 MapReduce 架構的過程
以下是在 Hadoop 框架中使用 MapReduce 架構時應牢記的要點。
Map階段作業創建:在MapReduce架構中,創建第一個Map階段作業來劃分數據並執行map模塊來記錄數據。
數據劃分:組合器和劃分模塊幫助數據處理許多分離。 當等於處理分區所需的時間時,處理整個數據輸入所需的時間會更高。 較小的分隔以並行方式提供更好的數據處理和平衡。
另請閱讀: Hadoop 的特性和應用
精確分割:尺寸太小的分離在 Map 階段並不理想,因為它們增加了處理分割和 Map 任務創建者來控制執行整個任務的時間的負擔。
考慮分割的平均大小:理想情況下,分割大小應為 64 MB,您應將其設置為默認值以創建統一大小的分割。 分割後的大小應該與 HDFS 塊相當。
實現 HDFS 模塊:Map 階段輸出在單個數據單元上而不是在 HDFS 模塊上將寫入生成到本地磁盤。 為了避免重複,這在 HDFS 中很常見,您需要選擇 HDFS 以外的本地驅動器。
防止重複:Map 階段是處理數據以饋送到 Reduce 階段並提供結果的核心部分。 作業完成後,可以刪除地圖輸出,防止數據複製。
提供給 reduce 階段作業的結果:Map 階段的結果連續提供給 Reduce 階段。 在訂單中,生產被組合併處理到用戶定義的reduce函數。

本地存儲:除 Map 方法外,Reduce 部分的數據保存在 HDFS 中,這也是保存在本地數據單元中的第一個副本。
結論
MapReduce 框架簡化了處理 Hadoop 結構中可用的海量數據的複雜過程。 與 Hadoop 1.0 相比,Hadoop 2.0 中的 MapReduce 編程語言發生了許多重大變化。
有許多課程可用於學習 MapReduce 編程語言。 您可以利用 upGrad 的大數據工程和大數據分析課程等研究生課程來追求富有成效的編程職業。 與我們的專家聯繫以了解更多信息並更好地了解我們的計劃。
如果您有興趣了解有關大數據的更多信息,請查看我們的 PG 大數據軟件開發專業文憑課程,該課程專為在職專業人士設計,提供 7 多個案例研究和項目,涵蓋 14 種編程語言和工具,實用的動手操作研討會,超過 400 小時的嚴格學習和頂級公司的就業幫助。
從世界頂級大學在線學習軟件開發課程。 獲得行政 PG 課程、高級證書課程或碩士課程,以加快您的職業生涯。