Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
分散スケジューラMesosの紹介
Search
UENISHI Kota
July 14, 2016
Technology
2
1.3k
分散スケジューラMesosの紹介
db tech showcase 2016 のスライド
UENISHI Kota
July 14, 2016
Tweet
Share
More Decks by UENISHI Kota
See All by UENISHI Kota
Metadata Management in Distributed File Systems
kuenishi
2
460
Behind The Scenes: Cloud Native Storage System for AI
kuenishi
2
320
Apache Ozone behind Simulation and AI Industries
kuenishi
0
280
Distributed Deep Learning with Chainer and Hadoop
kuenishi
3
1.1k
A Few Ways to Accelerate Deep Learning
kuenishi
0
980
Introducing Retz
kuenishi
5
1k
Introducing Retz and how to develop practical frameworks
kuenishi
3
660
Formalization and Proof of Distributed Systems (ja)
kuenishi
10
6.2k
Mesos Frameworkの作り方 (How to Make Mesos Framework)
kuenishi
7
2.3k
Other Decks in Technology
See All in Technology
Perlで始めるeBPF: 自作Loaderの作り方 / Getting started with eBPF in Perl_How to create your own Loader
takehaya
1
970
LINE-ChatGPT 倫理問題を整理する全力肯定彼氏くん [LuC4]に訪れたサービス開始以来の最大の危機
o_ob
2
160
ゼロから実装まで!機械学習入門
natsuki0726
0
200
令和最新版 Perlコーディングガイド
anatofuz
4
3.9k
怖くないオフライン機能開発 〜基本的な技術で実現する現場向けオフライン機能 / Developing offline functions without fear ~ Offline functions for the field realized with basic technology
kaminashi
1
110
SageMaker学習のツボ / The Key Points of Learning SageMaker
cmhiranofumio
0
200
【インフラエンジニアbooks】30分でわかる「AWS継続的セキュリティ実践ガイド」
hssh2_bin
5
1.7k
Azure Verified Moduleを触って分かった注目ポイント/azure-verified-module-begin
mhrtech
1
490
小さな勉強会の始め方、広げ方、あるいは友達の作り方 / How to Start, Grow, and Build Connections with Small Study Groups
ar_tama
6
3k
tenntennはなんでnewmoにnew社したの? - YAPC::Hakodate 2024
tenntenn
PRO
0
300
とある事業会社にとっての Kaggler の魅力
hakubishin3
5
970
これはPerl? それともRuby? クイズ〜〜〜〜〜!!!- Perl or Ruby Quiz
moznion
2
1.9k
Featured
See All Featured
Documentation Writing (for coders)
carmenintech
65
4.4k
In The Pink: A Labor of Love
frogandcode
139
22k
Learning to Love Humans: Emotional Interface Design
aarron
272
40k
Designing for Performance
lara
604
68k
The Mythical Team-Month
searls
218
43k
How GitHub Uses GitHub to Build GitHub
holman
473
290k
Fireside Chat
paigeccino
32
3k
How GitHub (no longer) Works
holman
311
140k
Teambox: Starting and Learning
jrom
132
8.7k
GitHub's CSS Performance
jonrohan
1030
450k
Raft: Consensus for Rubyists
vanstee
136
6.6k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
46
2k
Transcript
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
Copyright © 2012 Nautilus Technologies, Inc. All rights reserved. NAUTILUS
2 Proprietary & Confidential Operating System とは何だったのか CPU オペレーティングシステム アプリケーション システムコール POSIX API, ABI, libc 機械語 デバイスドライバ ファームウェア メモリ I/O アプリケーション アプリケーション アプリケーション アプリケーション アプリケーション アプリケーション ユーザ管理、隔離 多重化 プロセススケジューリング メモリ管理 IOスケジューリング
Copyright © 2012 Nautilus Technologies, Inc. All rights reserved. NAUTILUS
3 Proprietary & Confidential OSのない/ある時代のコンピュータの使い方 OSがない OSがある ユーザ管理 列に並んでログインを 待つ みんな同時ログイン プロセス多重化 列に並んでログインと 実行を待つ Runqueue上で待つ メモリ管理 他に誰もいない 仮想メモリ空間 IOスケジューラ 他に誰もいない IO queue上で待つ システムコール 都度プログラミング 統一されたAPI アプリケーション開発 手動アセンブリ コンパイラがABIを合 わせてくれる
Copyright © 2012 Nautilus Technologies, Inc. All rights reserved. NAUTILUS
4 Proprietary & Confidential OSのない/ある時代のコンピュータの使い方 OSがない OSがある スケジューリング ノンプリエンプティブ シリアル実行 実行可能なものから 順番 ジョブの予約 パンチカードを担当者 に渡す コマンド実行 ジョブの待ち時間 長い 短い リソース使用率 低い 高い
Copyright © 2012 Nautilus Technologies, Inc. All rights reserved. NAUTILUS
5 Proprietary & Confidential ビッグ!データ!時代!!はなんでも分散
Copyright © 2012 Nautilus Technologies, Inc. All rights reserved. NAUTILUS
6 Proprietary & Confidential “大規模” システムのシンプルさと効率のトレードオフ 管理しやすい シンプルな構成 リソース 利用効率 •運用のコスト高い •管理可能なスケールに限界 •システムの構成要素少ない •初期システム設計が高コスト •重厚長大になりがち •システムの構成要素多い •アプリケーションをノード分離 •リソース分離 •スタティックな構成 •手動の障害対応 •アプリケーションの分離 •アプリ同士のリソース共有 •ダイナミックな構成 •自動で障害対応
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台サーバー追加、どのアプリにどれだけ追加すればよいのか? – それぞれ別々にデプロイするのめんどくさい…
Copyright © 2012 Nautilus Technologies, Inc. All rights reserved. NAUTILUS
8 Proprietary & Confidential Mesos: DC用リソース管理&分散スケジューラ Apache Mesos は CPU, メモリ、ストレージなど、あらゆるリソースを(物理および仮想)マシンから抽象化し 耐障害性と可塑性のある分散システムを簡単かつ効率的にに構築、実行できるようになります
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を通じて、データセンタ丸ごと、クラウド環境まるごとの上にリソース管理とスケジューリングを提供します。
Copyright © 2012 Nautilus Technologies, Inc. All rights reserved. NAUTILUS
10 Proprietary & Confidential Mesos: まことしやかな噂@シリコンバレー 「Mesosって何?」 「GoogleのBorgみたいなもんだよ」
Copyright © 2012 Nautilus Technologies, Inc. All rights reserved. NAUTILUS
11 Proprietary & Confidential 分散スケジューラのない/ある時代のコンピュータの使い方 ない ある アプリケーション管理 別ノード コンテナ分離 リソース共有 別クラスタ 必要なときだけ確保 メモリ管理 別クラスタ 必要なときだけ確保 耐障害性 自前、アプリ毎、手動 自動、アプリごと 可塑性 ノード追加 予備リソース投入 アプリケーション開発 開発環境を維持 必要なときにデプロイ
Copyright © 2012 Nautilus Technologies, Inc. All rights reserved. NAUTILUS
12 Proprietary & Confidential 分散スケジューラのない/ある時代のコンピュータの使い方 OSがない OSがある スケジューリング スタティック ダイナミック ジョブの予約 前のジョブが終わった ら実行 リソース確保できたら 実行 ジョブの待ち時間 順番待ち 確保できるかぎりなし リソース使用率 低い 高い
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
Copyright © 2012 Nautilus Technologies, Inc. All rights reserved. NAUTILUS
14 Proprietary & Confidential Mesosの特徴 ▪いいところ – リソース管理とスケジューリングのモジュールの分離 - “Resource Offer” ▪ スケジューリングアルゴリズムを、目的に応じて切り替えたり最適化できる ▪ Masterの負荷を低減 – Scheduler / Executor のシンプルな API ▪ 豊富な言語サポート ▪ 豊富なフレームワークのサポート – きれいなC++で書かれている ▪Mesosの残念なところ – 高可用動作にはZooKeeperが必要 – マルチDCを明示的にはサポートしていない – フレームワークもミドルウェアなので、作るのは簡単だがテストしづらい
Copyright © 2012 Nautilus Technologies, Inc. All rights reserved. NAUTILUS
15 Proprietary & Confidential 典型的なスケジューリング ▪アプリケーションがスケジューラに「リソースをくれ」と頼む ▪スケジューラは手持ちからアプリケーションに渡せるリソースを渡す ▪リソースがない場合は、待たせるまたは失敗 ▪Cons: – スケジューリングも同時に行うためスケジューラのMasterの負荷が高くなる – アプリケーションがバラバラにリソース要求をしてくるのでアプリケーション間 のリソース最適化をしにくい – 全てのアプリケーションに同じアルゴリズムでリソース配分を行うので、スケジ ューラ側で最適化をしやすいが、それがアプリケーションにとってよいとは限ら ない
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は待たなければいけない
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で管理
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/
Copyright © 2012 Nautilus Technologies, Inc. All rights reserved. NAUTILUS
19 Proprietary & Confidential Frameworkを作ろう! ▪Frameworkを作らないとMesosを使いきったとはいえない ▪Scheduler クラスを継承してコールバックを実装 ▪Scheduler driverを叩いて命令を伝える ▪Executor クラスを継承してコールバックを実装 ▪Executor driverを叩いて命令を伝える ▪うごかす
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 ▪…
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
Copyright © 2012 Nautilus Technologies, Inc. All rights reserved. NAUTILUS
22 Proprietary & Confidential Questions? お知らせ:Mesos勉強会 ▪近いうちにやります ▪都内、平日夕方
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勉強会やるよ!!