2016-11-18 8 views
0

私は複雑な豚のスクリプトを持っています。そのログから、データボリュームに応じて、2つまたは3つのMRプロセスに順番に跨っていることがわかります。 (& B、言うことができます)pigなぜ複数のmapreduceプロセスが実行されるのですか?

PS:Aが

を完了した後にBにのみトリガが、これは予想されていますか?私の豚のスクリプトのどの部分がプロセスを減らすかを調べる方法はありますか? 私の最終目標は、ブタスクリプトをより速く実行するように最適化することです。

私のタスクのより簡単なバージョンは次のとおりです。このPigスクリプトは、さまざまなアプリケーションからの大量のログファイルを処理します。各ログについて、それは正規表現を使用してデータを解析し、トラフィックカウント、毎時のさまざまな次元の平均レスポンス時間などのレポートメトリック

コードは実際には長く、複数のフィルタに対して1つの結合を行います。複数の次元を持つ。

答えて

0

EXPLAINview Pig's execution planをスクリプトに使用できます。

A = LOAD 'student' AS (name:chararray, age:int, gpa:float); 

B = GROUP A BY name; 

C = FOREACH B GENERATE COUNT(A.age); 

EXPLAIN C; 
----------------------------------------------- 
Logical Plan: 
----------------------------------------------- 
Store xxx-Fri Dec 05 19:42:29 UTC 2008-23 Schema: {long} Type: Unknown 
| 
|---ForEach xxx-Fri Dec 05 19:42:29 UTC 2008-15 Schema: {long} Type: bag 
etc ... 

----------------------------------------------- 
Physical Plan: 
----------------------------------------------- 
Store(fakefile:org.apache.pig.builtin.PigStorage) - xxx-Fri Dec 05 19:42:29 UTC 2008-40 
| 
|---New For Each(false)[bag] - xxx-Fri Dec 05 19:42:29 UTC 2008-39 
    | | 
    | POUserFunc(org.apache.pig.builtin.COUNT)[long] - xxx-Fri Dec 05 
etc ... 

-------------------------------------------------- 
| Map Reduce Plan        
------------------------------------------------- 
MapReduce node xxx-Fri Dec 05 19:42:29 UTC 2008-41 
Map Plan 
Local Rearrange[tuple]{chararray}(false) - xxx-Fri Dec 05 19:42:29 UTC 2008-34 
| | 
| Project[chararray][0] - xxx-Fri Dec 05 19:42:29 UTC 2008-35 
etc ... 

次に、あなたのパイプラインを微調整する機会のためのOptimization RulesPerformance Enhancersを確認:あなたはこのような出力が得られます。

0

巨大なデータセットを持っていると言われているように、糸コンテナがいっぱいになるため、ピグは内部的に減速機をマップし、タスクが1つのタスク休憩タスク実行されます。あなたはambariコンソール(GUI)を使用して、またはコマンド

hadoop job -list 

または yarn application -list(Hadoopのバージョン2.3以上)をしてみてくださいを使用して をお使いのMRジョブの統計情報を確認することができ、これは、各タスクが

を割り当てられたすべてのジョブリストとメモリサイズを表示します質問の2番目の部分のための

すなわち、豚のスクリプトの最適化のための

あなたは

SET default_parallel XXX 
ようにMapReduceの並列プロパティを設定することができます

ここで、xxxはレジューサーの番号です

関連する問題