Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Onyx
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Abhishek Anand Amralkar
March 16, 2019
Programming
23
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Onyx
This is the presentation for the talk on Onyx which I presented in Pune Data Conference 2019.
Abhishek Anand Amralkar
March 16, 2019
More Decks by Abhishek Anand Amralkar
See All by Abhishek Anand Amralkar
Monitoring_With_Riemann.pdf
abhishekamralkar
0
21
Other Decks in Programming
See All in Programming
KiroのSpecで「五目並べ」を作ってみる
satoshi256kbyte
1
380
3回つくってわかった、 定期実行ジョブ基盤の本質情報
takai
0
480
残高管理から台帳サービスへの進化
artoy
1
200
最近”作らせてる” ローカルAIアプリの話
akit37
0
470
SalesForceを内製化!? ~ HR事業を支える顧客管理基盤のインフラを大公開 ~
oku053
0
180
Kotlinの15年とServer-Side Kotlin
n_takehata
1
150
作って学ぶSpring BootのAuto Configuration / JJUG Night Seminar 2026-10-19
rshindo
0
150
PumaからFalconに移行したRailsアプリケーションでの実践
falcon8823
0
170
月間100万人のサービス刷新で、 技術選定をHonoに振り切った話
yutobara
8
6.6k
AI時代のコードレビューは人に向けるな、仕組みに向けろ
texmeijin
5
3.7k
When benchmarks go bad - what I learned from measuring performance wrong
hollycummins
0
220
golang-bob.pdf
iwatsukayura
0
130
Featured
See All Featured
How to Grow Your eCommerce with AI & Automation
katarinadahlin
PRO
2
330
エンジニアに許された特別な時間の終わり
watany
109
250k
Building Flexible Design Systems
yeseniaperezcruz
330
41k
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
The Director’s Chair: Orchestrating AI for Truly Effective Learning
tmiket
1
330
Rebuilding a faster, lazier Slack
samanthasiow
85
9.7k
DevOps and Value Stream Thinking: Enabling flow, efficiency and business value
helenjbeal
2
410
Tips & Tricks on How to Get Your First Job In Tech
honzajavorek
1
800
The innovator’s Mindset - Leading Through an Era of Exponential Change - McGill University 2025
jdejongh
PRO
1
380
Darren the Foodie - Storyboard
khoart
PRO
4
4k
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
11
1.1k
B2B Lead Gen: Tactics, Traps & Triumph
marketingsoph
1
280
Transcript
Onyx Distributed Computation for the Cloud
Different Computation Engines • Apache Spark ◦ Large Scale Data
Processing ◦ Streaming Support ◦ Micro Batch Support ◦ Written in Scala ◦ Supports Python and Java too
Different Computation Engines • Apache Storm ◦ Stream Data Processing
◦ Written in Java
Different Computation Engines • Apache Flink ◦ Stream first and
then batch ◦ Streaming Data Flow Engine ◦ Written in JAVA and Scala
Why Clojure? Clojure is..... • A dialect of Lisp •
Interop • Emphasizes functional programming • Runs on the Java Virtual Machine • Designed for Concurrency
Just Enough Clojure!
Truthiness What is truthy? • true • “False” • [
] • (= 1 1) • 0 • 1 What is falsey? • false • nil • ( = 1 2 )
Clojure Collections Lists • Singly linked lists • First item
in calling position • Heterogeneous elements ‘( 1 2 3 4 “foo” :bar ) Vectors • Simply evaluate each item in order. • Fast looks ups • Heterogeneous elements [ 1 2 3 4 “foo” :bar ]
Clojure Collections Maps • Maps store Keys and Values {:name
“abhishek”} Sets • Store zero or more unique items #{ :a :b 1 2 3 }
Clojure Functions • First Class • Higher-Order • Pure Functions
def or defn? • Both bind to symbol or name • def is only evaluated once • defn is evaluated every time it is called
Hello Onyx!
What Onyx brings? • Clojure Philosophy • How to rethink
about data? • How to program your programs in Distributed Systems
What Onyx is? • Masterless • Cloud Scale • Fault
Tolerant • High Performance Distributed Computation System • Batch and Stream hybrid processing model • Written in Clojure
Onyx Program • Read data from the source • Transform
the data into various sources • Write the data into the target
WorkFlow :in | :split-sentence | :count-words | :output (def workflow
[[:in :split-sentence] [:split-sentence :count-words] [:count-words :out]])
Segment • Segments are Clojure maps { :increment 42}
Task • input • processing • output
Catalog (def catalog [{:onyx/name :in :onyx/plugin :onyx.plugin.core-async/input :onyx/type :input :onyx/medium
:core.async :onyx/batch-size batch-size :onyx/max-peers 1 :onyx/doc "Reads segments from a core.async channel"}
Catalog {:onyx/name :split-sentence :onyx/fn :aggregation.core/split-sentence :onyx/type :function :onyx/batch-size batch-size}
Catalog {:onyx/name :count-words :onyx/fn :clojure.core/identity :onyx/type :function :onyx/group-by-key :word :onyx/flux-policy
:kill :onyx/min-peers 1 :onyx/batch-size 1000}
Catalog {:onyx/name :out :onyx/plugin :onyx.plugin.core-async/output :onyx/type :output :onyx/medium :core.async :onyx/max-peers
1 :onyx/batch-size batch-size :onyx/doc "Writes segments to a core.async channel"}])
Flow Conditions [{:flow/from :input-stream :flow/to [:process-children] :my/max-child-age 17 :flow/predicate [:my.ns/child?
:my/max-child-age] :flow/doc "Emits segment if this segment is a child."}]
Windows • Fixed • Sliding • Global • Session
Triggers • :timer • :segment • :punctuation • :watermark
Job {:workflow workflow :catalog catalog :lifecycles lifecycles :windows windows :triggers
triggers :task-scheduler :onyx.task-scheduler/balanced}
Onyx Architecture Overview High Level Components • Peer • Zookeeper
• Aeron
Peer • Peer is the node in cluster that does
the task.
None
Sneak Peak into Zookeeper • Apache Zookeeper is open source
tool from Apache. • Originally developed at Yahoo. • Zookeeper is written in Java and it is platform independent. • Zookeeper service can run in 2 mode ◦ Standalone ◦ Quorum
How to interact with Zookeeper? • Zookeeper CLI ◦ create
/avengers "infinitywar" ◦ get /avengers ◦ get /avengers [watch] 1 ◦ set /avengers endgame ◦ delete /avengers ◦ ls / ◦ stat /avengers
How to interact with Zookeeper? • Exhibitor ◦
[email protected]
:soabase/exhibitor.git
Aeron • Messaging layer in Onyx • Takes care of
transfer of segments between peers.
3-Phase Cluster Join Strategy
3-Phase Cluster Join Strategy
3-Phase Cluster Join Strategy
3-Phase Cluster Join Strategy
Job Schedulers • Greedy • Balance • Percentage
Task Schedulers • Balanced • Percentage • Colocation
Tags {... :onyx/tenancy-id "my-cluster" :onyx.peer/tags [:datomic] ... }
Official Plugins (in/out) • onyx-seq • onyx-durable-queue • onyx-elasticsearch •
onyx-http • onyx-amazon-sqs • onyx-amazon-s3
Official Plugins (in/out) • onyx-core-async • onyx-kafka • onyx-kafka-0.8 •
onyx-datomic • onyx-redis • onyx-sql • onyx-bookkeeper
Onyx Deployment • Docker • Kubernetes • Apache Mesos •
DCOS • Shared File System like AWS S3 • Any Cloud VM
Onyx Job Dashboard
Thank You
About Me (def about-me {:name “Abhishek Anand Amralkar” :shortname “@aaa”
:from “Talentica Software Pvt. Ltd” :social { :blog “https://medium.com/@aamralkar” :twitter “https://twitter.com/aamralkar” :github “https://github.com/abhishekamralkar”} })