首页
/
每日頭條
/
科技
/
mapreduce大數據框架
mapreduce大數據框架
更新时间:2025-11-26 19:48:30

今天我們一起了解下大數據計算引擎MapReduce。MapReduce是一種編程模型,用于大規模數據集(大于1TB)的并行運算。MapReduce的核心思想就是“分而治之”,其主要包括Map階段和Reduce階段。

1.MapReduce技術架構

mapreduce大數據框架(大數據技術之MapReduce)1

圖 1 HDFS技術架構

(1)Map階段負責“分”,即把複雜的任務分解為若幹個“簡單的任務”來處理。“簡單的任務”包含三層含義:一是數據或計算的規模相對原任務要大大縮小;二是就近計算原則,即任務會分配到存放着所需數據的節點上進行計算;三是這些小任務可以并行計算,彼此間幾乎沒有依賴關系。

(2)Reduce階段負責對map階段的結果進行彙總。至于需要多少個Reduce,用戶可以根據具體問題,通過在mapred-site.xml配置文件裡設置參數mapred.reduce.tasks的值,默認值為1。

2.MapReduce的工作原理

mapreduce大數據框架(大數據技術之MapReduce)2

圖 2 MapReduce的工作原理

從最上方的user program開始執行程序,user program鍊接了MapReduce庫,實現了最基本的Map函數和Reduce函數。執行的順序如下:

1)MapReduce庫先把user program的輸入文件劃分為M份(M為用戶定義),每一份通常有16MB到64MB,例如分成split0~4;然後使用fork将用戶進程拷貝到集群内其它機器上。

2.user program的副本中有一個稱為master,其餘稱為worker,master是負責調度的,為空閑worker分配作業(Map作業或者Reduce作業),worker的數量也是可以由用戶指定的。

3.被分配了Map作業的worker,開始讀取對應分片的輸入數據,Map作業數量是由M決定的,和split一一對應;Map作業從輸入數據中抽取出鍵值對,每一個鍵值對都作為參數傳遞給map函數,map函數産生的中間鍵值對被緩存在内存中。

4.緩存的中間鍵值對會被定期寫入本地磁盤,而且被分為R個區,R的大小是由用戶定義的,将來每個區會對應一個Reduce作業;這些中間鍵值對的位置會被通報給master,master負責将信息轉發給Reduce worker。

5.master通知分配了Reduce作業的worker它負責的分區在什麼位置(肯定不止一個地方,每個Map作業産生的中間鍵值對都可能映射到所有R個不同分區),當Reduce worker把所有它負責的中間鍵值對都讀過來後,先對它們進行排序,使得相同鍵的鍵值對聚集在一起。因為不同的鍵可能會映射到同一個分區也就是同一個Reduce作業,所以排序是必須的。

6.reduce worker遍曆排序後的中間鍵值對,對于每個唯一的鍵,都将鍵與關聯的值傳遞給reduce函數,reduce函數産生的輸出會添加到這個分區的輸出文件中。

7.當所有的Map和Reduce作業都完成了,master喚醒正版的user program,MapReduce函數調用返回user program的代碼。

所有執行完畢後,MapReduce輸出放在了R個分區的輸出文件中(分别對應一個Reduce作業)。用戶通常并不需要合并這R個文件,而是将其作為輸入交給另一個MapReduce程序處理。整個過程中,輸入數據是來自底層分布式文件系統HDFS的,中間數據是放在本地文件系統的,最終輸出數據是寫入底層分布式文件系統HDFS的。而且我們要注意Map/Reduce作業和map/reduce函數的區别:Map作業處理一個輸入數據的分片,可能需要調用多次map函數來處理每個輸入鍵值對;Reduce作業處理一個分區的中間鍵值對,期間要對每個不同的鍵調用一次reduce函數,Reduce作業最終也對應一個輸出文件。

3.MapReduce的處理流程詳解

我們以單詞統計為例,分别介紹map階段和reduce階段的處理過程。單詞統計的業務過程是統計一個文件中的每個單詞出現的次數,業務過程大緻如下:

mapreduce大數據框架(大數據技術之MapReduce)3

圖 3單詞統計業務過程

1.MapReduce的map階段主要把讀入的數據進行分區處理,并進行數據排序、分組,其具體流程如下:

mapreduce大數據框架(大數據技術之MapReduce)4

圖 4map階段數據處理過程

1)讀取HDFS文件數據,按照行解析成<k,v>格式;

2)對1輸出的<k,v>經過程序處理按照新的邏輯輸出新的<k,v>;

3)對<k,v>進行分區處理;

4)各分區分别對輸入的<k,v>進行排序,分組。

2.reduce階段是對數據進行合并,并輸出結果的過程,其處理過程主要如下:

mapreduce大數據框架(大數據技術之MapReduce)5

圖 5 Reduce階段處理流程

Reduce階段主要是對map階段的輸出結果進行合并,排序處理後輸出結果到HDFS上。

4.MapReduce的特點

1)MapReduce的優點

易于編程:如果要編寫分布式程序,隻需實現一些簡單接口,與編寫普通程序類似,避免了複雜過程。

良好的擴展性:當計算資源不能得到滿足的時候,可以通過簡單的增加機器來擴展它的計算能力。

高容錯性:MapReduce程序在執行過程中如果有其中一台機器挂了,它可以把計算任務轉移到另外一個正常節點上運行,而且這個過程不需要人工參與,而完全是由Hadoop内部完成的。

适合海量數據的離線處理:MapReduce由于其分布式計算的能力,因此可以實現上幹台服務器集群并發工作,提供海量數據的處理能力。

2)MapReduce的缺點

不适用實時計算:由于MapReduce每次計算結果需要落地到磁盤上,會導緻大量的磁盤IO操作,因此不适合做實時數據的計算。

不适合流式計算:流式計算的輸入數據是動态的,而MapReduce的輸入數據集是靜态的,不能動态變化。這是因為MapReduce自身的設計特點決定了數據源必須是靜态的。

不适合DAG有向圖計算:因為每個MapReduce作業的輸出結果都會寫入到磁盤,會造成大量的磁盤IO,導緻性能非常低下,因此不适合做DAG有向圖計算。

5.MapReduce的應用場景

1)單詞統計;

2)簡單的數據統計,比如網站的PV和UV統計;

3)搜索引擎建立索引;

4)搜索引擎中,統計最流行的K個搜索詞;

5)統計搜索詞頻率,幫助優化搜索詞提示;

6)複雜數據分析算法實現。

,
Comments
Welcome to tft每日頭條 comments! Please keep conversations courteous and on-topic. To fosterproductive and respectful conversations, you may see comments from our Community Managers.
Sign up to post
Sort by
Show More Comments
推荐阅读
汽車倒車步驟是什麼
汽車倒車步驟是什麼
1、手動擋踩離合挂倒檔。2、右腳放在刹車上(不要踩),左腳慢慢松離合,倒車速度完全靠離合器控制。3、緩緩松離合,汽車慢慢向後移動時就穩住離合器,汽車就會平穩倒車。4、自動擋先踩刹車後推倒檔,然後緩緩松開刹車,就會平穩倒車。5、倒車過程中,要不斷左右看倒車鏡,回頭看車後情況。平路上倒車,需要停車就踩下...
2025-11-26
b450BIOS要怎麼設置
b450BIOS要怎麼設置
1、插入U盤,然後進bios,使用鍵盤移到"BIOS功能"這一項,進行U盤或光盤的啟動設置。2、選擇最上面這一項啟動優先權#1”,然後按Enter鍵,會彈出一個窗口,在這裡就可以看到U盤的名稱,選擇好以後,按Enter鍵進行确定。3、當按了Enter确定鍵之後,退出小窗口,U盤就已經被選定成為了第一...
2025-11-26
怎麼把糖豆視頻保存到相冊
怎麼把糖豆視頻保存到相冊
1、打開軟件,選視頻點擊進去;2、在視頻詳情界面,點擊下載視頻和舞曲按鈕;3、選擇你要下的項目,視頻,舞曲,點擊确定按鈕就可以下載的。
2025-11-26
iPhone11和iPhoneXR買哪個好
iPhone11和iPhoneXR買哪個好
1、首先從硬件的方面考慮,iPhoneXR在配置方面不會遜色iPhone11太多,兩款手機都是采用了視網膜顯示屏屏幕,LCD材質分辨率為1792×828,結合到蘋果的原彩顯示技術,能夠呈現出極為出色細膩的顯示效果,兩款手機在顯示效果沒有差異,如果你是一個平時用來看看劇、聊聊天的話,那麼iPhoneXR其實比iPhone11的性價比更高,在手感和畫質體驗上沒有任何區别,另外,iPhone11和iPh
2025-11-26
蜈蚣養殖技術是什麼
蜈蚣養殖技術是什麼
1、場地建造。在自然中,它們主要生活的地方,多集中于高度較低的山地中,在溫度升高之後,它們就會從冬眠中醒過來,開始進行正常的活動。它們比較喜歡藏在陰冷潮濕的草叢或者土溝裡,白天它們會找一些陰涼的地方呆着,晚上才會出來活動。所以我們在建造飼養場地的時候,要根據它們的習慣,來為它們打造一個類似的環境。可...
2025-11-26
Copyright 2023-2025 - www.tftnews.com All Rights Reserved