Hadoop 中的小文件与随机播放时间 - 调优
Posted
技术标签:
【中文标题】Hadoop 中的小文件与随机播放时间 - 调优【英文标题】:Small files in Hadoop vs Shuffle Time - Tunning 【发布时间】:2015-04-17 01:03:43 【问题描述】:在处理这么多小文件时,减少和调整随机播放时间的更好方法是什么?
由于其他一些限制+要求,我无法减少小文件的数量,我知道处理小文件的问题。但我想知道这里还有哪些其他选项可以减少给定 MapReduce 作业的随机播放时间?
对于单个 MapReduce 作业,我得到如下内容:
Average Map Time 33sec
Average Reduce Time 10sec
Average Shuffle Time 1hrs, 10mins, 18sec
Average Merge Time 2sec
我想知道是否有其他方法可以尝试减少此随机播放时间?
对于上述数据,我的映射器编号为:14778
【问题讨论】:
【参考方案1】:如果您有多个小文件,您可以使用所有这些小文件,并通过在驱动程序中使用 MultipleInputs 格式将它们提交给一个映射器。如下所示:
MultipleInputs.addInputPath(job,new Path(args[0]),TextInputFormat.class,CounterMapper.class);
MultipleInputs.addInputPath(job,new Path(args[1]),TextInputFormat.class,CountertwoMapper.class);
您还可以实现自定义比较器以减少 shuffle 的负载。
【讨论】:
我遇到的问题是,每个文件都是特定格式的二进制文件,所以我需要把每个文件分开处理。让我再解释一下: 输入:/staging/2015/04/17/a.abc /staging/2015/04/17/b.abc /staging/2015/04/17/c.abc 输出:/parsed/ 2015/04/17/a.parsed /parsed/2015/04/17/b.parsed /parsed/2015/04/17/b.parsed 所以每个扩展名为 .abc 的文件都需要被解析并输出到另一个位置可读格式 (tsv)。关于自定义比较器,您能否解释一下它如何有助于减少随机播放时间?以上是关于Hadoop 中的小文件与随机播放时间 - 调优的主要内容,如果未能解决你的问题,请参考以下文章