Upgrade to Pro — share decks privately, control downloads, hide ads and more …

分散スケジューラMesosの紹介

 分散スケジューラMesosの紹介

db tech showcase 2016 のスライド

UENISHI Kota

July 14, 2016
Tweet

More Decks by UENISHI Kota

Other Decks in Technology

Transcript

  1. Copyright © 2012 Nautilus Technologies, Inc. All rights reserved.
    Proprietary & Confidential
    NAUTILUS
    分散スケジューラMesosの紹介
    Kota UENISHI
    2016/7/14
    db tech showcase 2016 秋葉原
    株式会社ノーチラス・テクノロジーズ
    http://www.nautilus-technologies.com/
    mailto:[email protected]
    Tel: 03-6712-0636 Fax: 03-6712-0664

    View Slide

  2. Copyright © 2012 Nautilus Technologies, Inc. All rights reserved.
    NAUTILUS 2
    Proprietary & Confidential
    Operating System とは何だったのか
    CPU
    オペレーティングシステム
    アプリケーション
    システムコール
    POSIX API, ABI, libc
    機械語
    デバイスドライバ
    ファームウェア
    メモリ I/O
    アプリケーション
    アプリケーション
    アプリケーション
    アプリケーション
    アプリケーション
    アプリケーション
    ユーザ管理、隔離
    多重化
    プロセススケジューリング
    メモリ管理 IOスケジューリング

    View Slide

  3. Copyright © 2012 Nautilus Technologies, Inc. All rights reserved.
    NAUTILUS 3
    Proprietary & Confidential
    OSのない/ある時代のコンピュータの使い方
    OSがない OSがある
    ユーザ管理
    列に並んでログインを
    待つ
    みんな同時ログイン
    プロセス多重化
    列に並んでログインと
    実行を待つ
    Runqueue上で待つ
    メモリ管理 他に誰もいない 仮想メモリ空間
    IOスケジューラ 他に誰もいない IO queue上で待つ
    システムコール 都度プログラミング 統一されたAPI
    アプリケーション開発 手動アセンブリ
    コンパイラがABIを合
    わせてくれる

    View Slide

  4. Copyright © 2012 Nautilus Technologies, Inc. All rights reserved.
    NAUTILUS 4
    Proprietary & Confidential
    OSのない/ある時代のコンピュータの使い方
    OSがない OSがある
    スケジューリング
    ノンプリエンプティブ
    シリアル実行
    実行可能なものから
    順番
    ジョブの予約
    パンチカードを担当者
    に渡す
    コマンド実行
    ジョブの待ち時間 長い 短い
    リソース使用率 低い 高い

    View Slide

  5. Copyright © 2012 Nautilus Technologies, Inc. All rights reserved.
    NAUTILUS 5
    Proprietary & Confidential
    ビッグ!データ!時代!!はなんでも分散

    View Slide

  6. Copyright © 2012 Nautilus Technologies, Inc. All rights reserved.
    NAUTILUS 6
    Proprietary & Confidential
    “大規模” システムのシンプルさと効率のトレードオフ
    管理しやすい
    シンプルな構成
    リソース
    利用効率
    •運用のコスト高い
    •管理可能なスケールに限界
    •システムの構成要素少ない
    •初期システム設計が高コスト
    •重厚長大になりがち
    •システムの構成要素多い
    •アプリケーションをノード分離
    •リソース分離
    •スタティックな構成
    •手動の障害対応
    •アプリケーションの分離
    •アプリ同士のリソース共有
    •ダイナミックな構成
    •自動で障害対応

    View Slide

  7. Copyright © 2012 Nautilus Technologies, Inc. All rights reserved.
    NAUTILUS 7
    Proprietary & Confidential
    ビッグデータ時代のシステムが抱える課題
    ■管理しないといけないサブシステムが沢山
    ■リソース分離とリソース利用効率がトレードオフ
    – リソース競合しないアプリAとアプリBを同居させても動きそうだけど、ホントに
    大丈夫かなあ…
    ■瞬発力を必要とするアプリケーション
    – 30GBのデータをスキャンして別のデータとjoinするクエリを3000コアのCPU
    を使って20秒で終わらせたい
    – 一時的に20TBのデータをメモリにのせてプログラムを走らせたい
    – Webサーバーを増やしてキャンペーンの間だけ3000QPS捌きたい
    – 月次の集計バッチのときだけ50ノードのCPUとメモリを使いたい
    – フェイルオーバーしてたので新しいノードをすぐもってきたい
    ■完全仮想化、準仮想化のオーバーヘッド
    – 5~10% でも惜しい
    ■拡張性
    – 100台サーバー追加、どのアプリにどれだけ追加すればよいのか?
    – それぞれ別々にデプロイするのめんどくさい…

    View Slide

  8. Copyright © 2012 Nautilus Technologies, Inc. All rights reserved.
    NAUTILUS 8
    Proprietary & Confidential
    Mesos: DC用リソース管理&分散スケジューラ
    Apache Mesos は CPU, メモリ、ストレージなど、あらゆるリソースを(物理および仮想)マシンから抽象化し
    耐障害性と可塑性のある分散システムを簡単かつ効率的にに構築、実行できるようになります

    View Slide

  9. Copyright © 2012 Nautilus Technologies, Inc. All rights reserved.
    NAUTILUS 9
    Proprietary & Confidential
    Mesos: distributed systems kernel
    Mesosって何? 分散システムのカーネルだよ!
    Mesos は Linux カーネルと同じ原則で設計、開発されています。違うのは抽象化されているレベルだけです。
    Mesos カーネルはあらゆるマシン上で動作し、 Hadoop, Spark, Kafka, Elastic Search といったアプリケーションに
    APIを通じて、データセンタ丸ごと、クラウド環境まるごとの上にリソース管理とスケジューリングを提供します。

    View Slide

  10. Copyright © 2012 Nautilus Technologies, Inc. All rights reserved.
    NAUTILUS 10
    Proprietary & Confidential
    Mesos: まことしやかな噂@シリコンバレー
    「Mesosって何?」
    「GoogleのBorgみたいなもんだよ」

    View Slide

  11. Copyright © 2012 Nautilus Technologies, Inc. All rights reserved.
    NAUTILUS 11
    Proprietary & Confidential
    分散スケジューラのない/ある時代のコンピュータの使い方
    ない ある
    アプリケーション管理 別ノード コンテナ分離
    リソース共有 別クラスタ 必要なときだけ確保
    メモリ管理 別クラスタ 必要なときだけ確保
    耐障害性 自前、アプリ毎、手動 自動、アプリごと
    可塑性 ノード追加 予備リソース投入
    アプリケーション開発 開発環境を維持 必要なときにデプロイ

    View Slide

  12. Copyright © 2012 Nautilus Technologies, Inc. All rights reserved.
    NAUTILUS 12
    Proprietary & Confidential
    分散スケジューラのない/ある時代のコンピュータの使い方
    OSがない OSがある
    スケジューリング スタティック ダイナミック
    ジョブの予約
    前のジョブが終わった
    ら実行
    リソース確保できたら
    実行
    ジョブの待ち時間 順番待ち 確保できるかぎりなし
    リソース使用率 低い 高い

    View Slide

  13. Copyright © 2012 Nautilus Technologies, Inc. All rights reserved.
    NAUTILUS 13
    Proprietary & Confidential
    Mesosの構成
    Master Agent
    Executor
    Executor
    Executor
    Executor
    Agent
    Executor
    Executor
    Executor
    Executor
    Agent
    Executor
    Executor
    Executor
    Executor
    •….......
    Framework
    Scheduler C
    Framework
    Scheduler B
    Framework
    Scheduler A

    View Slide

  14. Copyright © 2012 Nautilus Technologies, Inc. All rights reserved.
    NAUTILUS 14
    Proprietary & Confidential
    Mesosの特徴
    ■いいところ
    – リソース管理とスケジューリングのモジュールの分離 - “Resource Offer”
    ■ スケジューリングアルゴリズムを、目的に応じて切り替えたり最適化できる
    ■ Masterの負荷を低減
    – Scheduler / Executor のシンプルな API
    ■ 豊富な言語サポート
    ■ 豊富なフレームワークのサポート
    – きれいなC++で書かれている
    ■Mesosの残念なところ
    – 高可用動作にはZooKeeperが必要
    – マルチDCを明示的にはサポートしていない
    – フレームワークもミドルウェアなので、作るのは簡単だがテストしづらい

    View Slide

  15. Copyright © 2012 Nautilus Technologies, Inc. All rights reserved.
    NAUTILUS 15
    Proprietary & Confidential
    典型的なスケジューリング
    ■アプリケーションがスケジューラに「リソースをくれ」と頼む
    ■スケジューラは手持ちからアプリケーションに渡せるリソースを渡す
    ■リソースがない場合は、待たせるまたは失敗
    ■Cons:
    – スケジューリングも同時に行うためスケジューラのMasterの負荷が高くなる
    – アプリケーションがバラバラにリソース要求をしてくるのでアプリケーション間
    のリソース最適化をしにくい
    – 全てのアプリケーションに同じアルゴリズムでリソース配分を行うので、スケジ
    ューラ側で最適化をしやすいが、それがアプリケーションにとってよいとは限ら
    ない

    View Slide

  16. Copyright © 2012 Nautilus Technologies, Inc. All rights reserved.
    NAUTILUS 16
    Proprietary & Confidential
    MesosのResource Offer
    ■“Two-level Scheduling”
    ■リソース管理とスケジューリングの分離
    ■Masterが各Frameworkに「このリソースいる?」と尋ねてまわる
    ■Frameworkは、その中から必要な分だけ使う
    ■いらない分は次のFrameworkにOfferを出す
    ■Pros:
    – 余っている分のリソースがアプリケーションに全て伝わるので、アプリケーショ
    ン側で最適化をしやすい
    ■Cons:
    – OfferをもらうまでFrameworkは待たなければいけない

    View Slide

  17. Copyright © 2012 Nautilus Technologies, Inc. All rights reserved.
    NAUTILUS 17
    Proprietary & Confidential
    タスク起動の仕組み
    Master
    Agent Executor
    Agent Executor
    Framework
    Scheduler
    1. Resource Offer
    2. Accept Offer
    3. Launch Task
    4. Fork & Exec
    4. Fork & Exec
    5. Status Update
    5. Status Update
    •Executorは daemon でもOK
    •Executorは ただのコマンドでもOK
    •Executorは Docker イメージでもOK
    •Framework SchedulerはMarathonで管理

    View Slide

  18. Copyright © 2012 Nautilus Technologies, Inc. All rights reserved.
    NAUTILUS 18
    Proprietary & Confidential
    Frameworks
    ■Aurora, Marathon
    – プロセス管理やオートスケール、故障時の再起動などをしてくれるサービスス
    ケジューラ
    ■Airflow
    – ワークフローエンジン
    ■Spark, Hadoop
    ■MPI
    – HPC向け分散処理フレームワーク
    ■Chronos
    – 高可用クラスタCron
    ■Jenkins
    ■Cassandra
    ■Elasticsearch
    http://mesos.apache.org/documentation/latest/frameworks/

    View Slide

  19. Copyright © 2012 Nautilus Technologies, Inc. All rights reserved.
    NAUTILUS 19
    Proprietary & Confidential
    Frameworkを作ろう!
    ■Frameworkを作らないとMesosを使いきったとはいえない
    ■Scheduler クラスを継承してコールバックを実装
    ■Scheduler driverを叩いて命令を伝える
    ■Executor クラスを継承してコールバックを実装
    ■Executor driverを叩いて命令を伝える
    ■うごかす

    View Slide

  20. Copyright © 2012 Nautilus Technologies, Inc. All rights reserved.
    NAUTILUS 20
    Proprietary & Confidential
    みんな使っています
    ■Airbnb
    ■Apple
    ■Atlassian
    ■CERN
    ■Cisco
    ■eBay
    ■Ericsson
    ■Groupon
    ■Hootsuite
    ■Mesosphere
    •https://github.com/apache/mesos/blob/master/docs/powered-by-mesos.md
    •と、他にもいくつかのソースから
    ■Netflix
    ■Twitter
    ■Uber
    ■UC Berkeley
    ■Yelp
    ■Microsoft
    ■Two Sigma
    ■…

    View Slide

  21. Copyright © 2012 Nautilus Technologies, Inc. All rights reserved.
    NAUTILUS 21
    Proprietary & Confidential
    Datacenter scheduling
    ■沢山あるコンピュータに、どこにどれだけアプリケーションを効率
    的かつ安定して割り当てるか
    ■グリッドの時代からある、古くて新しい問題
    – ユースケースごとに最適化した解があり、目的に特化することが多い
    ■YARN
    – Hadoop MapReduce からスケジューラー相当のコードを切り離し
    て汎用化したもの。
    ■Borg
    – Googleが世界中にある自社DC内のコンピュータと、その上で動くア
    プリケーションを管理するためのスケジューラ
    ■似ているけど全然違うもの
    – OpenStack, CloudStack, Kubernetes, Ansible, Chef,
    CoreOS

    View Slide

  22. Copyright © 2012 Nautilus Technologies, Inc. All rights reserved.
    NAUTILUS 22
    Proprietary & Confidential
    Questions?
    お知らせ:Mesos勉強会
    ■近いうちにやります
    ■都内、平日夕方

    View Slide

  23. Copyright © 2012 Nautilus Technologies, Inc. All rights reserved.
    NAUTILUS 23
    Proprietary & Confidential
    Agenda
    1. OSとは何だったのか「コンピュータを運用するためのシステム(ソフト
    ウェア)」 → I/O抽象化(デバイスドライバ、firmware、HW)→メモリ
    管理、プロセス多重化/CPU管理、スケジューリング(高レベル、低レベ
    ル) 「システムコール」
    2. OSのない時代、ある時代のコンピューティング
    3. Datacenter OSとは何か?
    4. 分散スケジューラ is 何 -- Goal: 複数あるコンピュータ資源を極限ま
    で使い倒す(スケジューラー リソース管理/制限 まるちてなんしー)
    5. Datacenter OSのない時代、ある時代のコンピューティング
    6. 仕組み(Master, Agent, Framework Scheduler, Executor)
    7. みんな使っています
    8. 類似: YARN, k8s, OpenStack, CloudStack
    9. Mesos勉強会やるよ!!

    View Slide