2016-08-14 2 views
5

ジョブトラッカーがinputsplitが保存されているデータノードでタスクトラッカー(マッパー/レデューサー)を起動し、そのデータでそのタスクを実行し、マッパーがその中間ストレージをローカルストレージに保存することは間違いありませんか?マッパーは、それが実行されているデータノードのRAMに中間出力を保存しますか?

私の質問は次のとおりです。マッパーはdatanode上で実行されているので、データノードのRAMに中間データを保存していますか?また、データノードディスクはhdfsの一部であり、中間出力はhdfsには格納されません。

答えて

5

Mapper(中間データ)の出力は、個々のマッパーデータノードのローカルファイルシステム(HDFSではなく)に格納されます。 。これは通常、Hadoop管理者が設定で設定できる一時ディレクトリです。 Mapperジョブが完了するか、またはデータがReducerに転送されると、これらの中間データはクリーンアップされ、アクセスできなくなります。

2

マップタスクは、最初にその出力をデータノードのバッファに格納します。

バッファの容量の80%が満たされると、バッファはデータノード自身のディスクに書き込まれます(HDFSではなく)。このディスクの場所は、Hadoop 2.0内のmapred-site.xmlプロパティ名-

で表示/変更できます
関連する問題