Apache Mesosの概要
Apache Mesosは、カリフォルニア大学バークレー校で開発されたコンピュータ・クラスターのリソース管理を行なうためのソフトウェアで、現在はApacheコミュニティによって継続して開発されています。同じ用途として使用されるソフトウェアとしてはYARN(Yet Another Resource Negotiator)があります。
Apache Hadoop 2.0以前ではHadoopクラスターのリソース管理は独立したコンポーネントではありませんでした。これが2.0からは、YARNとして独立したコンポーネントとなりました。このコンポーネント化によってユーザはYARN以外のリソース管理ソフトウェアを選択することができるようになりました。
そこで注目されたのがMesosという新しいリソース管理ソフトウェアです。
Apache Mesosの主な特徴
Apache Mesosは以下のような特徴をもっています。
Apache Mesosのアーキテクチャ
Mesosは、大きく分けてリソースの管理、割り当てを行なうMasterプロセスとFramework(Mesos上で動くアプリケーションをFrameworkと呼びます)側と連動して動くAgentデーモンの二つに分かれています。
Masterプロセスは複数ノードで構成されるAgent上のデーモンと連携してリソースの割り当てを行います。Masterプロセスは1つであることから単一障害点にならないようにZookeeperを使って冗長構成にすることが推奨されています。
AgentはSchedulerとExecutorの2つのコンポーネントから成っています。SchedulerはMasterプロセスが提供(offer)するリソースの登録管理を主に行い、ExecutorはFrameworkのタスクの実行を管理しています。
参考:
http://mesos.apache.org/documentation/latest/architecture/
Apache MesosとYARNの違い
YARNがHadoopクラスターのリソース管理を目的として作られたソフトウェアであるのに対して、Mesosは汎用的にさまざまなアプリケーションのリソース管理を目的として作られました。
YARNは元々Hadoopの一部の機能であったことからJava言語で記述されています(HadoopはJava言語で記述されたソフトウェアです)。一方、MesosはC++言語で記述されたソフトウェアです。
C++で書かれていることでLinuxのネイティブ機能への親和性が高く、cgroupを使ってマシンリソースの制御を行っています。一方、YARNはLinuxのプロセスを利用してリソース管理を行っています。YARNがメモリのスケジューリング(管理)を行なうのに対してMesosはメモリ以外に、CPU、(I/O、File system)のスケジューリングも行います。
Mesosは、Hadoopだけでなく、MPIやMicrosoftのHadoop対抗馬であるDryadのリソース管理マネージャーとして利用することも出来ます。更に、JavaやPython、その他の言語で書かれた独自のアプリケーション(Framework)をMesosで管理することもできます。ただし、Mesosでリソース管理するためには開発するアプリケーションをMesosのFramework開発ガイドに則って作成する必要があります。
MesosとYARNのリソース管理の大きな違いは、YARNがリソースの割り当てを一方的に決定するのに対して、MesosはOffer/Rejectモデルを採用していることです。MesosではMasterとなるプロセスが空いているマシンリソースをFrameworkと連動して動いているAgentデーモンに対してOfferします。
Framework側では実行するタスクに必要なリソースがOfferされたリソースで満たされているのであればAgentを通じて使用するリソースをMasterに通知して、実際のマシンリソースの割り当てを行ってもらいタスクを実行します。割り当てられたタスクに対してMasterからOfferされたリソースが不十分な場合にはAgentはそのOfferをRejectします。そして他のタスクが終了して空きリソースが増えた際に再度Offerが来るまで待ちます(delay scheduling)。
参考:
http://mesos.apache.org/documentation/latest/architecture/#example-of-resource-offer
Apache Mesos上で動くFramework
下記のページにMesosのFrameworkに則って作成されたアプリケーションの一覧が掲載されています。
http://mesos.apache.org/documentation/latest/frameworks/
一覧からもわかるように、各分野においてMesos上で動くアプリケーションがすでに多く存在しています。
Mesosでは従来のHadoopで処理を行っていたようなバッチジョブを実行するFramework以外にも、常時稼働し続けるWebアプリケーションのような形態をとったFrameworkも実行することが可能です。
上記URLには各用途に合わせたアプリケーションをMesosのFrameworkに沿って開発するためのMeta Frameworkに該当するものが存在しています。例えば、常時稼働するWebアプリケーション向けにMarathonというFrameworkがあります。Marathonを使えばMarathon上に独自のWebアプリケーションを構築した上で、Mesosを使ったCluster構成下でリソースの制御を行なうことが可能です。
Apache Mesosの動作環境
Mesosは各種Linux(64bit)とmacOS(64bit)のOSで実行可能です。Mesosをソースからビルドするには、GCC4.8.1以上もしくはClang3.5以上が必須です。
MesosではLinux kernel 2.6.28 以上が必須ですが、Linux kernel 3.10以上において完全に独立したプロセス管理機能をサポートします。
また、Window上でも一部の制約が存在しますが、Mesosを稼働させることは可能です。
http://mesos.apache.org/documentation/latest/windows/
Apache Mesosのライセンス
MesosはApache License 2.0ライセンスのソフトウェアで、ユーザはそのソフトウェアの使用や頒布、修正、派生版の頒布をすることに制限を受けません。
Apache Mesosのダウンロード
http://mesos.apache.org/downloads/
参考情報
Apache Mesosの公式サイト
http://mesos.apache.org/
Apache Mesosのドキュメント
http://mesos.apache.org/documentation/latest/
Apache Mesosのサポート
NRIではお客様のご要望に応じて様々な支援ができるサービスをご用意しました。
詳細は下記ページをご確認ください。
・オープンソース年間サポートサービス