私はPIGとHDFSを初めて使用します。これが私がやろうとしていることです。
フラットテキストのLZO圧縮された不適切な形式のサーバーログファイルがたくさんあります。それぞれ約2GBが、毎日約400台のサーバーから生成されます。
マップリデュースを利用して、Javaフォーマッターを使用してHDFSでデータをフォーマットおよびクリーンアップしてから、出力をHiveにロードしようとしています。
私の問題は、私のPIGスクリプトが約15分かかるマッパーを1つだけ生成することです。ファイルを順番に読み取ります。これは、ハイブに毎日ロードする必要のあるデータ量には実用的ではありません。
これが私の豚のスクリプトです。
SET default_parallel 100;
SET output.compression.enabled true;
SET output.compression.codec com.hadoop.compression.lzo.LzopCodec
SET mapred.min.split.size 256000;
SET mapred.max.split.size 256000;
SET pig.noSplitCombination true;
SET mapred.max.jobs.per.node 1;
register file:/apps/pig/pacudf.jar
raw1 = LOAD '/data/serverx/20120710/serverx_20120710.lzo' USING PigStorage() as (field1);
pac = foreach raw1 generate pacudf.filegenerator(field1);
store pac into '/data/bazooka/';
mapred.min.split.size設定が機能していないようです。クラスターの単一サーバー上の2GBファイル全体で機能するマッパーが1つだけ開始されていることがわかります。100ノードのクラスターがあるので、より多くのマッパーを生成できれば、より多くのサーバーを並行して使用できるかどうか疑問に思いました。
前もって感謝します