我是hadoop的新手,正在尝试处理wikipedia dump。它是一个6.7 GB的gzip压缩xml文件。我读到hadoop支持gzip压缩文件,但只能由mapper在单个作业中处理,因为只有一个mapper可以解压缩它。这似乎限制了处理。还有别的选择吗?例如解压缩XML文件并将其分割成多个块,然后用GZIP重新压缩它们。
我从http://researchcomputing.blogspot.com/2008/04/hadoop-and-compressed-files.html上读到了hadoop gzip
谢谢你的帮忙。
5条答案
按热度按时间dy2hfwbg1#
由于GZIP编解码器的工作方式,使用该编解码器压缩的文件无法拆分。Hadoop中的单个SPLIT只能由单个Map器处理;因此单个GZIP文件只能由单个Map器处理。
至少有三种方法可以绕过这个限制:
1.作为预处理步骤:解压缩文件并使用可拆分编解码器(LZO)重新压缩
1.作为预处理步骤:解压缩文件,拆分成更小的集合并重新压缩。(See this)
1.使用Hadoop的这个补丁(我写的),它允许一种方法来解决这个问题:Splittable Gzip
HTH
wfsdck302#
这是HDFS中最大的误解之一。
是的,压缩为gzip文件的文件不能被MapReduce分割,但这并不意味着GZip作为编解码器在HDFS中没有价值,也不能被分割。
GZip作为编解码器可以与RCFiles,Sequence Files,Arvo Files和更多文件格式一起使用。当在这些可分割格式中使用Gzip编解码器时,您可以从Gzip加上可分割组件中获得很好的压缩和相当好的速度。
lkaoscv73#
由于编解码器的限制,GZIP文件不能以任何方式分区。6.7GB真的不是很大,所以只需要在一台机器上解压缩它(这将花费不到一个小时)并将XML复制到HDFS。然后你可以在Hadoop中处理Wikipedia XML。
Cloud9包含一个WikipediaPageInputFormat类,可用于在Hadoop中读取XML。
ct3nt3jp4#
为什么不把它解压缩并使用Splittable LZ压缩呢?M
http://blog.cloudera.com/blog/2009/11/hadoop-at-twitter-part-1-splittable-lzo-compression/
z9smfwbn5#
虽然gzip文件是不可分割的,但.bz2文件是可分割的,Hadoop直接支持Best splittable compression for hadoop