我开发了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.xml
在io.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/