处理这么多小文件时,减少和调整随机播放时间的更好方法是什么?

由于其他一些限制和要求,我无法减少小文件的数量,并且我知道处理小文件的问题。但是我想知道这里还有哪些其他选项可以用来减少给定MapReduce作业的洗牌时间?

对于一个MapReduce作业,我得到如下信息:

Average Map Time    33sec
Average Reduce Time 10sec
Average Shuffle Time    1hrs, 10mins, 18sec
Average Merge Time  2sec

我想知道还有其他选择可以减少这种洗牌时间吗?

对于以上数据,我的映射器数是:14778

最佳答案

如果您有多个小文件,则可以使用所有这些小文件,并通过在驱动程序中使用MultipleInputs格式将它们提交给一个映射器。如下所示:

MultipleInputs.addInputPath(job,new Path(args[0]),TextInputFormat.class,CounterMapper.class);
MultipleInputs.addInputPath(job,new Path(args[1]),TextInputFormat.class,CountertwoMapper.class);

您也可以实现自定义比较器以减少随机播放的负载。

关于hadoop - Hadoop中的小文件与随机播放时间-运行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29688495/

10-12 23:04