91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

MapTask和ReduceTask流程是怎樣的

發布時間:2022-01-04 14:51:37 來源:億速云 閱讀:140 作者:iii 欄目:云計算

本篇內容主要講解“MapTask和ReduceTask流程是怎樣的”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“MapTask和ReduceTask流程是怎樣的”吧!

map->reduce

map和reduce之間的過程,成為shuffling,官方圖是這樣介紹的.(這樣描述不是很準確)

MapTask和ReduceTask流程是怎樣的

MapTask

每個map任務都有一個環形內存緩沖區用于存儲任務的輸出.默認100MB(MRJobConfig.IO_SORT_MB修改)
一旦緩沖達到閾值(MRJobConfig.MAP_SORT_SPILL_PERCENT)0.8,后臺線程將內容spill到硬盤,將緩緩沖區寫到MRJobConfig.JOB_LOCAL_DIR指定目錄.
查看MRJobConfig.JOB_LOCAL_DIR值為mapreduce.job.local.dir,查看org.apache.hadoop.mapreduce包下的mapred-default.xml(hadoop-mapreduce-client-core.2.7.1.jar中)文件搜索local.dir,得到配置

<property>
  <name>mapreduce.cluster.local.dir</name>
  <value>${hadoop.tmp.dir}/mapred/local</value>
  <description>The local directory where MapReduce stores intermediate
  data files.  May be a comma-separated list of
  directories on different devices in order to spread disk i/o.
  Directories that do not exist are ignored.
  </description>
</property>

ok,現在從hadoop-common-2.7.1.jar中的core-default.xml中搜索hadoop.tmp.dir

<property>
  <name>hadoop.tmp.dir</name>
  <value>/tmp/hadoop-${user.name}</value>
  <description>A base for other temporary directories.</description></property>

現在我們得到了spill的臨時路徑/tmp/hadoop-${user.name}/mapred/local.

在spill之前,首先進行partition,每個分區進行sort,如果有combiner,它就在排序后,執行combiner。

如果溢出文件超過三個(JobContext.MAP_COMBINE_MIN_SPILLS),將會再次執行combiner

MapTask.MapOutputBuffer中源碼

if (combinerRunner == null || numSpills < minSpillsForCombine) {
    Merger.writeFile(kvIter, writer, reporter, job);
} else {
    combineCollector.setWriter(writer);
    combinerRunner.combine(kvIter, combineCollector);
}

注: map spill到磁盤時,可以設置壓縮來節省磁盤和網絡IO
設置 MAP_OUTPUT_COMPRESS 為true ,MRJobConfig.MAP_OUTPUT_COMPRESS_CODEC值為codec
例如:
conf.set(MRJobConfig.MAP_OUTPUT_COMPRESS, "true");
conf.set(MRJobConfig.MAP_OUTPUT_COMPRESS_CODEC, "org.apache.hadoop.io.compress.DefaultCodec");

ReduceTask

ReduceTask要從各個MapTask上讀取數據,ReduceTask大體流程分為5個階段。
  1. Shuffle
    ReduceTask從MapTask上遠程拷貝數據。超過閾值寫道磁盤。

  2. Merge
    ReduceTask啟動兩個線程,對內存和硬盤數據進行合并。

  3. Sort
    將MapTask的結果歸并排序。

  4. Reduce
    用戶自定義Reduce

  5. Write
    reduce結果寫到HDFS

到此,相信大家對“MapTask和ReduceTask流程是怎樣的”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

横山县| 顺义区| 河池市| 肥城市| 蓬莱市| 蒙山县| 三亚市| 怀柔区| 五家渠市| 巍山| 青海省| 普兰县| 云梦县| 富阳市| 攀枝花市| 绍兴县| 永昌县| 临湘市| 黑龙江省| 沙坪坝区| 肃宁县| 通化市| 自贡市| 崇信县| 革吉县| 旬邑县| 博客| 巴楚县| 屯门区| 杂多县| 施甸县| 鄂温| 张掖市| 师宗县| 柘城县| 定陶县| 武宁县| 衡水市| 木里| 泰和县| 深水埗区|