500 人のマッパーの間で、完了時間の差がほぼ 3 倍あることに気付きました。
ログを (JobTracker Web インターフェイス経由で) 確認したところ、違いは主に 1 回目のスピル タイミング (「スピル 0 の終了」) にあることがわかりました。
これは、マッパーごとの入力ファイル サイズの違いが実際には要因ではないことを示しているようです。おそらく、異なるノード間のパフォーマンスの違いですか? 洞察/コメントは大歓迎です!
それは本当にあなたのマッパーが違いを調査するために何をしているかに依存します。マップジョブの機能と、どのI/Oおよび処理が関係しているかに基づいて調査する必要があります。
マッパーで異なるパフォーマンスの違いを引き起こす可能性のある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クラスターの特性を確認するのに役立つ利用可能なベンチマークがあります。