為了介紹方便,我們先來看幾個名詞:
block _ size:HDFS的文件塊大小,默認為64M,可以通過參數dfs.block.size設置
Total_size:輸入文件的總大小。
輸入文件數量:輸入文件的數量。
(1)默認地圖編號
如果沒有設置,默認的貼圖數量與blcok_size相關。
default_num =總大小/塊大小;
(2)預期規模
您可以使用參數
Mapred.map.tasks來設置程序員期望的地圖數量,但是這個數字只有在大於default_num時才有效。
goal _ num = mapred . map . tasks;
(3)設置要處理的文件大小。
可以通過mapred.min.split.size設置每個任務的文件大小,但是這個大小只有大於才能設置。
Block_size將生效。
split_size = max(
mapred.min.split.size,
block _ size);split_num =總大小/拆分大小;
(4)地圖數量的計算
compute_map_num = min(split_num,max(默認_num,目標_num))
除了這些配置,mapreduce還必須遵循壹些原則。mapreduce的每個map處理的數據不能跨文件,也就是max _ map _ num
最終地圖數量=最小值(計算地圖數量,輸入文件數量)
經過以上分析,在設置地圖數量時,可以簡單概括如下:
(1)如果要增加地圖的數量,請將mapred.map.tasks設置為較大的值。
(2)如果要減少貼圖數量,請將mapred.min.split.size設置為壹個較大的值。