Hadoop gzip压缩文件

时间:2011-04-12 04:00:17

标签: java algorithm data-structures hadoop mapreduce

我是hadoop的新手并试图处理维基百科转储。它是一个6.7 GB的gzip压缩xml文件。我读到hadoop支持gzip压缩文件,但只能由mapper在单个作业上处理,因为只有一个映射器可以解压缩它。这似乎限制了处理。还有其他选择吗?比如将xml文件解压缩并拆分成多个块并用gzip重新压缩它们。

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

中读到了关于hadoop gzip的内容

感谢您的帮助。

4 个答案:

答案 0 :(得分:20)

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

至少有三种方法可以解决这个限制:

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

答案 1 :(得分:8)

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

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

作为编解码器的GZip可以与RCFiles,序列文件,Arvo文件以及更多文件格式一起使用。当Gzip编解码器在这些可拆分格式中使用时,您可以获得Gzip加上可拆分组件的出色压缩和非常好的速度。

答案 2 :(得分:3)

由于编解码器的限制,无法以任何方式对GZIP文件进行分区。 6.7GB真的不是那么大,所以只需在一台机器上解压缩(它需要不到一个小时)并将XML复制到HDFS。然后,您可以在Hadoop中处理Wikipedia XML。

Cloud9包含一个WikipediaPageInputFormat类,您可以使用它来读取Hadoop中的XML。

答案 3 :(得分:0)

为什么不用它来解压缩并使用Splittable LZ压缩?m

http://blog.cloudera.com/blog/2009/11/hadoop-at-twitter-part-1-splittable-lzo-compression/