2016-10-30 13 views
0

Hadoopファイル分割と複数のマッパーに関する一般的な質問があります。私はHadoopが新しく、最適なパフォーマンスを得るためのセットアップ方法を手に入れようとしています。私のプロジェクトは現在GZIPされているWARCファイルを処理しています。HadoopプロセスのWARCファイル

現在のInputFileFormatを使用すると、ファイルは1つのマッパーに送信され、分割されません。私はこれが暗号化されたファイルの正しい動作であると理解しています。ジョブを分割してより多くのマッパーを使用できるようにジョブを実行する前に、ファイルを中間ステップとして復号化することによるパフォーマンス上の利点がありますか? それは可能でしょうか?より多くのマッパーを持つことは待ち時間のオーバーヘッドを増やすか、マッパーを1つ持つ方が良いでしょうか?ご協力いただきありがとうございます。

+0

基本的には、実行場所によって異なります。あなたが単一のマシンでそれを実行している場合、私は多くのパフォーマンスの改善があるとは思わない。しかし、あなたが分散環境でそれを実行しているなら、はいがあります。ファイルを分割して複数のマッパーに送信し、複数のマッパーは同時に他のマシンで同時に実行できます。あなたが答えを早く得るように。プログラムが1台のマシンで10時間稼動しているとします。あなたが10台のマシンを持っていて、10台のマシンにマップすると、1時間の実行で同時に結果が表示されます。 –

+0

ありがとうございます。 Amazon Elastic Map Reduceサービスを使用して処理しています。現在の設定を使用して、私はただ1つのマッパーを利用しています。つまり、他のノードが空いていることを意味します。理想的には、プロビジョニングしたすべてのノードを利用するために、ファイルを複数のマッパーに分割したいと考えています。私は、ファイルをローカルストレージに復号化してから、hadoopシステムを通して複数のマッパーに分割できるかどうかについて私の質問に答えてきたと思います。 – user1738628

答えて

0

WARCファイルはgzipで圧縮されていますが、すべてのレコードに独自のデフレートブロックがあるため、分割可能です(Best splittable compression for Hadoop input = bz2?参照)。しかし、記録オフセットは事前に知っていなければならない。

これは本当に必要ですか? Common Crawl WARCファイルのサイズはすべて約1 GBです。通常は最大でも処理されます。 15分。マッパーが実行するのに妥当な時間であるマップタスクを起動するオーバーヘッドを考えます。 Ev。では、マッパーもいくつかのWARCファイルを処理することができますが、すべてのノードがタスクを実行するように入力WARCファイルリストの分割が十分にあることが重要です。 Hadoop上で単一のWARCファイルを処理するには、多くの不必要なオーバーヘッドが発生します。

+0

セバスチャンが応答してくれてありがとう。私のマッパーは、GZIP形式のWARCファイルに含まれている各レコードで重度の解析作業を行っています。私の最初のテストでは、GZipファイルをマップして1つ減らすのに30分ほどかかりました。私はプロデューサ/コンシューマ・アプローチをローカルでテストし、ストリーム内のすべてのレコードを1つのスレッドが繰り返し処理し、コンシューマ・スレッドのキューに配置してコンテンツ・ボディを解析するようにしました。より多くのマッパーを並行して実行するために分割することができれば、各WARCアーカイブファイルの時間を数分に短縮できます。これは合理的な、または間違ったアプローチと思いますか? – user1738628

関連する問題