1.前文
スケジューラは Mesos のコアコンポーネントで、各スレーブ上のリソースを各フレームワークに割り当てるのが主な役割です。一般的なスケジューリング機構には、FIFO、Fair Scheduler、Capacity Scheduler、Quincy、Condor などがあります。 マルチフレームワークアクセスをサポートするために、Mesos は 2 層スケジューリング機構を採用しています。Mesosはマルチフレームワークアクセスをサポートするために、2層のスケジューリング機構を採用しています。 まず、mesosのアロケータがフレームワークにリソースを割り当て、次にフレームワーク自身のスケジューラがタスクにリソースを割り当てます。この記事では、mesosのアロケータモジュールに焦点を当てます。
2.Mesosのスケジューリング機構
Mesosのスケジューリング機構は「Resource Offer」と呼ばれ、Hadoopのスロットベースの機構とは異なり、リソース量に応じたスケジューリング機構を採用しています。Mesosでは、スレーブが直接マスターにリソースを報告し、マスターがあるメカニズムに従ってフレームワークにリソースを割り当てます。ここで、「あるメカニズム」とは「支配的資源公平性」のことです。
2層スケジューリングフレームワークを採用するmesosのようなシステムでは、「Mesosが各フレームワークのリソース要件を知らないときに、Mesosが各フレームワークのリソース要件を満たすにはどうすればよいか」、より具体的には、「フレームワークのどのノードにどのデータが格納されているかわからないときに、Mesosがデータの局所性を実現するにはどうすればよいか」という問題に設計で対処する必要があります。この問題を解決するために、mesosは「拒否オファー」メカニズムを提供し、フレームワークがどのノードにどのデータが格納されているかを知ることなく、ユーザーにデータを提供できるようにしています。この問題を解決するために、mesosは「リジェクト・オファー」メカニズムを提供します。これは、フレームワークがリソース要件を満たさないスレーブを一時的に拒否できるようにするもので、mesosはHadoopと同様の「遅延スケジューリング」スケジューリングメカニズムを採用しています。
mesosでは、ジョブスケジューリングは分散プロセスであり、あるレベルの効率性と障害発生時の堅牢性を示す必要があります。そのために、mesosは以下のような仕組みを提供しています:
フィルターメカニズム。 各スケジューリング処理において、mesos-masterはフレームワーク・スケジューラと通信する必要があります。フレームワークによっては常にスレーブを拒否している場合、余分な通信オーバーヘッドがスケジューリング性能を非効率にしてしまいます。不必要な通信を避けるため、mesosはフィルター機構を提供し、フレームワークが「Lより大きいリソースの残りを持つスレーブ」または「ノードリストにあるスレーブのみ受け入れる」ことを可能にします。
Rescindsメカニズム。あるフレームワークが、割り当てられたリソースに対応するタスクを一定期間内に返さなかった場合、mesos はそのリソースの量を取り戻し、他のフレームワークにリソースを割り当てます。
3.支配的資源の公平性
DRFは、複数のリソースをサポートするmax-min公平なリソース割り当てメカニズムです。maxはmax{CPU,mem}、minはmin{user1,user2,...}=min{max{CPU1,mem1}, max{CPU2,mem2}, ...}を表します。ここで、userはmesosのフレームワークを表し、アルゴリズムの擬似コードを以下に示します:
例として、システムに9CPUと18GBのRAMがあり、2種類のタスクを実行する2人のユーザーがいて、それぞれ<1CPU、4GB>と<3CPU、1GB>のリソースを必要とするとします。ユーザーAでは、各タスクがCPU全体の1/9、RAM全体の2/9を消費するため、Aの支配的なリソースはRAMです。 DRFはすべてのユーザーの支配的なリソースを均等にします。つまり、Aは<3 CPU、12 GB>を獲得し、3つのタスクを実行できます。つまり、AはRAMの2/3を獲得し、BはCPUの2/3を獲得します。
DRFアルゴリズムで可能なスケジューリング・シーケンスを以下に示します:
4.Mesosスケジューリングの問題
MesosのDRFスケジューリングアルゴリズムは、公平性を過度に追求し、実際のアプリケーションの要件を考慮していません。実際の生産ラインでは、HadoopのCapacity Schedulerのスケジューリング機構と同様に、すべてのリソースをいくつかのキューに分割し、各キューに一定量のリソースを割り当て、各ユーザにリソースの使用上限を設定する必要があることが多く、より利用されるスケジューリング戦略は、各キューが個別にスケジューラ戦略をカスタマイズできるようにサポートすることです:例えば、FIFO や Priority などです。
Mesosは2層のスケジューリング機構を採用しているため、実際のスケジューリングになると、どのスケジューリング機構を***層と2層目のスケジューラにそれぞれ実装するか、つまり、スケジューリング機構のほとんどを***層スケジューラに入れるか、***層スケジューラは単純なリソース割り当てのみをサポートするか、という設計上の決定問題に直面します。
つまり、各ノードのリソースをすべて割り当てられるわけではなく、残ったわずかなリソースではどのタスクも実行できない可能性があり、オペレーティングシステムと同じようなメモリの断片化問題が発生します。
Dominant Resource Fairness: 複数のリソースタイプの公平な割り当て。 A. Ghodsi, M. Zaharia, B. Hindman, A. Konwinski, S. Shenker, and I. Stoica、NSDI 2011、2011年3月





