Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

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

Slide 3

Slide 3 text

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

Slide 4

Slide 4 text

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

Slide 5

Slide 5 text

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

Slide 6

Slide 6 text

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

Slide 7

Slide 7 text

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台サーバー追加、どのアプリにどれだけ追加すればよいのか? – それぞれ別々にデプロイするのめんどくさい…

Slide 8

Slide 8 text

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

Slide 9

Slide 9 text

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を通じて、データセンタ丸ごと、クラウド環境まるごとの上にリソース管理とスケジューリングを提供します。

Slide 10

Slide 10 text

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

Slide 11

Slide 11 text

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

Slide 12

Slide 12 text

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

Slide 13

Slide 13 text

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

Slide 14

Slide 14 text

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

Slide 15

Slide 15 text

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

Slide 16

Slide 16 text

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は待たなければいけない

Slide 17

Slide 17 text

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で管理

Slide 18

Slide 18 text

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/

Slide 19

Slide 19 text

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

Slide 20

Slide 20 text

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 ■…

Slide 21

Slide 21 text

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

Slide 22

Slide 22 text

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

Slide 23

Slide 23 text

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勉強会やるよ!!