「Hadoop - Definitive Guide」には、次のように書かれています -->
ジョブを実行しているクライアントは、getSplits() を呼び出してジョブの分割を計算し、それらを jobtracker に送信します。jobtracker は、それらのストレージの場所を使用して map タスクをスケジュールし、それらを tasktracker で処理します。
public abstract class InputSplit {
public abstract long getLength() throws IOException, InterruptedException;
public abstract String[] getLocations() throws IOException,
}
getLocations() がホスト名の配列を返すことはわかっています。
質問 1: クライアントはどのホスト名を返すかをどのように認識していますか? ジョブトラッカーの仕事じゃないの?
質問 2: 2 つの異なる InputSplit オブジェクトが同じホスト名を返すことはありますか? ホスト名はどのように決定されますか。誰がそれをしますか?
クライアントがファイルのすべてのホスト名 (レプリカを含む) を取得するために namenode に接続し、入力分割ごとに設定された場所に到達するためにいくつかの計算を行っているように感じます。本当ですか?