您的位置:首页 > 运维架构

Hadoop map任务个数分析

2015-07-16 19:38 302 查看
Hadoop map任务个数由输入文件在HDFS上的分块个数确定。

如果一个输入文件的大小大于BlockSize,那么这个输入文件被分成的若干个块,一个块即是一个split,map任务的个数等于块(split)的个数。

如果一个输入文件的大小小于BlockSize,则这个文件就是一个块(其占用的存储空间等于文件的实际大小),这个输入文件将被作为一个map任务的输入。

对于要处理大量小文件的MapReduce程序,由于一个小文件就需要启动一个Map task,太多的Map task会造成程序运行效率的低下,可以采用CombineFileInputFormat将多个input path合并成一个InputSplit送给mapper处理,从而减少Map任务的个数。

map个数的计算公式如下:

splitsize=max(minimumsize,min(maximumsize,blocksize))。

(如果没有设置minimumsize和maximumsize,splitsize的大小默认等于blocksize)

for(file :输入目录中的每个文件)

{

file_split = 1;

if(file.size>splitsize)

{

file_split=file_size/splitsize;

}

total_split+=file_split;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: