因为dfs.block.size是一个hdfs设置,所以如果在应用程序执行期间更改它,应该不会有什么区别,对吧?例如,如果作业文件的块大小为128,则我调用
hadoop jar /path/to/.jar xxx -D dfs.block.size=256
这会有所不同吗?还是我需要在将文件保存到hdfs之前更改块大小?dfs.block.size和任务的拆分大小是否直接相关?如果我是正确的,他们不是,有没有办法指定一个分裂的大小?
2uluyalo1#
决定每个mr拆分大小的参数可以通过mapred.max.split.size和mapred.min.split.size“mapred.max.split.size”,可以通过conf对象为每个作业单独设置。不要更改“dfs.block.size”,它也会影响hdfs。它会更改执行的输出块大小。如果mapred.min.split.size小于块大小,mapred.max.split.size大于块大小,则向每个Map任务发送1个块。块数据将根据所使用的输入格式拆分为键值对。
1条答案
按热度按时间2uluyalo1#
决定每个mr拆分大小的参数可以通过
mapred.max.split.size和mapred.min.split.size
“mapred.max.split.size”,可以通过conf对象为每个作业单独设置。不要更改“dfs.block.size”,它也会影响hdfs。它会更改执行的输出块大小。
如果mapred.min.split.size小于块大小,mapred.max.split.size大于块大小,则向每个Map任务发送1个块。块数据将根据所使用的输入格式拆分为键值对。