私はHadoopを初めて使用し、ウィキペディアのダンプを処理しようとしています。これは6.7GBのgzip圧縮xmlファイルです。 hadoopはgzip圧縮ファイルをサポートしているが、解凍できるのは1つのマッパーのみであるため、1つのジョブでマッパーのみが処理できることを読みました。これにより、処理が制限されるようです。代替手段はありますか? xmlファイルを解凍して複数のチャンクに分割し、gzipで再圧縮するようなものです。
私はhadoopgzipについて http://researchcomputing.blogspot.com/2008/04/hadoop-and-compressed-files.html から読みました
ご協力いただきありがとうございます。
GZIPコーデックで圧縮されたファイルは、このコーデックの動作方法のために分割できません。 Hadoopの単一のSPLITは、単一のマッパーでのみ処理できます。したがって、単一のGZIPファイルは単一のマッパーでのみ処理できます。
この制限を回避するには、少なくとも3つの方法があります。
HTH
これは、HDFSにおける最大の誤解の1つです。
はい、gzipファイルとして圧縮されたファイルはMapReduceで分割できませんが、コーデックとしてのGZipがHDFSで値を持たず、分割可能にできないことを意味するわけではありません。
コーデックとしてのGZipは、RCFiles、Sequence Files、Arvo Files、およびその他の多くのファイル形式で使用できます。これらの分割可能な形式でGzipコーデックを使用すると、Gzipと分割可能なコンポーネントから優れた圧縮とかなり優れた速度が得られます。
コーデックの制限により、GZIPファイルをパーティション分割することはできません。 6.7GBは実際にはそれほど大きくないので、1台のマシンで解凍して(1時間以内で完了します)、XMLをHDFSにコピーします。次に、HadoopでウィキペディアXMLを処理できます。
Cloud9 には WikipediaPageInputFormat クラスが含まれています。このクラスを使用してHadoopでXMLを読み取ることができます。
解凍して、代わりにSplittable LZ圧縮を使用してみませんか?m
http://blog.cloudera.com/blog/2009/11/hadoop-at-Twitter-part-1-splittable-lzo-compression/