db tech showcase 2016 のスライド
Copyright © 2012 Nautilus Technologies, Inc. All rights reserved.Proprietary & ConfidentialNAUTILUS分散スケジューラMesosの紹介Kota UENISHI2016/7/14db tech showcase 2016 秋葉原株式会社ノーチラス・テクノロジーズhttp://www.nautilus-technologies.com/mailto:[email protected]Tel: 03-6712-0636 Fax: 03-6712-0664
View Slide
Copyright © 2012 Nautilus Technologies, Inc. All rights reserved.NAUTILUS 2Proprietary & ConfidentialOperating System とは何だったのかCPUオペレーティングシステムアプリケーションシステムコールPOSIX API, ABI, libc機械語デバイスドライバファームウェアメモリ I/Oアプリケーションアプリケーションアプリケーションアプリケーションアプリケーションアプリケーションユーザ管理、隔離多重化プロセススケジューリングメモリ管理 IOスケジューリング
Copyright © 2012 Nautilus Technologies, Inc. All rights reserved.NAUTILUS 3Proprietary & ConfidentialOSのない/ある時代のコンピュータの使い方OSがない OSがあるユーザ管理列に並んでログインを待つみんな同時ログインプロセス多重化列に並んでログインと実行を待つRunqueue上で待つメモリ管理 他に誰もいない 仮想メモリ空間IOスケジューラ 他に誰もいない IO queue上で待つシステムコール 都度プログラミング 統一されたAPIアプリケーション開発 手動アセンブリコンパイラがABIを合わせてくれる
Copyright © 2012 Nautilus Technologies, Inc. All rights reserved.NAUTILUS 4Proprietary & ConfidentialOSのない/ある時代のコンピュータの使い方OSがない OSがあるスケジューリングノンプリエンプティブシリアル実行実行可能なものから順番ジョブの予約パンチカードを担当者に渡すコマンド実行ジョブの待ち時間 長い 短いリソース使用率 低い 高い
Copyright © 2012 Nautilus Technologies, Inc. All rights reserved.NAUTILUS 5Proprietary & Confidentialビッグ!データ!時代!!はなんでも分散
Copyright © 2012 Nautilus Technologies, Inc. All rights reserved.NAUTILUS 6Proprietary & Confidential“大規模” システムのシンプルさと効率のトレードオフ管理しやすいシンプルな構成リソース利用効率•運用のコスト高い•管理可能なスケールに限界•システムの構成要素少ない•初期システム設計が高コスト•重厚長大になりがち•システムの構成要素多い•アプリケーションをノード分離•リソース分離•スタティックな構成•手動の障害対応•アプリケーションの分離•アプリ同士のリソース共有•ダイナミックな構成•自動で障害対応
Copyright © 2012 Nautilus Technologies, Inc. All rights reserved.NAUTILUS 7Proprietary & Confidentialビッグデータ時代のシステムが抱える課題■管理しないといけないサブシステムが沢山■リソース分離とリソース利用効率がトレードオフ– リソース競合しないアプリAとアプリBを同居させても動きそうだけど、ホントに大丈夫かなあ…■瞬発力を必要とするアプリケーション– 30GBのデータをスキャンして別のデータとjoinするクエリを3000コアのCPUを使って20秒で終わらせたい– 一時的に20TBのデータをメモリにのせてプログラムを走らせたい– Webサーバーを増やしてキャンペーンの間だけ3000QPS捌きたい– 月次の集計バッチのときだけ50ノードのCPUとメモリを使いたい– フェイルオーバーしてたので新しいノードをすぐもってきたい■完全仮想化、準仮想化のオーバーヘッド– 5~10% でも惜しい■拡張性– 100台サーバー追加、どのアプリにどれだけ追加すればよいのか?– それぞれ別々にデプロイするのめんどくさい…
Copyright © 2012 Nautilus Technologies, Inc. All rights reserved.NAUTILUS 8Proprietary & ConfidentialMesos: DC用リソース管理&分散スケジューラApache Mesos は CPU, メモリ、ストレージなど、あらゆるリソースを(物理および仮想)マシンから抽象化し耐障害性と可塑性のある分散システムを簡単かつ効率的にに構築、実行できるようになります
Copyright © 2012 Nautilus Technologies, Inc. All rights reserved.NAUTILUS 9Proprietary & ConfidentialMesos: distributed systems kernelMesosって何? 分散システムのカーネルだよ!Mesos は Linux カーネルと同じ原則で設計、開発されています。違うのは抽象化されているレベルだけです。Mesos カーネルはあらゆるマシン上で動作し、 Hadoop, Spark, Kafka, Elastic Search といったアプリケーションにAPIを通じて、データセンタ丸ごと、クラウド環境まるごとの上にリソース管理とスケジューリングを提供します。
Copyright © 2012 Nautilus Technologies, Inc. All rights reserved.NAUTILUS 10Proprietary & ConfidentialMesos: まことしやかな噂@シリコンバレー「Mesosって何?」「GoogleのBorgみたいなもんだよ」
Copyright © 2012 Nautilus Technologies, Inc. All rights reserved.NAUTILUS 11Proprietary & Confidential分散スケジューラのない/ある時代のコンピュータの使い方ない あるアプリケーション管理 別ノード コンテナ分離リソース共有 別クラスタ 必要なときだけ確保メモリ管理 別クラスタ 必要なときだけ確保耐障害性 自前、アプリ毎、手動 自動、アプリごと可塑性 ノード追加 予備リソース投入アプリケーション開発 開発環境を維持 必要なときにデプロイ
Copyright © 2012 Nautilus Technologies, Inc. All rights reserved.NAUTILUS 12Proprietary & Confidential分散スケジューラのない/ある時代のコンピュータの使い方OSがない OSがあるスケジューリング スタティック ダイナミックジョブの予約前のジョブが終わったら実行リソース確保できたら実行ジョブの待ち時間 順番待ち 確保できるかぎりなしリソース使用率 低い 高い
Copyright © 2012 Nautilus Technologies, Inc. All rights reserved.NAUTILUS 13Proprietary & ConfidentialMesosの構成Master AgentExecutorExecutorExecutorExecutorAgentExecutorExecutorExecutorExecutorAgentExecutorExecutorExecutorExecutor•….......FrameworkScheduler CFrameworkScheduler BFrameworkScheduler A
Copyright © 2012 Nautilus Technologies, Inc. All rights reserved.NAUTILUS 14Proprietary & ConfidentialMesosの特徴■いいところ– リソース管理とスケジューリングのモジュールの分離 - “Resource Offer”■ スケジューリングアルゴリズムを、目的に応じて切り替えたり最適化できる■ Masterの負荷を低減– Scheduler / Executor のシンプルな API■ 豊富な言語サポート■ 豊富なフレームワークのサポート– きれいなC++で書かれている■Mesosの残念なところ– 高可用動作にはZooKeeperが必要– マルチDCを明示的にはサポートしていない– フレームワークもミドルウェアなので、作るのは簡単だがテストしづらい
Copyright © 2012 Nautilus Technologies, Inc. All rights reserved.NAUTILUS 15Proprietary & Confidential典型的なスケジューリング■アプリケーションがスケジューラに「リソースをくれ」と頼む■スケジューラは手持ちからアプリケーションに渡せるリソースを渡す■リソースがない場合は、待たせるまたは失敗■Cons:– スケジューリングも同時に行うためスケジューラのMasterの負荷が高くなる– アプリケーションがバラバラにリソース要求をしてくるのでアプリケーション間のリソース最適化をしにくい– 全てのアプリケーションに同じアルゴリズムでリソース配分を行うので、スケジューラ側で最適化をしやすいが、それがアプリケーションにとってよいとは限らない
Copyright © 2012 Nautilus Technologies, Inc. All rights reserved.NAUTILUS 16Proprietary & ConfidentialMesosのResource Offer■“Two-level Scheduling”■リソース管理とスケジューリングの分離■Masterが各Frameworkに「このリソースいる?」と尋ねてまわる■Frameworkは、その中から必要な分だけ使う■いらない分は次のFrameworkにOfferを出す■Pros:– 余っている分のリソースがアプリケーションに全て伝わるので、アプリケーション側で最適化をしやすい■Cons:– OfferをもらうまでFrameworkは待たなければいけない
Copyright © 2012 Nautilus Technologies, Inc. All rights reserved.NAUTILUS 17Proprietary & Confidentialタスク起動の仕組みMasterAgent ExecutorAgent ExecutorFrameworkScheduler1. Resource Offer2. Accept Offer3. Launch Task4. Fork & Exec4. Fork & Exec5. Status Update5. Status Update•Executorは daemon でもOK•Executorは ただのコマンドでもOK•Executorは Docker イメージでもOK•Framework SchedulerはMarathonで管理
Copyright © 2012 Nautilus Technologies, Inc. All rights reserved.NAUTILUS 18Proprietary & ConfidentialFrameworks■Aurora, Marathon– プロセス管理やオートスケール、故障時の再起動などをしてくれるサービススケジューラ■Airflow– ワークフローエンジン■Spark, Hadoop■MPI– HPC向け分散処理フレームワーク■Chronos– 高可用クラスタCron■Jenkins■Cassandra■Elasticsearchhttp://mesos.apache.org/documentation/latest/frameworks/
Copyright © 2012 Nautilus Technologies, Inc. All rights reserved.NAUTILUS 19Proprietary & ConfidentialFrameworkを作ろう!■Frameworkを作らないとMesosを使いきったとはいえない■Scheduler クラスを継承してコールバックを実装■Scheduler driverを叩いて命令を伝える■Executor クラスを継承してコールバックを実装■Executor driverを叩いて命令を伝える■うごかす
Copyright © 2012 Nautilus Technologies, Inc. All rights reserved.NAUTILUS 20Proprietary & 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■…
Copyright © 2012 Nautilus Technologies, Inc. All rights reserved.NAUTILUS 21Proprietary & ConfidentialDatacenter scheduling■沢山あるコンピュータに、どこにどれだけアプリケーションを効率的かつ安定して割り当てるか■グリッドの時代からある、古くて新しい問題– ユースケースごとに最適化した解があり、目的に特化することが多い■YARN– Hadoop MapReduce からスケジューラー相当のコードを切り離して汎用化したもの。■Borg– Googleが世界中にある自社DC内のコンピュータと、その上で動くアプリケーションを管理するためのスケジューラ■似ているけど全然違うもの– OpenStack, CloudStack, Kubernetes, Ansible, Chef,CoreOS
Copyright © 2012 Nautilus Technologies, Inc. All rights reserved.NAUTILUS 22Proprietary & ConfidentialQuestions?お知らせ:Mesos勉強会■近いうちにやります■都内、平日夕方
Copyright © 2012 Nautilus Technologies, Inc. All rights reserved.NAUTILUS 23Proprietary & ConfidentialAgenda1. 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, CloudStack9. Mesos勉強会やるよ!!