大数据方法论之优化Map-Reduce过程
大家在写Map-Reduce程序的时候,有时候会发现任务执行时间太长了,可通过下面的方法进行优化。
在Map-Reduce过程中有Counter
首先可以优化Map任务的个数:
Map任务的个数是由Input Splits的个数确定的,每个Input Split对应于一个HDFS文件块。
可通过mapred.min.split.size修改map的个数。
如果一个HDFS文件块里面包含的任务数目太多,例如每一个url是一个视频的链接,但是url占不了几个字符,所以很可能一个HDFS块里面包含了所有的视频的url,则一个map任务处理所有的视频,显然并行不起来。这可以使用NLineInputFormat,几行形成一个map任务,而非整个HDFS文件块作为一个map任务。
如果每个源文件太小,例如每个文件1k,则每个文件一个map任务,这样并行的任务太多了,因而可以使用CombineFileInputFormat,减少并行的数目。
更多的map任务代表着更好的并行度,会使得任务执行速度加快。而且如果任务失败的时候,可以重新执
共有 0 条评论