簡単な質問:
Pig LOAD ステートメントのメモリ制限はどのくらいですか?
より詳細な質問:
利用可能な物理リソース (ディスク、RAM、CPU) を、Pig LOAD ステートメントが処理できるディレクトリの最大サイズに関連付ける方法はありますか?
シナリオ:
研究プロジェクトは、以下にコピーされた 1 つの Pig LOAD ステートメントで、合計サイズが 891 GB の 12,000 以上のファイルを含むディレクトリをロードしようとする Pig スクリプトを使用しています。ファイルは、生のテキストで Web ページのコレクションを記述する gzip された WAT ファイルです。ジョブを実行すると、毎回クラスターがクラッシュ/ハング/フリーズするように見えます。私たちは皆 Hadoop に慣れていないので、最終的にコードを確認できるようになるまで、疑いはリソースと構成にありました。
-- load data from I_WATS_DIR
Orig = LOAD '$I_WATS_DIR' USING org.archive.hadoop.ArchiveJSONViewLoader('Envelope.ARC-Header- Metadata.Target-URI','var2...','var3...','var4...{1,2,3,4} as
(src:chararray,timestamp:chararray,html_base:chararray,relative:chararray,path:chararray,text:chararray,alt:chararray);
詳細:
集まる
1 フロント エンド ノード、16 コア、64 GB RAM、128 GB スワップ、NameNode
3 つの計算ノード、16 コア、128GB RAM、128GB スワップ、DataNode
テスト ジョブ 1
上記と同じスクリプトで、ディレクトリに 1 つのファイルをロードする
常駐メモリは 1.2GB と報告されました
入力: 138MB
出力: 207MB
入力レコードを減らす: 1,630,477
持続時間: 4分11秒
テスト ジョブ 2
同じスクリプト、17 ファイル
常駐メモリ:16.4GB
入力: 3.5GB
出力:1.3GB
入力レコードを減らす: 10,648,807
時間: 6分48秒
テスト ジョブ 3
同じスクリプト、51 ファイル
常駐メモリ:41.4GB
入力:10.9GB
出力: 記録されない
入力レコードを減らす: 31,968,331
所要時間: 6分18秒
最終的な考え:
これは他に何も実行されていない 4 ノード クラスターであり、完全に Cloudera Hadoop CDH4 専用で、この 1 つのジョブのみを実行しています。これが私の元の質問に答えるために人々が必要とするすべての情報であることを願っています! 一度に 1 つのファイルをロードするある種のファイル解析ループが解決策であると強く思いますが、Hadoop よりも Pig についての知識が少ないです。私にはプログラミング/開発のバックグラウンドがありますが、この場合、私はシステム管理者であり、研究者やプログラマーではありません。