日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

hadoop学习之:Map、Reduce详解

發布時間:2024/2/28 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 hadoop学习之:Map、Reduce详解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Hadoop學習重點主要為HDFS、MapReduce 部分:

接下來重點描述一下MAP與Reduce 的過程。

看了好多資料,如果有錯誤的地方請大家指出。

MAP部分:

下圖是官方給予的關于MapReduce的步驟,實際上圖已經很好的說明了MapReduce的過程。



TaskTracker 接受到MAP任務,或者SPLIT, ?一個SPLIT對應一個或者多個BLOCK。有多少個SPLIT就會有多少個MAP過程。

? ? ? ?MAP過程一共分為3步。

1、輸入階段。 ?MAP進程獲取SPLIT分塊

2、MAP過程。根據每一個<KEY,VALUE>對進行MAP過程。代碼如下: ?以下是MAP階段多線程運行部分。 ?

也就是對每一個<KEY,VALUE>進行MAP 相應操作。

public void run(Context content) throws ..{...while(context.nextKeyValue()){map(key,value,context)}.. } protected map(...){context.write((KEYOUT)key,(VALUEOUT)value); }

3、Shuffle部分。結束MAP步驟輸出MAP結果,結果是存儲在內存中的。 ?但是當MAP結果數量過大時,內存空間不足,那么就會將結果SPILL,也就是壓進磁盤中。在壓進磁盤之前,會進行sort partition and combine(if has)。 ?壓進磁盤過程中, MAP部分停止往內存輸入數據直到SPILL結束。

sort: ?應該是根據KEY值進行 merge 排序

? ? ? ? partition: ?將MAP輸出的<key,value>進行 part. ? ?不同的 partition 會分到不同的reduce機器進行處理。 ? hadoop默認的partition部分是根據key值的hash值分類,從而確保相同的key值分到同一個reudce鐘

? ? ? ?combine:這是MAP的最后一步,就是對于MAP輸出的一個預reduce

Reduce部分:

? ??

? ? ? ?通過上圖來理解REDUCE部分。

? ? ?我將REDUCE分為以下幾步:

? ? ? 1、數據收集。 ? REDUCE端有一個進程間歇的向 Jobtrack發送請求,詢問已經完成MAP的數據。 ?獲得相應數據后,REDUCE端通過HTTP請求將結果COPY到本地

? ? ? 2、數據整合。 ?REDUCE端從不同的機器上獲得多個MAP結果,然后進行MERGE整合

? ? ? 3、對每一個<key, Iist<value>> 進行一個REUDCE操作。 ?主要代碼如下:

public void run(Context content) throws ..{...while(context.nextKeyValue()){reduce(key,value,context)}.. } protected void reduce(...){for(VALUEIN value: values){contenxt.write(...)}


總結

以上是生活随笔為你收集整理的hadoop学习之:Map、Reduce详解的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。