2011-04-12 228 views
16

我是hadoop的新手,並試圖處理維基百科轉儲。這是一個6.7 GB的gzip壓縮xml文件。我讀過hadoop支持gzip壓縮文件,但只能在一個作業上由mapper處理,因爲只有一個mapper可以解壓縮它。這似乎對處理造成了限制。有其他選擇嗎?像解壓和XML文件分割成多個塊,並用gzip重新壓縮它們。Hadoop gzip壓縮文件

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

感謝您的幫助瞭解Hadoop的gzip的。

回答

3

由於編解碼器的限制,無法以任何方式對GZIP文件進行分區。 6.7GB實際上並不是那麼大,所以只需在一臺機器上解壓縮(這將需要不到一個小時),然後將XML複製到HDFS。然後您可以在Hadoop中處理Wikipedia XML。

Cloud9包含一個WikipediaPageInputFormat類,您可以使用該類讀取Hadoop中的XML。

20

由於此編解碼器的工作方式,使用GZIP編解碼器壓縮的文件無法拆分。 Hadoop中的單個SPLIT只能由一個映射器處理;所以一個GZIP文件只能由一個Mapper處理。

有ATLEAST三種方式圍繞着限制會:

  1. 作爲預處理步驟:解壓縮文件,並使用可分開編解碼器(LZO)
  2. 作爲預處理步驟重新壓縮:解壓縮文件,分成更小的集合並重新壓縮。 (See this
  3. 使用此補丁的Hadoop(這是我寫的),可用於解決的辦法:Splittable Gzip

HTH

+0

難道我們還需要維護每個拆分XML文件的完整性? – root1982 2012-05-29 14:43:57

+0

是的,這是使用的RecordReader實例的任務。 – 2012-05-29 15:29:46

+0

這是完整文件gzipping的情況,但Hadoop可以使用塊gzipping來解決此問題。看泰德的答案。 – jhclark 2016-08-22 16:41:26

8

這是在HDFS最大的小姐認識一個。

作爲gzip文件壓縮的​​文件是不能被MapReduce分割的,但這並不意味着GZip作爲編解碼器在HDFS中沒有價值,並且不能被分割。

作爲編解碼器的GZip可以與RCFiles,序列文件,Arvo文件以及更多文件格式一起使用。當Gzip編解碼器在這些可分割格式中使用時,您可以從Gzip和可分離組件中獲得很好的壓縮和相當好的速度。