我如何以及在何处可以编辑CDH4.7中的输入拆分大小,默认情况下为64 MB,但我想将其称为1MB,因为我的MR作业运行缓慢并且我想提高MR作业的速度。我想需要编辑cor-site属性IO.file.buffer.size,但CDH4.7不允许我进行编辑,因为它是只读的。
只是在回答我的问题下面重复问题
我如何以及在何处可以编辑CDH4.7中的输入拆分大小,默认情况下为64 MB,但我想将其称为1MB,因为我的MR作业运行缓慢并且我想提高MR作业的速度。我想需要编辑cor-site属性IO.file.buffer.size,但CDH4.7不允许我进行编辑,因为它是只读的。
最佳答案
可以针对每个作业单独设置参数“mapred.max.split.size”。
您无需更改“dfs.block.size”,因为Hadoop处理少量大文件比处理大量小文件更好。这样做的一个原因是FileInputFormat以这样的方式生成拆分:每个拆分都是单个文件的全部或一部分。如果文件非常小(“小”意味着比HDFS块小得多)并且有很多,那么每个映射任务将处理很少的输入,并且会有很多(每个文件一个),每一项都增加了额外的簿记费用。比较一个分为16个64mb块的1gb文件和10.000左右的100kb文件。 10.000个文件每个都使用一个映射,其工作时间可能比具有单个输入文件和16个映射任务的等效文件慢数十倍或数百倍。
您可以在命令行中使用-D mapred.max.split.size=..
在命令中直接更改它,而不必永久更改任何文件。
关于hadoop - 我该如何在CDH4.7中编辑InputSplit大小?默认情况下,它是64 MB,但是我想提到它为1 MB,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27623540/