2012-12-26 41 views
2

我聽說我們可以使用多個映射器在Hadoop中並行讀取一個bzip2文件的不同部分,以提高性能。但搜索後我找不到相關樣本。感謝任何人都可以將我指向相關的代碼片段。謝謝。在Hadoop中讀取BZip2文件

順便說一句:是gzip具有相同的功能(多個mapper並行處理一個gzip文件的不同部分)。

回答

3

如果你看看:http://comments.gmane.org/gmane.comp.jakarta.lucene.hadoop.user/30662, 你會發現bzip2格式確實是可拆分的,並且多個映射器可以在一個文件上工作。該修補程序提交於:https://issues.apache.org/jira/browse/HADOOP-4012。但是,它似乎只在HADOOP 0.21.0以上纔可用。

從個人的經驗來說,爲了使用這種bzip2技術,沒有什麼不同,你需要做的。 hadoop應根據您的最小分割大小自動提取它。

bzip2按塊壓縮數據,因此可以在塊中解壓縮並將每個塊發送到單獨的映射器。但是,gzip沒有這種技術,因此不能發送給不同的映射器。

+0

謝謝Varun,「但是,gzip沒有這樣的技術,因此不能發送給不同的映射器。」 - 有沒有Hadoop文檔聲明? –

+1

正如我所說的,除非您已經連續解壓同一個文件並構建入口點地圖,否則不可能並行解壓gzip,否則gzip文件專門爲並行解壓縮準備,這需要用於定製軟件目的。 –

+0

@Varun Shingal是否需要將bzip2添加到hadoop才能使用它,或者默認情況下它是否與hadoop一起發貨?感謝名單! – theexplorer

2

你可以看一個pbzip2作爲並行bz2壓縮和解壓縮的例子。

還有一個平行gzip,pigz。它並行壓縮,但不是並行解壓縮。放氣格式不適合並行解壓縮。但是,您可以a)準備一個重置歷史記錄的特殊gzip流,或者b)您可以在第一遍中將索引構建到gzip文件中。無論哪種方式,您都可以並行讀取不同的部分,或者擁有更高效的隨機訪問。

+0

感謝Mark提供的詳細信息。其實我問的是如何在Hadoop上使用bzip2和gzip格式。例如,如何使用多個映射器在多個映射器中並行讀取一個bzip2文件。 –

+1

我想到了。您可以從C開始看它是如何完成的。 –

+0

我不確定Hadoop是否具有內置函數來支持多個映射器並行讀取一個bzip2或gzip文件? –

相關問題