如何使用bzip2 inputformat增加MapReduce的地图任务

时间:2013-01-29 08:16:46

标签: hadoop mapreduce bzip2

我开发了先生,正确地使用运行多个地图任务的文本文件,但我需要在档案上运行作业。我的选择是bzip2存档。有了这些档案,我的工作只能处理一个地图任务。

有谁知道,我如何增加地图任务?

Hadoop版本:Hadoop 0.20.2-cdh3u5

我尝试使用不同的参数编辑mapred-site.xml,但它不起作用。

2 个答案:

答案 0 :(得分:0)

你的档案有多大?你的块大小是多少? Bzip2是可拆分的,因此当您的文件大小超过块大小并且您的Bzip2编解码器配置正确时,您的文件将自动拆分,因此您的地图任务将自动增加。

mapred-site.xml中的属性用于指定作业(中间)输出。当您使用压缩文件作为输入时,您应该使用core-site.xmlio.compression.codecs中设置此内容。

另外,如果我是你,我会看看LZO。默认情况下,LZO存档不可拆分,但有一种方法可以对它们进行索引,使它们可以拆分。与Bzip2相比,LZO的压缩率更低,但速度更快。我使用Bzip2压缩了32GB的文本文件。 Bzip2将文件压缩为1.6GB,但耗时6.5小时。当我使用LZO做同样的事情时它给了我一个5GB的文件,但它在30分钟内完成了。减压的差异甚至更大。 Bzip2也使用了更多的内存。

关于如何索引LZO文件,请看这里:https://github.com/twitter/hadoop-lzo

答案 1 :(得分:0)

根据this thread,还需要MAPREDUCE-830,以便为MapReduce作业分割Bzip2文件(HADOOP-4012)。 CDH3u5上没有MAPREDUCE-830