0

約 1.22 GB のファイルで Pig Script を実行しています。デフォルトのチャンク サイズは 64MB です。4 つのデータ ノードがあります。出力としての Pig スクリプトは、19 個のファイルを生成します。
Pig スクリプトを実行してジョブ トラッカーを表示すると、6 つのジョブが表示されます。

       Jobid           Priority   User              Name          Map % Complete    Map Total   Maps Completed  Reduce % Complete   Reduce Total    Reduces Completed   Job Scheduling Information    Diagnostic Info

job_201207121202_0001   NORMAL    user     PigLatin:Analysis.pig    100.00%             20            20              100.00%              1               1                         NA                   NA
job_201207121202_0002   NORMAL    user     PigLatin:Analysis.pig    100.00%              5            5               100.00%              1               1                         NA                   NA
job_201207121202_0003   NORMAL    user     PigLatin:Analysis.pig    100.00%              2            2               100.00%              1               1                         NA                   NA
job_201207121202_0004   NORMAL    user     PigLatin:Analysis.pig    100.00%              2            2               100.00%              1               1                         NA                   NA
job_201207121202_0005   NORMAL    user     PigLatin:Analysis.pig    100.00%              5            5               100.00%              1               1                         NA                   NA
job_201207121202_0006   NORMAL    user     PigLatin:Analysis.pig    100.00%             5             5               100.00%              1               1                         NA                   NA    

私の理解では、入力ファイルのサイズは 1.22 GB、チャンク サイズは 64 MB であるため、ファイルに対して合計 20 個のブロックが作成されます。レプリケーション ファクターは 3 です。分割ごとに 1 つのマップ ジョブがあるため、20 個のマップ ジョブがあり、job_201207121202_0001 ジョブは上記のリストでそれを示しており、完璧です。しかし、他の 5 つのジョブと完全に他の 19 のマップ タスクが表示されるのはなぜですか?
誰でもこれを理解するのを手伝ってくれませんか。1.22GB/64MB ~ 20 だったので、20 個のマップと 1 個のリデュース ジョブがあるだけだと思っていました。

私は Pig/Hadoop の初心者です。助けていただければ幸いです。

4

3 に答える 3

1

Pig は、スクリプトのセマンティクスに応じて、スクリプトを複数の map-reduce ジョブにコンパイルします。大雑把に言えば、ジョインは MR の仕事です。グループは MR ジョブです。注文は 2 つの MR ジョブ (1 つは分布をサンプリングするため) です。MR 境界を生成する演算子は他にもいくつかあります。

于 2012-07-24T03:52:38.757 に答える
0

誰もが自信を持って答えられるようにするには、豚のスクリプトを共有する必要がありますが、ほとんどの場合、スクリプトは非常に複雑で、すべてのステージを実行するには 6 つのマップ削減ジョブが必要です。

実行される 2 番目のジョブでは、実際に 20 個のマッパーが実行されていることがわかります (1.22GB / 64MB = 19.52、これには 20 個のマッパーが必要です)。

NORMAL ユーザー PigLatin:Analysis.pig 100.00% 20 20 100.00% 1 1 NA NA job_201207121202_0002

それ以外に、あなたが何をしていたかは誰にもわかりません - 同じスクリプトを異なる入力ファイルで何度も送信しましたか?

于 2012-07-12T21:47:10.317 に答える
0

Pig は、MR ジョブを連鎖させるために構築されたシン レイヤーです。

MRジョブの場合は「チャンクサイズ」(技術的にはブロックサイズ)がマッパーの数を決定しますが、ピッグMRの場合はチャンクサイズではなく基本単位です。

データを使用して実行している ETL の種類に応じて、pig はそれを単一または連鎖した複数の MR ジョブのいずれかにマップします。

例: A= LOAD '/input' using PigStorage('|') as (a:chararray) A を '/output' に格納します。この pigscript は、レデューサーが使用されていないマップのみのジョブを生成するだけです。

groupby を使用し、続いて JOIN を使用したスクリプトは、2 つの MR ジョブを生成します。

PIG でサポートされているすべての操作は、MR にマップできます。

  1. 加入:1MR
  2. GroupBy : 1 MR
  3. Filter : Mapper または Reducer フェーズで実行できます
  4. ロード : マッパー
  5. Store : Mapper または Reducer
  6. Foreach : Mapper または Reducer
于 2015-04-27T19:41:23.453 に答える