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 中的小文件与随机播放时间 - 调优的主要内容,如果未能解决你的问题,请参考以下文章

一技MySQL调优小淫技 & 分布式事务常用姿势

Java 性能调优小技巧

十个Python性能调优小技巧,你知道几个?

Spark流式传输作业不会删除随机播放文件

Hadoop之小文件处理与调优经验

创建文件与删除文件的小例子