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

溫馨提示×

溫馨提示×

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

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

如何進行MapReduce中的JobSplit源碼分析

發布時間:2021-12-29 13:20:25 來源:億速云 閱讀:138 作者:柒染 欄目:大數據

這篇文章將為大家詳細講解有關如何進行MapReduce中的JobSplit源碼分析,文章內容質量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。

MapReduce源碼分析 - JobSplit

根據MapRudece的原理,我們從4個過程去分析MR的源碼:

  • Split階段;

  • MapTask階段;

  • Shuffle階段;

  • ReduceTask階段;

下面首先介紹Split階段的源碼。

如何進行MapReduce中的JobSplit源碼分析

Split源碼分析

  • MR是通過JobSubmitter.submitJobInternal提交給RM的

  • 在submitJobInternal中通過writeSplits(JobContext job, Path jobSubmitDir)將job的輸入文件進行split

  • writeSplit只是對新舊api進行了下封裝,根據你的代碼選擇新舊api,這里調用writeNewSplits使用新API對file進行split

  • 整個切片的邏輯過程主要就是在writeNewSplit里

① writeNewSplits源碼分析

進入writeNewSplits()方法,可以看出該方法首先獲取splits數組信息后,排序,將會優先處理大文件,最終返回mapper數量。這其中又分為兩部分:確定切片數量 和 寫入切片信息。 確定切片數量的任務交由FileInputFormat的getSplits(job)完成,寫入切片信息的任務交由JobSplitWriter.createSplitFiles(jobSubmitDir, conf, jobSubmitDir.getFileSystem(conf), array)方法,該方法會將切片信息和SplitMetaInfo都寫入HDFS中。return array.length,返回的是map任務數,默認map的數量是: default_num = total_size / block_size;

其內部邏輯主要分為以下幾個步驟:

  • 創建InputFormat實例,用實例調用getSplits方法對文件進行切分,getSplits內部是切分的主要邏輯;

  • 將切片文件根據split的大小進行sort逆序排序

  • createSplitFiles:將保存切片信息的array數組落地到文件;

② getSplits源碼分析

如何進行MapReduce中的JobSplit源碼分析

如何進行MapReduce中的JobSplit源碼分析

getSplits主要是將files進行切片,將文件路徑path、偏移量(即起始位置,是該split在整個文件中的起始位置)、切分大小splitSize、偏移量所在block的locations信息Host和在內存中的host信息寫入FileSplit對象中,一個split對應一個對象,最后放入splits中返回。

③ createFile源碼分析

如何進行MapReduce中的JobSplit源碼分析

createSplitFiles創建的文件包括兩個,分別是記錄切片的切片文件和記錄切片元數據的切片元數據文件 。

補充內容:

getSplits方法中split切片的大小

  • 首先要區分兩個概念:塊(block)和切片(split)。塊是HDFS中的概念,文件在HDFS中是以塊為單位進行存儲。切片是MapReduce中的概念;

  • split的大小由公式可知,取決于minSize、blockSize、maxSize三者之間的大小關系;從而也決定了split和block塊的大小關系,我們在實際使用中要保證split和block是一對一的關系;

如何進行MapReduce中的JobSplit源碼分析

關于如何進行MapReduce中的JobSplit源碼分析就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

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

AI

肥乡县| 咸丰县| 三江| 英吉沙县| 霸州市| 威宁| 开江县| 沭阳县| 轮台县| 连州市| 穆棱市| 隆昌县| 太仆寺旗| 古丈县| 中超| 闻喜县| 呼和浩特市| 东乡县| 武威市| 横峰县| 天台县| 都匀市| 雷山县| 黔西县| 新干县| 汝南县| 阿拉尔市| 乐昌市| 乡城县| 黄龙县| 孝昌县| 临沂市| 林西县| 佛坪县| 新化县| 磐石市| 永宁县| 宝应县| 昭觉县| 盘锦市| 鄂州市|