JobTrackerがマップタスクをTaskTrackerに割り当てるとき、NameNodeと通信する必要がありますか?または、InputSplit自体から情報を取得できますか?コードを見ると、InputSplitsにBlockLocationsがパックされていることがわかります。JobTrackerはこの情報を使用しますか、それともNamenodeと連携する必要がありますか?
2 に答える
0
JobTrackerはNameNodeに接続して、ブロックの場所を取得します。ジョブが処理しているブロックの数が非常に多い場合、このプロセスには特に時間がかかることがあります。
于 2012-12-07T04:02:06.380 に答える
0
クライアントは分割情報を計算し、分割情報とともにHDFSに書き込みます。
Hadoop 1.xを調べることができますJobSplit.SplitMetaInfo
。ここには、場所をシリアル化するシリアル化が実装されています。
ジョブトラッカーは、これらのシリアル化を取得してスケジュールします。スロットが使用可能な場合、場所は実行を高速化するためのヒントにすぎません。
于 2012-12-07T08:28:51.400 に答える