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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

Hadoop之MapTask工作机制

發(fā)布時間:2024/2/28 编程问答 56 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Hadoop之MapTask工作机制 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

Hadoop之MapTask工作機制


目錄

  • 并行度決定機制
  • MapTask工作機制

  • 1. 并行度決定機制

  • 問題引出
    maptask的并行度決定map階段的任務(wù)處理并發(fā)度,進而影響到整個job的處理速度。那么,mapTask并行任務(wù)是否越多越好呢?
  • MapTask并行度決定機制
    一個job的map階段MapTask并行度(個數(shù)),由客戶端提交job時的切片個數(shù)決定,如下圖所示。

  • 2. MapTask工作機制

    MapTask工作機制如下圖

  • Read階段:Map Task通過用戶編寫的RecordReader,從輸入InputSplit中解析出一個個key/value。

  • Map階段:該節(jié)點主要是將解析出的key/value交給用戶編寫map()函數(shù)處理,并產(chǎn)生一系列新的key/value。

  • Collect收集階段:在用戶編寫map()函數(shù)中,當數(shù)據(jù)處理完成后,一般會調(diào)用OutputCollector.collect()輸出結(jié)果。在該函數(shù)內(nèi)部,它會將生成的key/value分區(qū)(調(diào)用Partitioner),并寫入一個環(huán)形內(nèi)存緩沖區(qū)中。

  • Spill階段:即“溢寫”,當環(huán)形緩沖區(qū)滿后,MapReduce會將數(shù)據(jù)寫到本地磁盤上,生成一個臨時文件。需要注意的是,將數(shù)據(jù)寫入本地磁盤之前,先要對數(shù)據(jù)進行一次本地排序,并在必要時對數(shù)據(jù)進行合并、壓縮等操作。
    溢寫階段詳情:

  • 利用快速排序算法對緩存區(qū)內(nèi)的數(shù)據(jù)進行排序,排序方式是,先按照分區(qū)編號partition進行排序,然后按照key進行排序。這樣,經(jīng)過排序后,數(shù)據(jù)以分區(qū)為單位聚集在一起,且同一分區(qū)內(nèi)所有數(shù)據(jù)按照key有序。
  • 按照分區(qū)編號由小到大依次將每個分區(qū)中的數(shù)據(jù)寫入任務(wù)工作目錄下的臨時文件output/spillN.out(N表示當前溢寫次數(shù))中。如果用戶設(shè)置了Combiner,則寫入文件之前,對每個分區(qū)中的數(shù)據(jù)進行一次聚集操作。
  • 將分區(qū)數(shù)據(jù)的元信息寫到內(nèi)存索引數(shù)據(jù)結(jié)構(gòu)SpillRecord中,其中每個分區(qū)的元信息包括在臨時文件中的偏移量、壓縮前數(shù)據(jù)大小和壓縮后數(shù)據(jù)大小。如果當前內(nèi)存索引大小超過1MB,則將內(nèi)存索引寫到文件output/spillN.out.index中。
  • Combine階段:當所有數(shù)據(jù)處理完成后,MapTask對所有臨時文件進行一次合并,以確保最終只會生成一個數(shù)據(jù)文件。

    當所有數(shù)據(jù)處理完后,MapTask會將所有臨時文件合并成一個大文件,并保存到文件output/file.out中,同時生成相應(yīng)的索引文件output/file.out.index。
    在進行文件合并過程中,MapTask以分區(qū)為單位進行合并。 對于某個分區(qū),它將采用多輪遞歸合并的方式。每輪合并io.sort.factor(默認100)個文件,并將產(chǎn)生的文件重新加入待合并列表中,對文件排序后,重復(fù)以上過程,直到最終得到一個大文件。
    讓每個MapTask最終只生成一個數(shù)據(jù)文件,可避免同時打開大量文件和同時讀取大量小文件產(chǎn)生的隨機讀取帶來的開銷。

  • 總結(jié)

    以上是生活随笔為你收集整理的Hadoop之MapTask工作机制的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。