java - tutorial - mapreduce job cache files




Hadoop gzip圧縮ファイル (3)

GZIPコーデックで圧縮されたファイルは、このコーデックの動作方法のために分割できません。 Hadoopの1つのSPLITは、1つのマッパーでしか処理できません。 1つのGZIPファイルは1つのMapperでしか処理できません。

その制限を回避するには、少なくとも3つの方法があります。

  1. 前処理ステップとして:ファイルを解凍し、分割可能コーデック(LZO)を使用して再圧縮します。
  2. 前処理ステップとして:ファイルを解凍し、小さなセットに分割して再圧縮します。 ( これを参照してください
  3. これを回避するためのHadoop(私が書いた)にこのパッチを使用してください: Splittable Gzip

HTH

私はhadoopを初めて使い、ウィキペディアダンプを処理しようとしています。 これは6.7 GBのgzip圧縮xmlファイルです。 私はhadoopがgzipで圧縮されたファイルをサポートしていると読んでいますが、1つのマッパーだけが解凍できるので、単一のジョブでマッパーでしか処理できません。 これは処理に制限を設けるようです。 代わりがありますか? xmlファイルを解凍して複数のチャンクに分割し、それらをgzipで再圧縮することができます。

http://researchcomputing.blogspot.com/2008/04/hadoop-and-compressed-files.htmlからhadoop gzipについて読みましたhttp://researchcomputing.blogspot.com/2008/04/hadoop-and-compressed-files.html

ご協力いただきありがとうございます。


これはHDFSでの最大のミス理解の1つです。

はいgzipファイルとして圧縮されたファイルはMapReduceでは分割できませんが、それはGZipがコーデックとしてHDFSに値を持たず、分割可能にできないことを意味しません。

コーデックとしてのGZipは、RCFiles、シーケンスファイル、Arvoファイル、およびその他の多くのファイル形式で使用できます。 Gzipコーデックをこれらの分割可能なフォーマットで使用すると、Gzipとスプリット可能なコンポーネントの両方から優れた圧縮率と速度が得られます。


コーデックの制限のため、GZIPファイルを分割することはできません。 6.7GBというのはそれほど大きくないので、1台のマシンで解凍するだけです(1時間未満で済みます)、XMLをHDFSにコピーします。 その後、HadoopでWikipedia XMLを処理することができます。

Cloud9は、HadoopでXMLを読み取るために使用できるWikipediaPageInputFormatクラスが含まれています。





mapreduce