トップ OSS紹介 Apache Mesos

Apache Mesos

NRIのOpenStandiaが提供する Apache Mesos最新情報

バージョンアップ情報

Apache Mesos情報

Apache Mesosとは

Apache Mesosは、カリフォルニア大学バークレー校で開発されたコンピュータ・クラスターのリソース管理を行なうためのソフトウェアで、現在はApacheコミュニティによって継続して開発されています。同じ用途として使用されるソフトウェアとしてはYARN(Yet Another Resource Negotiator)があります。
Apache Hadoop 2.0以前ではHadoopクラスターのリソース管理は独立したコンポーネントではありませんでした。これが2.0からは、YARNとして独立したコンポーネントとなりました。このコンポーネント化によってユーザはYARN以外のリソース管理ソフトウェアを選択することができるようになりました。
そこで注目されたのが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のタスクの実行を管理しています。

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)。

Apache Mesos上で動くFramework

下記のページにMesosのFrameworkに則って作成されたアプリケーションの一覧が掲載されています。

一覧からもわかるように、各分野においてMesos上で動くアプリケーションがすでに多く存在しています。

Mesosでは従来のHadoopで処理を行っていたようなバッチジョブを実行するFramework以外にも、常時稼働し続けるWebアプリケーションのような形態をとったFrameworkも実行することが可能です。
上記URLには各用途に合わせたアプリケーションをMesosのFrameworkに沿って開発するためのMeta Frameworkに該当するものが存在しています。例えば、常時稼働するWebアプリケーション向けにMarathonというFrameworkがあります。Marathonを使えばMarathon上に独自のWebアプリケーションを構築した上で、Mesosを使ったCluster構成下でリソースの制御を行なうことが可能です。

動作環境

Mesosは各種Linux(64bit)とmacOS(64bit)のOSで実行可能です。Mesosをソースからビルドするには、GCC4.8.1以上もしくはClang3.5以上が必須です。
MesosではLinux kernel 2.6.28 以上が必須ですが、Linux kernel 3.10以上において完全に独立したプロセス管理機能をサポートします。
また、Window上でも一部の制約が存在しますが、Mesosを稼働させることは可能です。

Apache Mesosのライセンス

MesosはApache License 2.0ライセンスのソフトウェアで、ユーザはそのソフトウェアの使用や頒布、修正、派生版の頒布をすることに制限を受けません。

製品ダウンロード

オープンソース年間サポートサービス

OpenStandiaではOSSを安心してご利用いただけるように、オープンソース年間サポートサービスをご提供しております。
サポートしているOSSは下記ページをご参照ください。

お気軽にお問い合わせください

関連OSS

  • Apache Spark
    サポート対象

    Apache Spark

    アパッチ スパーク。Hadoopの後発として期待されるビッグデータ処理基盤です。

  • Kubernetes
    サポート対象

    Kubernetes

    クーバネティス。Dockerをはじめとするコンテナ化されたアプリケーションの展開、スケーリング、管理を行うオープンソースのプラットフォームです。

  • Docker
    サポート対象

    Docker

    ドッカー。ソフトウェアコンテナを用いたアプリケーションのデプロイメントを自動化する仮想化オープンソースソフトウェアです。

  • Apache Hadoop
    サポート対象

    Apache Hadoop

    アパッチ ハドゥープ。Java言語で実装された大規模データの蓄積、分析を分散して処理するフレームワークです。

オープンソースに関するさまざまな課題、OpenStandiaがまるごと解決します。
下記コンテンツも
あわせてご確認ください。