0
私は減速機がhttp経由でマップ出力を取り込むことを理解しています。しかし、各マップタスクはすべての流出を1つのファイルに統合するので、どのようにタスクを削減して、中間タスクのデータをマップタスクから取り出すことができますか?そのファイルのほんの一部ですか?のhadoopで、マップタスクからデータを取り出す方法を減らすには
私は減速機がhttp経由でマップ出力を取り込むことを理解しています。しかし、各マップタスクはすべての流出を1つのファイルに統合するので、どのようにタスクを削減して、中間タスクのデータをマップタスクから取り出すことができますか?そのファイルのほんの一部ですか?のhadoopで、マップタスクからデータを取り出す方法を減らすには
マップタスクの出力は、パーティション番号でソートされます。各区画番号は、1つの減速機に対応する。レジューサーが出力をプルすると、ファイルポインターはレデューサーのパーティション番号の開始位置にオフセットされ、読み取りを開始します。もちろん、ファイルオフセットテーブルのパーティション番号は、これを実現するためにマッパー側で管理されています。
コードからは、すべてのスピルファイルをマージした後にマップタスクが終了したように見えます。しかし、どのようにして「ファイル番号のオフセットテーブルへのパーティション番号」をこのように維持できますか?あまりにも、私はReduceTaskで、中間データを取得するためにhttp接続を開きますが、私は地図のタスク側でhttpハンドラが表示されませんがわかります。 TaskTrackerはHTTPリクエストを処理するHTTPサーバーとして機能しますか?疑わしい。 – user1080611
マップの最後に、出力(複数のスピルまたは1回のスピル)がパーティション番号でソートされます。パーティション番号とファイルのオフセットテーブルも書き込まれます。このテーブルはメモリに保持されません。現在のHadoop(1.0/0.20.xxx)は、jettyを使用してHTTPリクエストを切断しています。 Jettyはスレッドで開始できます。詳細については、コードを読む必要があります。現在のトランクは桟橋の代わりにネットティを使用しています。 – root1982