web-dev-qa-db-ja.com

例によるApacheMesosスケジューラーとエグゼキューター

Mesos のさまざまなコンポーネントがどのように連携するかを理解しようとしていますが、次のアーキテクチャの概要を含む この優れたチュートリアル が見つかりました。

enter image description here

私はこれについていくつかの懸念がありますが、明確にされていません(記事でも公式でも Mesos docs ):

  • Schedulersはどこで実行されていますか?スケジューラーのみを実行する必要がある「スケジューラーノード」はありますか?
  • 独自のMesosフレームワークを作成している場合、どのスケジューラー機能を実装する必要がありますか?マスターから送信されたオファーの単なるバイナリのyes/noまたはaccept/rejectですか?具体的な例はありますか?
  • 独自のMesosフレームワークを作成している場合、どのExecutor機能を実装する必要がありますか?具体的な例はありますか?
  • エグゼキュータに送信されるタスクの具体例は何ですか?
  • エグゼキュータはスレーブに「固定」(永続的にインストール)されますか、それとも「オンデマンド」タイプの方法でフロートし、動的に/オンザフライでインストールおよび実行されますか?
24
smeeb

素晴らしい質問です! Rendler のようなサンプルフレームワークを見てみると本当に役立つと思います。これはおそらくあなたの質問のほとんどに答え、フレームワーク内部の感覚を与えるでしょう。

この後もまだ開いているかもしれない質問に答えてみましょう。

  • スケジューラの場所

スケジューラーは特別なノードではオンになりませんが、スケジューラーは(分散システムの任意の部分と同様に)フェイルオーバーできることに注意してください。

  • スケジューラ機能

Rendlerまたは フレームワーク開発ガイドを参照 をご覧ください。

  • エグゼキュータ機能/タスク

Rendlerは、タスクとエグゼキュータの関係を理解するための良い例だと思います。 githubのメインページでREADME/descriptionを読み始めてください。

  • エグゼキュータのピン留め

エグゼキュータは、そのようなエグゼキュータを必要とする最初のタスクがこのノードに送信されるときに、各ノードで開始されます。この後、それはそのノードに残ります。

これがお役に立てば幸いです。

20
js84

Js84の優れた応答に追加するには、

  • Scheduler Location:多くのユーザーは、Marathonなどの別のフレームワークを介してスケジューラーを起動し、スケジューラーまたはそのノードが停止した場合に、別の場所で再起動できるようにします。
  • スケジューラー機能:Mesosに登録した後、スケジューラーはresourceOffers()コールバックでリソースオファーの取得を開始します。このコールバックでは、スケジューラーはサブセット(またはすべて)提供されているリソースのすべて。タスクの完了/失敗を処理するために、statusUpdate()コールバックも実装することをお勧めします。 Marathon/Chronos/Aurora/Kubernetesのような既存のフレームワークで十分な場合は、独自のスケジューラを実装する必要がない場合もあることに注意してください。
  • エグゼキュータ機能:LinuxプロセスまたはDockerコンテナを起動して、いつ完了するかを知りたい場合は、通常、カスタムエグゼキュータを作成する必要はありません。デフォルトのmesos-executorを使用することもできます(CommandInfo内に埋め込むのではなく、TaskInfoに直接ExecutorInfoを指定することにより)。ただし、カスタムエグゼキュータを構築する場合は、少なくともlaunchTask()を実装する必要があり、理想的にはkillTask()も実装する必要があります。
  • サンプルタスク:サンプルタスクは、sleep 1000echo "Hello World"のような単純なLinuxコマンド、またはimage : 'mysql'のようなDockerコンテナ(ContainerInfo経由)です。または、カスタムエグゼキュータを使用する場合、エグゼキュータはタスクとは何か、およびその実行方法を定義するため、代わりにタスクをエグゼキュータのプロセスで別のスレッドとして実行するか、単一のキューのアイテムにすることができます。スレッド化されたエグゼキュータ。
  • エグゼキュータのピン留め:エグゼキュータは、他のタスクバイナリと同様に、CommandInfo URIを介して配布されるため、ノードにプリインストールする必要はありません。 Mesosがそれをフェッチして実行します。
18
Adam

Schedulers:は、オファーを受け入れるか拒否するための戦略です。独自に作成できるスケジューラー、またはクロノスのような既存のスケジューラーを使用できます。スケジューラーでは、使用可能なリソースを評価してから、受け入れるか拒否する必要があります。

スケジューラー機能:例は、実行に8 CPUを必要とするタスクがあると仮定するようなものですが、mesosからのオファーは6 CPUである可能性があり、この場合、uは拒否できます。

エグゼキュータ機能:エグゼキュータはタスクの状態関連情報を処理します。 mesosスレーブで割り当てられたタスクのステータスなど、実装する必要のあるAPIのセット。エグゼキュータが実行されているmesosスレーブで現在使用可能なCPUの数はいくつですか。

エグゼキュータの具体例:クロノス

動的に/オンザフライでインストールおよび実行されます:これらは不可能です。エグゼキュータを事前に設定する必要があります。ただし、自動スケーリングを使用してエグゼキュータを複製できます。

1
Yogesh BG