我开发了Mr,​​可以正确处理运行多个 map task 的文本文件,但是我需要在文件上运行作业。我的选择是bzip2存档。有了这样的文件,我的工作只能完成一个 map task 。

有谁知道我该如何增加 map task ?

Hadoop版本:Hadoop 0.20.2-cdh3u5

我试图用不同的参数编辑mapred-site.xml,但是没有用。

最佳答案

您的文件有多大?您的块大小是多少? Bzip2是可拆分的,因此当文件大小超过块大小并且Bzip2编解码器配置正确时,文件将自动拆分,因此 map task 将自动增加。
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

关于hadoop - 如何使用bzip2输入格式增加MapReduce的 map task ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14578363/

10-10 11:28