Hadoopクラスタのタスク スケジューラは、タスクで構成されるジョブのスケジュールを設定し、クラスタで実行されている各ジョブにリソースを割り当てます。デフォルトでは、タスク スケジューラはすべてのジョブに同じ数のリソースを割り当てます。たとえば、10個のジョブがクラスタで実行されている場合、どのジョブもクラスタのリソースを等しく共有します。ただし、タスク スケジューラを構成することでジョブの実行を制御できます。たとえば、より多くのリソース(プールまたはキュー)を特定のジョブに割り当てて、あるジョブが他のジョブよりも速く実行されるようにすることができます。これにより、一部のレポートを他のレポートよりも優先して実行できます。
機能
NetWitness Suiteは、次の2つのタスク スケジューラをサポートしています。
- Fair Scheduler(org.apache.hadoop.mapred.FairScheduler)
- Capacity Scheduler(org.apache.hadoop.mapred.CapacityTaskScheduler)
Fair Scheduler
このスケジューラは、クラスターの合計容量を論理プール間で分割します。各ジョブはいずれか1つのプールに送信できます。あるプールに送信されたすべてのジョブは、そのプールのみに割り当てられているリソースを共有します。プールに空きリソースができると、解放されたリソースは、ジョブが実行されている他のプールに割り当てられます。たとえば、Fair Schedulerで、100%のリソースが2個のプールPool AとPool Bでそれぞれ40%と60%に分割されているとします。Pool Aで4個のジョブが実行されているときは、各ジョブに10%のリソースが割り当てられます。4個のジョブが完了すると、解放されたリソースはPool Bに割り当てられます。
注:複数のジョブが並列して実行されるようにプールを構成できます。
Capacity Scheduler
このスケジューラは、クラスターの合計容量をキューの間で分割します。各キューには、合計容量のうち事前構成された割合が割り当てられます。各ジョブはいずれか任意のキューに送信できます。同じキューに複数のジョブが送信された場合、ジョブはシーケンシャルシーケンシャルに実行されます。たとえば、Capacity Schedulerで、100%のリソースが3個のキューDefault、Low、Highでそれぞれ20%、30%、50%に分割されているとします。Defaultに2個のジョブD1とD2、Lowに3個のジョブL1、L2、L3、Highに4個のジョブH1、H2、H3、H4がある場合、ジョブはそれぞれのキューでシーケンシャルシーケンシャルに実行されます。いずれかのキューでジョブが完了しても、解放されたリソースは他のキューには割り当てられません。