处理这么多小文件时,减少和调整随机播放时间的更好方法是什么?
由于其他一些限制和要求,我无法减少小文件的数量,并且我知道处理小文件的问题。但是我想知道这里还有哪些其他选项可以用来减少给定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/