文章目錄
- 一、切片與MapTask并行度決定機制
- 二、Job提交流程
- 三、切片執行流程決議
- 四、FileInputFormat切片機制
- 五、TextInputFormat
- 六、CombineTextInputFormat切片機制
一、切片與MapTask并行度決定機制
MapTask的并行度決定Map階段的任務處理并發讀,進而影響到整個Job的處理速度,引入兩個概念:
- 資料塊:
Block是HDFS物理上把資料分成一塊一塊,資料塊是HDFS存盤資料單位 - 資料切片: 只是在邏輯上對輸入進行分片,并不會在磁盤上將其切分成片進行存盤,資料切片是MapReduce程式計算輸入資料的單位,一個切片會對應啟動一個
MapTask

二、Job提交流程
提交一個Job要經過:
- 建立連接
connect()- 在這里會判斷該
Job是本地運行環境還是YARN集群運行環境
- 在這里會判斷該
- 提交
Job,submitJobInternal()- 創建給集群提交資料的
Stag路徑—getStagingDir() - 獲取
JobId,并創建Job路徑—getNewJobID() - 拷貝
jar包到集群—copyAndConfigureFiles()與uploadFiles - 計算切片,生成切片的規劃檔案—
writeSplits - 向
Stag路徑寫XML組態檔—writreXml() - 最后提交
Job,回傳提交狀態
- 創建給集群提交資料的
如下圖所示:

三、切片執行流程決議

四、FileInputFormat切片機制
切片機制:
- 簡單地按照檔案的內容長度進行切片
- 切片的大小默認等于
Block大小 - 切片時不考慮資料集整體,而是逐個針對每一個檔案單獨切片
比如輸入資料有兩個檔案:
file1.txt 320M
file2.txt 10M
經過FileInputFormat的切片機制運算后,形成的切片資訊如下:
file1.txt.split1 0~128
file1.txt.split2 128~256
file1.txt.split3 256~320
file2.txt.split1 0~19
原始碼中計算切片大小的公式:
Math.max(minSize,Math.max(maxSize,blockSize));
mapreduce.input.fileinputformat.split.minsize=1 默認值為1
mapreduce.input.fileinputformat.split.maxsize=Long.MAXValue 默認值Long.MAXValue
默認情況下,切片大小=blocksize
切片大小設定:
maxsize(切片最大值):引數如果調的比blockSize小,則會讓切片變小,而且就等于配置的這個引數值minsize(切片最小值):引數調的比blockSize大,則可以讓切片變得比blockSize還大
獲取切片資訊API:
//獲取切片的檔案名稱
String name = inputSplit.getPath().getName();
//根據檔案型別獲取切片資訊
FileSplit inputSplit = (FileSplit) context.getInputSplit();
五、TextInputFormat
在運行MapReuce程式時,輸入的檔案格式包括:基于行的日志檔案、二進制格式檔案、資料庫表等,針對不同的資料型別,MapReduce給用戶提供了很多的介面
FileInputFormat常見的實作類包括:TextInputFormat、KeyValueTextInputFormat、NLineInputFormat、CombineTextInputFormat和自定義InputFormat等
TextInputFormat 是默認的 FileInputFormat 實作類,按行讀取每條記錄,鍵是存盤該行在整個檔案中的起始位元組偏移量, LongWritable 型別,值是這行的內容,不包括任何行終止 符(換行符和回車符),Text 型別,
以下是一個示例,比如,一個分片包含了如下 4 條文本記錄,
Rich learning form
Intelligent learning engine
Learning more convenient
From the real demand for more close to the enterprise
每條記錄表示為以下鍵/值對:
(0,Rich learning form)
(20,Intelligent learning engine)
(49,Learning more convenient)
(74,From the real demand for more close to the enterprise)
六、CombineTextInputFormat切片機制




轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/277814.html
標籤:其他
下一篇:MySQL表的增刪改查3
