我正在使用基于Hortonworks的Microsoft HDInsight中的Map-Only MR作业。我的输入数据大约为1GB,块大小为128MB。
当我在没有设置分割大小的情况下运行我的作业时,我的输入数据被分成2个分割,并且地图任务的数量也是2。这需要很长时间,所以我想通过增加地图任务的数量来加快这个过程。
我通过设置mapreduce.input.fileinputformat.split.minsize
和mapreduce.input.fileinputformat.split.minsize
的值来设置拆分次数。
首先,我将分组数设置为8,这项工作所需的时间为35分钟。然后我把它设置为16和64,消耗的时间分别为21分钟和16分钟。
但是当我将分割设置为128时,这项工作所消耗的时间从16分钟增加到18分钟。
我的问题:
1:为什么时间会随着更多的地图任务而增加?我知道实例化一个地图类需要一些时间,但还有其他原因吗?
2:有没有办法确定最合适的分割大小?
谢谢 PS:我的输入文件是没有“.txt”的文本文件。
答案 0 :(得分:0)
在您的情况下,在JVM中实例化Mapper类可能比Mapper中的逻辑花费更多时间。还有一个原因可能是群集中的资源不可用于启动Mapper。其中一些将等到你当前的任务/ Mappers完成,然后它们将被实例化。