1

500 人のマッパーの間で、完了時間の差がほぼ 3 倍あることに気付きました。

ログを (JobTracker Web インターフェイス経由で) 確認したところ、違いは主に 1 回目のスピル タイミング (「スピル 0 の終了」) にあることがわかりました。

これは、マッパーごとの入力ファイル サイズの違いが実際には要因ではないことを示しているようです。おそらく、異なるノード間のパフォーマンスの違いですか? 洞察/コメントは大歓迎です!

4

1 に答える 1

1

それは本当にあなたのマッパーが違いを調査するために何をしているかに依存します。マップジョブの機能と、どのI/Oおよび処理が関係しているかに基づいて調査する必要があります。

マッパーで異なるパフォーマンスの違いを引き起こす可能性のある3つの問題があります。

  1. ローカライズされているがノードに依存するファイルI/O。ノードタイプが異なれば、パフォーマンス特性も異なります。
  2. ネットワークI/O:マッパーが他の場所からデータをフェッチしている場合(例:データベースからデータをフェッチするSqoopジョブ)、これはより重大な問題であり、マッパーが異なる時間に異なるネットワーク特性で実行されるため、通常は異なります。
  3. 集中的なジョブの計算(マッパーのパフォーマンス):通常、すべてのマッパーに同様に影響を与えるはずですが、それでもノードに依存します。

また、コマンドラインからジョブを実行している場合は、次のような出力が表示されます(ネットワークI / Oの場合)。

mapred.JobClient:     SLOTS_MILLIS_MAPS=2958530
mapred.JobClient:     Total time spent by all reduces waiting after reserving slots (ms)=0
mapred.JobClient:     Total time spent by all maps waiting after reserving slots (ms)=0
mapred.JobClient:     Launched map tasks=1
mapred.JobClient:     SLOTS_MILLIS_REDUCES=0
mapred.JobClient:   FileSystemCounters
mapred.JobClient:     HDFS_BYTES_READ=87
mapred.JobClient:     FILE_BYTES_WRITTEN=58294
mapred.JobClient:     HDFS_BYTES_WRITTEN=248301
mapred.JobClient:   Map-Reduce Framework
mapred.JobClient:     Map input records=1679
mapred.JobClient:     Physical memory (bytes) snapshot=267583488
mapred.JobClient:     Spilled Records=0
mapred.JobClient:     CPU time spent (ms)=2580
mapred.JobClient:     Total committed heap usage (bytes)=158334976
mapred.JobClient:     Virtual memory (bytes) snapshot=927236096
mapred.JobClient:     Map output records=1679
mapred.JobClient:     SPLIT_RAW_BYTES=87
mapreduce.ImportJobBase: Transferred 242.4814 KB in 2,964.2976 seconds (83.7639 bytes/sec)
mapreduce.ImportJobBase: Retrieved 1679 records.

そのデータから、処理されてファイルに書き込まれたデータと転送時間がわかります。

[編集:]

Hadoopクラスターの特性を確認するのに役立つ利用可能なベンチマークがあります。

  1. TestDFSIO
  2. MRBench
于 2012-06-20T18:57:25.227 に答える