Hadoop gzip 压缩文件

我是hadoop的新手,并试图处理维基百科转储。这是一个 6.7 GB gzip 压缩的 xml 文件。我读到hadoop支持gzip压缩文件,但只能由映射器在单个作业上进行处理,因为只有一个映射器可以解压缩它。这似乎限制了处理。有替代方案吗?例如解压缩并将xml文件拆分为多个块,然后使用gzip重新压缩它们。

我从 http://researchcomputing.blogspot.com/2008/04/hadoop-and-compressed-files.html

感谢您的帮助。


答案 1

由于此编解码器的工作方式,无法拆分使用 GZIP 编解码器压缩的文件。Hadoop中的单个SPLIT只能由单个映射器处理;因此,单个GZIP文件只能由单个映射器处理。

至少有三种方法可以绕过这一限制:

  1. 作为预处理步骤:解压缩文件并使用可拆分编解码器 (LZO) 重新压缩
  2. 作为预处理步骤:解压缩文件,拆分为较小的集,然后重新压缩。(请参阅此)
  3. 将此补丁用于Hadoop(我写的),它允许解决这个问题:Splittable Gzip

呵呵


答案 2

这是HDFS中最大的误解之一。

是压缩为gzip文件的文件不能被MapReduce拆分,但这并不意味着GZip作为编解码器在HDFS中没有值并且不能被拆分。

GZip作为编解码器可以与RCFiles,Sequence Files,Arvo Files和许多其他文件格式一起使用。当Gzip编解码器在这些可拆分格式中使用时,您可以从Gzip获得出色的压缩和相当好的速度以及可拆分组件。