1

MapReduce FIFO スケジューラーについて質問があります。ジョブがキューに到着すると実行されることを理解しています(優先度が同じである限り)。私の理解では、次の仕事は現在の仕事が完了するまで待つということです。しかし、現在のジョブが容量を完全に消費しておらず、残りの容量で次のジョブを実行できる場合はどうなるでしょうか? その場合、次のジョブはすぐに実行されますか、それとも現在のジョブが終了するのを待ちますか?

2 番目のジョブが最初のジョブが完了するまで待たなければならない場合、関連する質問は、最初のジョブがそのマップ タスクで完了したときに、2 番目のジョブのマップ タスクを実行できるかどうかです。

4

1 に答える 1

1

まず、クラスタ内の各ノードには一定量のスロットがあり、マップ タスクとリデュース タスクに均等に割り当てられます。FIFO スケジューラでは、スキューが発生するとあまり効率的ではありません。たとえば、前のジョブに map タスクまたは reduce タスクがあり、完了するまでに「永遠に」かかる場合、システム全体が停止する可能性があります。幸いなことに、MapReduce では投機的実行が採用されているため、これは起こりません。ストラグラーが検出されると、そのクローンが他のノードで開始されます。

最初の質問: 答えはイエスだと思います。もちろん、残りの容量は次のジョブで使用されます。

2 番目の質問: 残りの容量が利用できない場合、次のジョブは待機する必要があります。前のジョブがマップ タスクを完了すると、マップ タスクのスロットが解放されます。したがって、次のジョブはそのマップ フェーズを開始できます。

于 2013-05-29T08:54:18.137 に答える