データがローカルでない場合、タスクトラッカーはどのようにしてマップタスクのデータを別のノードから取得しますか?
データを含むマシンのデータノードと直接通信しますか、それとも他のデータノードと直接通信する独自のデータノードと通信しますか?
ありがとう、Suresh。
データがローカルでない場合、タスクトラッカーはどのようにしてマップタスクのデータを別のノードから取得しますか?
データを含むマシンのデータノードと直接通信しますか、それとも他のデータノードと直接通信する独自のデータノードと通信しますか?
ありがとう、Suresh。
タスク トラッカー自体はデータを取得しません。JVM を起動 (または再利用) して Map タスクを実行します。マップ タスクは、DFS ファイル システム クライアントを使用して、処理するファイルのブロックの場所の名前ノードを照会します。次に、クライアントはデータ ノードに接続し、そこでブロックの 1 つが複製され、実際にファイルの内容を (ストリームとして) 取得します。
さらに深く掘り下げたい場合は、ソースを参照して理解を深めてください。DFSClient と内部クラス DFSInputStream (特に bestNode メソッド) を確認してください。
openInfo()
メソッド @ 行 1494chooseDataNode()
メソッド @ 1800