0

「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 に接続し、入力分割ごとに設定された場所に到達するためにいくつかの計算を行っているように感じます。本当ですか?

4

1 に答える 1

0

Q クライアントはどのホスト名を返すかをどのように認識していますか? ジョブトラッカーの仕事じゃないの?

A. 入力分割は、ジョブ構成で使用される入力形式によって作成されます。分割の論理セットを作成するプロセス中に、名前ノードに到達して、分割を形成するブロックの場所を尋ねます。ジョブ トラッカーの役割は、InputSplit の情報に基づいてデータの局所性を考慮してマップ タスクを実行しようとすることです。

質問 2: 2 つの異なる InputSplit オブジェクトが同じホスト名を返すことはありますか? ホスト名はどのように決定されますか。誰がそれをしますか?

A.もちろんです。各入力分割には、分割を計算するための独自の式があります。入力分割はブロックと同じサイズである必要はないことに注意してください。

お役に立てれば。

于 2013-09-06T06:58:57.363 に答える