web-dev-qa-db-ja.com

Apache Mesosは実際に何をしますか?

Apache Mesos に頭を包み込もうとしていますが、いくつかの項目について明確にする必要があります。

Mesosの私の理解は、すべての物理/ VMサーバーにインストールされる実行可能ファイルであるということです( "node ")クラスターで、その後、Java API(何らかの形で)各ノードをコンピューティングリソース(CPU/RAM/etcの集合プールとして扱う)を提供します。 。)。したがって、Java APIに対してコーディングするプログラムに対しては、1つのリソースセットのみが表示され、コードのデプロイ方法/場所について心配する必要はありません。

そのため、1つは、ここでの理解が根本的に間違っている可能性があります(その場合は修正してください!)。しかし、ターゲットにいる場合、Java API(Mesos提供)はどのようにしてJavaクライアントがこれらのリソースを利用できるか?!?動作中のMesosの具体例を教えてください。


更新

以下の私のひどい図面を見てください。 Mesosアーキテクチャを正しく理解していれば、3台の物理サーバー(phys01phys02およびphys03)。これらの各物理は、Ubuntuホスト(または何でも)を実行しています。 Xenなどのハイパーバイザーを使用して、1つ以上のVMを実行できます。

私はDockerとCoreOSに興味があるので、この例ではそれらを使用しますが、他の非コンテナー設定にも同じことが当てはまると思います。

したがって、各VMにはCoreOSがあります。各CoreOSインスタンスで実行されるのはMesos実行可能ファイル/サーバーです。クラスター内のすべてのMesosノードは、 Mesosクラスターに任意にデプロイされ、Mesosは実際にそれらをデプロイするCoreOSインスタンスを見つけます。

Mesosの上で実行されるのは、MarathonやKubernetesなどの「Mesosフレームワーク」です。 Kubernetes内では、さまざまなDockerコンテナ(C1-C4)。

enter image description here

Mesosのこの理解は多かれ少なかれ正しいですか?

38
smeeb

要約はほぼ正しいですが、mesosが表す本質を反映していません。プロジェクトの背後にある会社であるメソスフェアのビジョンは、「データセンターオペレーティングシステム」を作成することであり、メソは通常のOSのカーネルに類似したカーネルです。 APIはJavaに限定されず、C、C++、Java/Scala、またはPythonを使用できます。質問で説明するようにmesosクラスターをセットアップし、リソースを使用する場合は、通常、ワークロードを直接実行する代わりにframeworkを使用してこれを行います。これは、これが複雑であることを意味するものではありません これはScalaの非常に小さな例です これがこれを示しています。 Apache SparkApache Cassandra などの複数の一般的な分散データ処理システム用のフレームワークが存在します。 Chronos データセンターレベルのcronや Marathon など、Dockerベースのアプリケーションを実行できる他のフレームワークがあります。

更新:

はい、mesosはクラスター内の配置を処理します。これはカーネルが行うことであり、限られたリソースのスケジューリングと管理です。ただし、スケッチしたセットアップでは、いくつかの明らかな疑問が生じます。

Mesosの下のレイヤー: CoreOSにmesosをインストールする は可能ですが、私が思うに面倒です。これは、mesosを実行するための典型的なシナリオではありません。通常、可能な限り最下位のレイヤー(この場合はUbuntuの上)に移動します。したがって、CoreOSおよびハイパーバイザーを実行する正当な理由があることを願っています。

中間層の上の層:Kubernetesはフレームワークとして利用できず、中間圏はそれに多大な労力を費やしているようです。ただし、特にスケジューリングに関しては、機能面で部分的に重複していることは間違いありません。コンテナに基づいて基本的なワークロードをスケジュールする場合は、 Marathon または将来的には Aurora を使用することをお勧めします。ですから、ここでもこのアレンジメントに十分な理由があることを願っています。補足:KubernetesはMarathonに似ており、より幅広いアプローチとかなりの意見を持っています。

31
vanthome