Hadoop的MapReduce计算的第一个阶段是InputFormat处理的,先将文件进行切分,然后将每个切分传递给每个Map任务来执行,本文阐述切分个数,也就是Map任务数目的计算方法;
Hadoop首先会计算每个切分的大小,然后使用”文件总大小/每个切分的大小“来决定划分的总数,如果不足一个切分的大小,则当做1个;
在org.apache.hadoop.mapred.FileInputFormat中给出了计算每个划分大小的方法:
protected long computeSplitSize(long goalSize, long minSize,
long blockSize) {
return Math.max(minSize, Math.min(goalSize, blockSize));
}
其中几个变量的解释如下:
由此可以推断出选定策略:
针对这几个值,用户可以根据输入数据的情况,合理的设置mapred.min.split.size和map.tasks.size来实现优化,InputSplit和blockSize相同是非常好的一种方法,因为不需要拆分block了.
文章地址:http://www.crazyant.net/1423.html
您可能也喜欢: | ||||
![]() 文件下载代码-来自PBDigg |
![]() Python批量重命名文件的方法 |
![]() php判断远程文件或网站是否能打开 |
![]() php函数-计算两个日期相差多少天 |
![]() PHP对文件的操作总结 |
无觅 |