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
Introducing Retz
Search
UENISHI Kota
September 06, 2017
Technology
5
1.2k
Introducing Retz
Slides in db tech showcase 2017
UENISHI Kota
September 06, 2017
Tweet
Share
More Decks by UENISHI Kota
See All by UENISHI Kota
Storage Systems in Preferred Networks
kuenishi
0
60
Metadata Management in Distributed File Systems
kuenishi
2
530
Behind The Scenes: Cloud Native Storage System for AI
kuenishi
2
420
Apache Ozone behind Simulation and AI Industries
kuenishi
0
420
Distributed Deep Learning with Chainer and Hadoop
kuenishi
3
1.3k
A Few Ways to Accelerate Deep Learning
kuenishi
0
1.1k
Introducing Retz and how to develop practical frameworks
kuenishi
3
760
Formalization and Proof of Distributed Systems (ja)
kuenishi
10
6.5k
Mesos Frameworkの作り方 (How to Make Mesos Framework)
kuenishi
7
2.4k
Other Decks in Technology
See All in Technology
製造業から学んだ「本質を守り現場に合わせるアジャイル実践」
kamitokusari
0
560
フルカイテン株式会社 エンジニア向け採用資料
fullkaiten
0
10k
2025年 山梨の技術コミュニティを振り返る
yuukis
0
150
AWS re:Invent 2025 を振り返る
kazzpapa3
2
110
20251225_たのしい出張報告&IgniteRecap!
ponponmikankan
0
110
AIエージェントを5分で一気におさらい!AIエージェント「構築」元年に備えよう
yakumo
1
150
Introduction to Sansan for Engineers / エンジニア向け会社紹介
sansan33
PRO
5
61k
コールドスタンバイ構成でCDは可能か
hiramax
0
130
SES向け、生成AI時代におけるエンジニアリングとセキュリティ
longbowxxx
0
310
歴史から学ぶ、Goのメモリ管理基礎
logica0419
14
2.6k
会社紹介資料 / Sansan Company Profile
sansan33
PRO
11
390k
Java 25に至る道
skrb
3
200
Featured
See All Featured
The Mindset for Success: Future Career Progression
greggifford
PRO
0
210
Building Experiences: Design Systems, User Experience, and Full Site Editing
marktimemedia
0
370
Faster Mobile Websites
deanohume
310
31k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
37
6.2k
Producing Creativity
orderedlist
PRO
348
40k
My Coaching Mixtape
mlcsv
0
23
XXLCSS - How to scale CSS and keep your sanity
sugarenia
249
1.3M
What Being in a Rock Band Can Teach Us About Real World SEO
427marketing
0
160
30 Presentation Tips
portentint
PRO
1
180
How to Ace a Technical Interview
jacobian
281
24k
Into the Great Unknown - MozCon
thekraken
40
2.2k
Self-Hosted WebAssembly Runtime for Runtime-Neutral Checkpoint/Restore in Edge–Cloud Continuum
chikuwait
0
280
Transcript
Copyright © 2017 Nautilus Technologies, Inc. All rights reserved. NAUTILUS
Introducing Retz 2017/9/6 db tech showcase 2017 Kota Uenishi 株式会社ノーチラス・テクノロジーズ http://www.nautilus-technologies.com/ mailto:
[email protected]
Tel: 03-6712-0636 Fax: 03-6712-0664 Visit https://goo.gl/B7qhtE for online slides
Copyright © 2017Nautilus Technologies, Inc. All rights reserved. NAUTILUS 2
はじめに ▪これは分散スケジューラMesosの紹介という、dbts 2016での発表 の続編です ▪バッチジョブのよいスケジューラがない問題を解決するRetzという Mesos Frameworkを開発し、OSSとして公開しました ▪Retzの機能と⽬的、事例などを紹介します
Copyright © 2017Nautilus Technologies, Inc. All rights reserved. NAUTILUS 3
Spark YARN ▪基幹業務システム向けのモデリング⾔語、DSLとコンパイラなどの 開発環境 ▪基幹バッチ処理に必要なテスト・実⾏環境・運⽤環境 ▪各種データベース、データ形式のドライバも同梱 ▪各種分散処理システム、DAGエンジンに(順次)対応 n MapReduce, Spark 向けコードをAsakusaのコンパイラが⾃動⽣成・最適化 •データモデル定義 •外部システム連携 •Asakusa DSL •Operator DSL •自動テスト •バッチ実行ツール •Flow DSL •Batch DSL • MapReduce •コンパイラ •DMDL •DMDL •コンパイラ •TestDriver •ThunderGate •WindGate •Direct I/O •YAESS •EXCEL •テンプレート •実行エンジン •スモールジョブ 実行エンジン Apache Hadoop CDH MapR HDP Amazon EMR M3BP コンパイラ 基幹業務向けバッチ開発フレームワーク Asakusa •Spark •コンパイラ
Copyright © 2017Nautilus Technologies, Inc. All rights reserved. NAUTILUS 4
コードを変更せずにエンジンを切り替える クラウド 分散環境 分散処理フレームワーク 商用ディストリビューション シングルノード 並列環境 並列処理 フレームワーク &実行基盤 M3BP クラウドサービス Amazon EMR Azure HDInsight データフロー DSL / コンパイラ インフラ ストラクチャ 並列・分散処理 ミドルウェア 開発 フレームワーク リファレンス実装 オンプレミス ユースケースに合わせて必要な性能特性を持ったエンジンを利用する
Copyright © 2017Nautilus Technologies, Inc. All rights reserved. NAUTILUS 5
Asakusa on M3BP開発の背景 ▪単体コンピュータの性能が上がってきた – NUMA時代: RAMは 512GB ~ 2TB – 2ソケット、22コア、HTT が当たり前に ▪ e.g. Xeon E7-8894 v4 は 24コア(48 w/ HTT) – データが全てメモリに乗る規模なら、マルチコアを使いこなせばスケー ルアップでバッチ処理の性能向上が簡単にできる時代に – バスの通信はDC内のネットワーク通信よりも1000倍速い ▪重要なバッチ処理のうち、少なくない割合がビッグデータではない ▪個別対応ではなくフレームワークでの対応が望ましい – アプリケーションを書き換えるのは難しい – Spark local modeはJVM – バスがネックになるレベルだと JVMはGC と reference hellが… – Asakusaならエンジンを付け替えるだけでアプリの変更は不要
Copyright © 2017Nautilus Technologies, Inc. All rights reserved. NAUTILUS 6
スケジューラがない! ▪リソーススケジューラ(ジョブスケジューラ)がないとリソース利 ⽤率が上がらない≒常に余剰リソースを抱えることになる ▪Jenkins – 柔軟性が⾼くプラグインも豊富 – ジョブキューとしては不⼗分 ▪YARN (Apache Hadoop) – よくも悪くもHadoop系プロダクトがプライマリターゲット ▪Apache Mesos – 完成度が⾼い、⾃由度も⾼い – エコシステムも発達 – ⾃分でスケジューラ作らないといけない
Copyright © 2017Nautilus Technologies, Inc. All rights reserved. NAUTILUS 7
Apache Mesosは何をしてくれるの? ▪リソース管理 – 管理下の全てのマシンがどのような計算資源を持っているかを把握 ▪ ⾃動認識 and ⼿動で指定 – 各種計算資源の抽象化、数字化 ▪ e.g., CPU=24, mem=128gb, disk=1024gb, gpu=4, … – 管理下のマシン(=計算資源)の死活監視 ▪スケジューリング – アプリケーションに計算資源を割り当てる (Offer) – アプリケーションが利⽤を宣⾔(Accept)した計算資源上でタスクを起動 – タスクのざっくりとした状態監視、成否の通知(Status update)
Copyright © 2017Nautilus Technologies, Inc. All rights reserved. NAUTILUS 8
タスク起動の仕組み 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 © 2017Nautilus Technologies, Inc. All rights reserved. NAUTILUS 9
Mesos Framework API の基本的な使い⽅ ▪Scheduler Interface でMesosからの通知を受け取る – Offerが来た – タスクが始まった / 終わった / 失敗した – Mesosと切れた – Agentが死んだ ▪Scheduler Driver でMesosにリクエストを送る – Offerを Accept / Decline する – Mesosとの接続を切る Framework Scheduler Driver Scheduler Interface callback
Copyright © 2017Nautilus Technologies, Inc. All rights reserved. NAUTILUS 10
Retz ( github.com/retz ) ▪いわゆる「ジョブキュー」 ▪ジョブを渡す→リソースが空い たら順番に実⾏してくれる ▪Mesos を使いやすくする – ⾮同期なScheduler APIを独⾃の同期APIに変換 – Mesos API と UI の完全隠蔽を⽬指す – 業務⽤ジョブスケジューラのための実⽤性 ▪機能 – ジョブの登録、削除、⼀覧 – マルチユーザー対応(Mesosのユーザー追加は⼤げさ…) – ジョブ優先制御、カスタムスケジューリング実装のプラグイン – GPUリソース、カスタム attributes 指定 – Dockerコンテナ上での実⾏(Docker Volumesも) – 障害時の⾃動再実⾏
Copyright © 2017Nautilus Technologies, Inc. All rights reserved. NAUTILUS 11
RetzとMesosの関係 ▪MesosはいわゆるMulti-layer scheduler ▪カーネルとアプリケーション(ライブラリ)の関係に似ている Linux Kernel Apache Mesos Userland Program Mesos Framework Computer Computers CPU scheduling, Memory allocation Etc… Mesos Framework API POSIX API System calls
Copyright © 2017Nautilus Technologies, Inc. All rights reserved. NAUTILUS 12
Retz の基本的な使い⽅ ▪CUI / ライブラリを使ってAPIを同期的に呼び出す – ジョブ実⾏依頼 – ジョブステータス確認 – ジョブ強制終了 – ジョブ結果取得 User program POST /job GET /job/12 GET /job/12/file
Copyright © 2017Nautilus Technologies, Inc. All rights reserved. NAUTILUS 13
マルチユーザー ▪Retzに対するアクセス権(クラスタのリソース使⽤権)を正しく管 理することが⽬的 ▪User Name / Access Secret のペアでユーザーを管理 ▪他⼈のジョブの内容や結果などは⾒せない ▪リソース分離をする ▪AWSっぽいAPI 認証 – HTTP Authorizationヘッダを利⽤ – Authorization: Retz-auth-v1 AccessKey:Signature – Signature = Base64( HMAC-SHA1( YourAccessSecret, UTF- 8-Encoding-Of( StringToSign ) ) ); – StringToSign = HTTP-Verb + "\n" + Content-MD5 + "\n" + Date + "\n" + Resource; ▪認可はまだない
Copyright © 2017Nautilus Technologies, Inc. All rights reserved. NAUTILUS 14
カスタマイズ可能なスケジューリング ▪デフォルトはFIFO – retz.planner.name = fifo ▪優先制御も可能 – ジョブに優先度を指定するフィールドがある – retz.planner.name = priority ▪複雑なスケジューリングアルゴリズムをプラグイン可能 – 実装例: Github.com/retz/retz-random-planner – retz.planner.name = com.example.your.own.MyPlanner – retz.classpath = /opt/path/to/your/classes ▪ビルトインのスケジューリングアルゴリズムを増やしていきたい
Copyright © 2017Nautilus Technologies, Inc. All rights reserved. NAUTILUS 15
GPUリソース、カスタムリソース ▪NVIDIA GPUはMesosがネイティブ対応 – CLIでは --gpu 2 などとして指定するだけ – ジョブ内では指定した本数しか⾒えなくなる ▪カスタムリソースはMesos AgentにAttributeとして都度定義する – Java API では利⽤可能 – CLIでは未実装 (0.4.0~) – 組み込みのPlannerでは利⽤不可 – カスタムPlannerで利⽤⽅法を⾃前で記述
Copyright © 2017Nautilus Technologies, Inc. All rights reserved. NAUTILUS 16
障害時の⾃動的な再実⾏ ▪基本的にRetzが⾃動的に再実⾏ – ジョブ実⾏中にMesos Agentが故障した場合 – 実⾏中にMesos Master などが故障した場合 – Retzが故障した場合 ▪ Retzを再起動した時点でジョブの状態確認が⾛る ▪可能な限り⼆重実⾏を防ぐようにしているが、どうしても避けられ ないケースがあるのでアプリ側でも注意が必要 ▪再実⾏されないケース – ジョブが終了したが⾮0を返した場合 – ジョブがOOM等で終了した場合 Master Failure Reschedule
Copyright © 2017Nautilus Technologies, Inc. All rights reserved. NAUTILUS 17
事例
Copyright © 2017Nautilus Technologies, Inc. All rights reserved. NAUTILUS 18
Retz@さくらインターネット様 (1/2) ▪データセンターの原価計算システム [1] – ⽣データ 500GB / day – ⽇次で数百ジョブ、⽉次で数百ジョブ ▪ Asakusa on Spark から Asakusa on M3BP に移⾏ – 全てのジョブがインメモリで処理できる程度にコンピュータの性能が向 上してきた – YARNのようなスケジューラーがないのでMesos – いざというときもMesos上でSparkを⾛らせることができる – Sparkだと数⼗分かかるジョブもあった •MapR FS •YARN (Apache Hadoop) •Asakusa on Spark •Jenkins •MapR FS •Retz / Apache Mesos •Asakusa on M3BP •Digdag [1] http://knowledge.sakura.ad.jp/event/3766/
Copyright © 2017Nautilus Technologies, Inc. All rights reserved. NAUTILUS 19
Retz@さくらインターネット様 (2/2) ▪サーバー台数 – 20台以上 => 5台以下 ▪⼀⽇のジョブ数 – 最⼤で2000程度 ▪ジョブの実⾏待ち時間 – 多くが10~20分程度、中央値約8.2分 ▪ジョブの実⾏時間 – ほとんどが3分以内、中央値15.0秒
Copyright © 2017Nautilus Technologies, Inc. All rights reserved. NAUTILUS 20
Retz & Mesos @ Preferred Networks ▪社内⽤の実験環境 ▪ハードウェア環境とソフトウェア・パッケージの組み合わせを指定 したDockerの中で実験⽤プログラムを実⾏ ▪Mesos の複雑なAPIを隠蔽してシンプルなジョブスケジューリング をしてくれる ▪耐障害性も担保されていて、タスクが失敗しても、ノードが故障し ても⾃動的にRetzが再実⾏してくれる ▪⾃分たちの環境に合わせた独⾃のPlannerを作ってプラグインして いる ▪Retzに多くのコントリビューションをしてくれています
Copyright © 2017Nautilus Technologies, Inc. All rights reserved. NAUTILUS 21
最後にひとつ: Retz Digdag Plugin ▪DigdagのワークフローをRetz経由でMesos上で実⾏する – RetzのJavaクライアントでプログラミングしなくてよい – RetzのCLIを覚える必要がない – 結局ワークフローにして運⽤するので ▪こんな感じでワークフローに組み込める +simple_app: retz_run>: /opt/app/simple-app.sh +heavy_batch: retz_run>: /opt/app/heavy-batch.sh ${session_date} cpu: 8 mem: 16g priority: 1 timeout: 30 https://github.com/retz/retz-digdag-plugin
Copyright © 2017Nautilus Technologies, Inc. All rights reserved. NAUTILUS 22
まとめ ▪バッチジョブスケジューラRetzの機能と事例を紹介 ▪1台のマシンで動くジョブ:バッチ処理サーバーが m:n で沢⼭ある 場合に⾼可⽤にジョブを実⾏できる ▪Asakusa / Spark / Digdag / Mesos の相性が⾮常によい 【宣伝】ノーチラス・テクノロジーズでは • バッチ処理およびHadoopやSparkなど周辺システムのコンサルティ ング、受託開発、運用 • Asakusa Frameworkの開発と運用の商用サポート • RetzおよびApache Mesosの商用サポート などを行っています。お気軽にお問い合わせ下さい
Copyright © 2017Nautilus Technologies, Inc. All rights reserved. NAUTILUS 23
QUESTIONS?
Copyright © 2017Nautilus Technologies, Inc. All rights reserved. NAUTILUS 24
APPENDIX
Copyright © 2017Nautilus Technologies, Inc. All rights reserved. NAUTILUS 25
Roadmap (必要に応じて) ▪⾼可⽤性、耐障害性 ▪Fair scheduling ▪DCOSパッケージ化
Copyright © 2017Nautilus Technologies, Inc. All rights reserved. NAUTILUS 26
Retz & Mesosのプロセス構成 Master Agent Executor Executor Executor Executor Agent Executor Executor Executor Executor Agent Executor Executor Executor Executor •…....... Framework Scheduler (Marathon) Retz ZooKeeper ZooKeeper ZooKeeper