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
Building a framework on Mesos: A case study wit...
Search
Vinod Kone
July 23, 2015
Technology
0
100
Building a framework on Mesos: A case study with Jenkins
Vinod Kone
July 23, 2015
Tweet
Share
More Decks by Vinod Kone
See All by Vinod Kone
Nested Containers & Task Groups
vinodkone
0
55
Mesos 1.0
vinodkone
1
60
Fault Tolerance In Mesos
vinodkone
0
98
The Future Data Center
vinodkone
0
38
Mesos Framework API v1
vinodkone
0
45
Other Decks in Technology
See All in Technology
Microsoft Fabric ガバナンス設計の一歩目を考える
ryomaru0825
1
240
Contract One Engineering Unit 紹介資料
sansan33
PRO
0
7k
Railsの限界を超えろ!「家族アルバム みてね」の画像・動画の大規模アップロードを支えるアーキテクチャの変遷
ojima_h
3
280
All About Sansan – for New Global Engineers
sansan33
PRO
1
1.2k
激動の時代、新卒エンジニアはAIツールにどう向き合うか。 [LayerX Bet AI Day Countdown LT Day1 ツールの選択]
tak848
0
490
(HackFes)米国国防総省のDevSecOpsライフサイクルをAWSのセキュリティサービスとOSSで実現
syoshie
5
640
Recoil脱却の現状と挑戦
kirik
2
110
DATA+AI SummitとSnowflake Summit: ユーザから見た共通点と相違点 / DATA+AI Summit and Snowflake Summit
nttcom
0
150
サービスを止めるな! DDoS攻撃へのスマートな備えと最前線の事例
coconala_engineer
2
220
PHPからはじめるコンピュータアーキテクチャ / From Scripts to Silicon: A Journey Through the Layers of Computing
tomzoh
2
370
名刺メーカーDevグループ 紹介資料
sansan33
PRO
0
830
Introduction to Sansan, inc / Sansan Global Development Center, Inc.
sansan33
PRO
0
2.7k
Featured
See All Featured
Bootstrapping a Software Product
garrettdimon
PRO
307
110k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
248
1.3M
The Illustrated Children's Guide to Kubernetes
chrisshort
48
50k
Large-scale JavaScript Application Architecture
addyosmani
512
110k
The Cost Of JavaScript in 2023
addyosmani
51
8.6k
The Pragmatic Product Professional
lauravandoore
35
6.8k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
357
30k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
30
2.2k
Testing 201, or: Great Expectations
jmmastey
43
7.6k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
For a Future-Friendly Web
brad_frost
179
9.8k
The Straight Up "How To Draw Better" Workshop
denniskardys
235
140k
Transcript
Building a framework on Mesos: A case study with Jenkins
@vinodkone
Architecture Master (leader) Spark Scheduler Hadoop Scheduler Jenkins Scheduler Master
(standby) Master (standby) ZooKeeper Slave Hadoop Executor Task1 Spark Executor Task1 Slave Hadoop Executor Task1 Task2 Slave Jenkins Executor Task1
• Scheduler • receives resource offers • launches tasks •
Executor * • executes tasks • launched by the slave • * optional (Command Executor) Slave cpus: 10, mem: 2GB Anatomy of a Framework Scheduler Master Offer cpus:10 mem: 2GB Executor Task cpus: 2 mem: 1GB
Writing a Framework • APIs and drivers • C++, Java,
Python • see example frameworks (src/examples) • Open Source frameworks • Scala: Chronos, Spark • Java: Hadoop, Jenkins, Storm • Python: dpark
Scheduler Callbacks registered(frameworkId, masterInfo) resourceOffers(offers) statusUpdate(taskStatus) ...more Actions launchTasks(offerId, taskInfos,
filters) killTask(taskId) declineOffer(offerId, filters) ...more
Resource offers @override public void resourceOffers(SchedulerDriver driver, List<Offer> offers) {
for (Offer offer : offers) { bool matched = false; for (Request request : requests) { if (matches(offer, request) { matched = true; createMesosTask(offer, request); requests.remove(request); break; } } } } driver.launchTasks(offer.getId(), tasks, filters)
Executor Callbacks registered(executorInfo, frameworkInfo, slaveInfo) launchTask(taskInfo) killTask(taskId) ...more Actions sendStatusUpdate(taskStatus)
sendFrameworkMessage(data) ...more
Status Updates • Executor to inform task state to scheduler
• non-terminal updates (e.g., TASK_RUNNING) • terminal updates (e.g., TASK_FINISHED) • TASK_LOST: (e.g., slave terminated) • Status updates are crucial! • e.g., terminal update frees up resources
Things to keep in mind • Callbacks are single threaded
• i.e., one callback at a time • should not block in a callback! • Actions are asynchronous • e.g., sendStatusUpdate() enqueues the update
Jenkins on Mesos +
Motivation • Jenkins clusters are statically allocated • order of
magnitude smaller than compute cluster • Over utilized • very high build times • Under utilized • wastage of resources source: builds.apache.org
Goals • Make Jenkins elastic • auto scale based on
workload • Harness the compute cluster • already spent $$$ on it • Resource isolation • helps with capacity planning
Jenkins Framework • Jenkins Scheduler • implemented as a Jenkins
plugin • launches Jenkins slaves based on workload • kills idle Jenkins slaves • Command Executor
Slave Architecture Jenkins Master Job Queue Mesos Plugin Jenkins Scheduler
Mesos Master Cloud Command Executor Jenkins Slave JN LP Jenkins
Installing the plugin • Getting the plugin • source code
in mesos repo (git.apache.org/mesos) • build yourself : $ make jenkins • download directly from Jenkins repo (soon) • Installing the plugin • from Jenkins Web UI •$ cp mesos.hpi ${JENKINS_HOME}/plugins
Configuring the plugin • Go to /configure on Jenkins •
add a new Mesos Cloud • give the address of Mesos master • Label the jobs as “mesos” • Caveat: experimental release!
Demo
Questions? @ApacheMesos http://mesos.apache.org