SlideShare a Scribd company logo
A look under the hood at Apache
Spark's API and engine evolutions
Reynold Xin @rxin
2017-02-08, Amsterdam Meetup
About Databricks
Founded by creators of Spark
Cloud data platform
- Spark
- Interactive analysis
- Cluster management
- Production pipelines
- Data governance & security
Databricks Amsterdam R&D Center
Started in January
Hiring distributed systems &
database engineers!
Email me: rxin@databricks.com
SQL Streaming MLlib
Spark Core (RDD)
GraphX
Spark stack diagram
Frontend
(user facing APIs)
Backend
(execution)
Spark stack diagram
(a different take)
Frontend
(RDD, DataFrame, ML pipelines, …)
Backend
(scheduler, shuffle, operators, …)
Spark stack diagram
(a different take)
Today’s Talk
Some archaeology
- IMS, relational databases
- MapReduce
- data frames
Last 6 years of Spark evolution
Databases
IBM IMS hierarchical database (1966)
Image from https://stratechery.com/2016/oracles-cloudy-future/
Hierarchical Database
- Improvement over file system: query language & catalog
- Lack of flexibility
- Difficult to query items in different parts of the hierarchy
- Relationships are pre-determined and difficult to change
A look under the hood at Apache Spark's API and engine evolutions
“Future users of large data banks must be protected from having to
know how the data is organized in the machine. …
most application programs should remain unaffected when the
internal representation of data is changed and even when some
aspects of the external representation are changed.”
Era of relational databases (late 60s)
Two “new” important ideas
Physical Data Independence: The ability to change the physical data
layout without having to change the logical schema.
Declarative Query Language: Programmer specifies “what” rather than
“how”.
Why?
Business applications outlive the environments they were created in:
- New requirements might surface
- Underlying hardware might change
- Require physical layout changes (indexing, different storage medium, etc)
Enabled tremendous amount of innovation:
- Indexes, compression, column stores, etc
Relational Database Pros vs Cons
- Declarative and data independent
- SQL is the universal interface everybody knows
- Difficult to compose & build complex applications
- Too opinionated and inflexible
- Require data modeling before putting any data in
- SQL is the only programming language
Big Data, MapReduce,
Hadoop
Challenges Google faced
Data size growing (volume & velocity)
- Processing has to scale out over large clusters
Complexity of analysis increasing (variety)
- Massive ETL (web crawling)
- Machine learning, graph processing
The Big Data Problem
Semi-/Un-structured data doesn’t fit well with databases
Single machine can no longer process or even store all the data!
Only solution is to distribute general storage & processing over
clusters.
Google Datacenter
How do we program this thing?
19
Data-Parallel Models
Restrict the programming interface so that the system can do more
automatically
“Here’s an operation, run it on all of the data”
- I don’t care where it runs (you schedule that)
- In fact, feel free to run it twice on different nodes
- Siimlar to “declarative programming” in databases
A look under the hood at Apache Spark's API and engine evolutions
MapReduce Pros vs Cons
- Massively parallel
- Very flexible programming model & schema-on-read
- Extremely verbose & difficult to learn
- Most real applications require multiple MR steps
- 21 MR steps -> 21 mapper and reducer classes
- Lots of boilerplate code per step
- Bad performance
R, Python, data frame
Data frames in R / Python
> head(filter(df, df$waiting < 50)) # an example in R
## eruptions waiting
##1 1.750 47
##2 1.750 47
##3 1.867 48
Developed by stats community & concise syntax for ad-hoc analysis
Procedural (not declarative)
R data frames Pros and Cons
- Easy to learn
- Pretty fast on a laptop (or one server)
- No parallelism & doesn’t work well on big data
- Lack sophisticated query optimization
“Are you going to talk
about Spark at all
tonight!?”
Which one is better?
Databases, R, MapReduce?
Declarative, procedural, data independence?
Spark’s initial focus: a better MapReduce
Language-integrated API (RDD): similar to Scala’s collection library
using functional programming; incredibly powerful and composable
lines = spark.textFile(“hdfs://...”) // RDD[String]
points = lines.map(line => parsePoint(line)) // RDD[Point]
points.filter(p => p.x > 100).count()
Better performance: through a more general DAG abstraction, faster
scheduling, and in-memory caching
Programmability
WordCount in 50+ lines of Java MR
WordCount in 3 lines of Spark
Challenge with Functional API
Looks high-level, but hides many semantics of computation
• Functions are arbitrary blocks of Java bytecode
• Data stored is arbitrary Java objects
Users can mix APIs in suboptimal ways
map
filter
groupBy
sort
union
join
leftOuterJoin
rightOuterJoin
reduce
count
fold
reduceByKey
cogroup
cross
zip
sample
take
first
partitionBy
mapWith
pipe
save
...
groupByKey
Which Operator Causes Most Tickets?
Example Problem
pairs = data.map(word => (word, 1))
groups = pairs.groupByKey()
groups.map((k, vs) => (k, vs.sum))
Physical API:
Materializes all groups
as Seq[Int] objects
Then promptly
aggregates them
Challenge: Data Representation
Java objects often many times larger than underlying fields
class User(name: String, friends: Array[Int])
new User(“Bobby”, Array(1, 2))
User 0x… 0x…
String
3
0
1 2
Bobby
5 0x…
int[]
char[] 5
Recap: two primary issues
1. Many APIs specifies the “physical” behavior, rather than the
“logical” intent, aka not declarative enough.
2. Closures (user-defined functions and types) are opaque to the
engine, an as a result little room for improvement.
Sort Benchmark
Originally sponsored by Jim Gray to measure advancements in
software and hardware in 1987
Participants often used purpose-built hardware/software to compete
• Large companies: IBM, Microsoft, Yahoo, …
• Academia: UC Berkeley, UCSD, MIT, …
Sort Benchmark
• Past winners: Microsoft, Yahoo, Samsung, UCSD, …
1MB -> 100MB -> 1TB (1998) -> 100TB (2009)
Winning Attempt
Built on low-level Spark API and:
- Put all data in off-heap memory using sun.misc.Unsafe
- Use tight low level while loops rather than iterators
~ 3000 lines of low level code on Spark written by Reynold
On-Disk Sort Record:
Time to sort 100TB
2100 machines2013 Record:
Hadoop
2014 Record:
Spark
Source: Daytona GraySort benchmark, sortbenchmark.org
72 minutes
207 machines
23 minutes
Also sorted 1PB in 4 hours
How do we enable the
average users to win a
world record, using a few
lines of code?
Goals of last two year’s API evolution
1. Simpler APIs bridging the gap between big data engineering and
data science.
2. Higher level, declarative APIs that are future proof (engine can
optimize programs automatically).
Taking the best ideas from databases, big data, and data science
Structured APIs:
DataFrames + Spark SQL
DataFrames and Spark SQL
Efficient library for structured data (data with a known schema)
• Two interfaces: SQL for analysts + apps, DataFrames for programmers
Optimized computation and storage, similar to RDBMS
SIGMOD 2015
Execution Steps
Logical
Plan
Physical
Plan
Catalog
Optimizer
RDDs
…
Data
Source
API
SQL
Code
Generator
Data
Frames
DataFrame API
DataFrames hold rows with a known schema and offer relational
operations on them through a DSL
val users = spark.sql(“select * from users”)
val massUsers = users(users(“country”) === “NL”)
massUsers.count()
massUsers.groupBy(“name”).avg(“age”)
Expression AST
Spark RDD Execution
Java/Scala
frontend
JVM
backend
Python
frontend
Python
backend
opaque closures
(user-defined functions)
Spark DataFrame Execution
DataFrame
frontend
Logical Plan
Physical
execution
Catalyst
optimizer
Intermediate representation for computation
Spark DataFrame Execution
Python
DF
Logical Plan
Physical
execution
Catalyst
optimizer
Java/Scala
DF
R
DF
Intermediate representation for computation
Simple wrappers to create logical plan
Structured API Example
events =
sc.read.json(“/logs”)
stats =
events.join(users)
.groupBy(“loc”,“status”)
.avg(“duration”)
errors = stats.where(
stats.status == “ERR”)
DataFrame API Optimized Plan Specialized Code
SCAN logs SCAN users
JOIN
AGG
FILTER
while(logs.hasNext) {
e = logs.next
if(e.status == “ERR”) {
u = users.get(e.uid)
key = (u.loc, e.status)
sum(key) += e.duration
count(key) += 1
}
}
...
Benefit of Logical Plan: Simpler Frontend
Python : ~2000 line of code (built over a weekend)
R : ~1000 line of code
i.e. much easier to add new language bindings (Julia, Clojure, …)
Performance
0 2 4 6 8 10
Java/Scala
Python
Runtime for an example aggregation workload
RDD
Benefit of Logical Plan:
Performance Parity Across Languages
0 2 4 6 8 10
Java/Scala
Python
Java/Scala
Python
R
SQL
Runtime for an example aggregation workload (secs)
DataFrame
RDD
What are Spark’s structured APIs?
Combination of:
- data frame from R as the “interface” – easy to learn
- declarativity & data independence from databases -- easy to optimize &
future-proof
- flexibility & parallelism from MapReduce -- massively scalable & flexible
Future possibilities
Spark as a fast, multi-core data collection library
Spark as a performant streaming engine
Spark as a GPU computation framework
All using the same API
Python Java/Scala RSQL …
DataFrame
Logical Plan
LLVMJVM SIMD GPUs
Unified API, One Engine, Automatically Optimized
Tungsten
backend
language
frontend
…
Recap
We learn from previous generation systems to understand what works,
and what can be improved on, and evolve Spark
Latest APIs take the best ideas out of earlier systems
- data frame from R as the “interface” – easy to learn
- declarativity & data independence from databases -- easy to optimize &
future-proof
- flexibility & parallelism from MapReduce -- massively scalable & flexible
Dank je wel
@rxin

More Related Content

What's hot (20)

PDF
Kafka Streams: What it is, and how to use it?
confluent
 
PPTX
Intro to Apache Spark
Robert Sanders
 
PDF
Building an MLOps Stack for Companies at Reasonable Scale
Merelda
 
PPTX
Google cloud Dataflow & Apache Flink
Iván Fernández Perea
 
PDF
Advanced RAG Optimization To Make it Production-ready
Zilliz
 
PPTX
Near real-time statistical modeling and anomaly detection using Flink!
Flink Forward
 
PPTX
NLP_KASHK:Minimum Edit Distance
Hemantha Kulathilake
 
PDF
"Building Data Warehouse with Google Cloud Platform", Artem Nikulchenko
Fwdays
 
PDF
Best Practices for Enabling Speculative Execution on Large Scale Platforms
Databricks
 
PDF
Managing the Complete Machine Learning Lifecycle with MLflow
Databricks
 
PPTX
Pythonsevilla2019 - Introduction to MLFlow
Fernando Ortega Gallego
 
PPTX
Introduction to Distributed Tracing
petabridge
 
PPTX
Elastic stack Presentation
Amr Alaa Yassen
 
PDF
Virtual Flink Forward 2020: Netflix Data Mesh: Composable Data Processing - J...
Flink Forward
 
PDF
Kibana Tutorial | Kibana Dashboard Tutorial | Kibana Elasticsearch | ELK Stac...
Edureka!
 
PDF
Webinar slides: An Introduction to Performance Monitoring for PostgreSQL
Severalnines
 
PPTX
ELK Elasticsearch Logstash and Kibana Stack for Log Management
El Mahdi Benzekri
 
PDF
Optimizing the Supply Chain with Knowledge Graphs, IoT and Digital Twins_Moor...
Neo4j
 
PDF
All in AI: LLM Landscape & RAG in 2024 with Mark Ryan (Google) & Jerry Liu (L...
Daniel Zivkovic
 
PPTX
Observability
Enes Altınok
 
Kafka Streams: What it is, and how to use it?
confluent
 
Intro to Apache Spark
Robert Sanders
 
Building an MLOps Stack for Companies at Reasonable Scale
Merelda
 
Google cloud Dataflow & Apache Flink
Iván Fernández Perea
 
Advanced RAG Optimization To Make it Production-ready
Zilliz
 
Near real-time statistical modeling and anomaly detection using Flink!
Flink Forward
 
NLP_KASHK:Minimum Edit Distance
Hemantha Kulathilake
 
"Building Data Warehouse with Google Cloud Platform", Artem Nikulchenko
Fwdays
 
Best Practices for Enabling Speculative Execution on Large Scale Platforms
Databricks
 
Managing the Complete Machine Learning Lifecycle with MLflow
Databricks
 
Pythonsevilla2019 - Introduction to MLFlow
Fernando Ortega Gallego
 
Introduction to Distributed Tracing
petabridge
 
Elastic stack Presentation
Amr Alaa Yassen
 
Virtual Flink Forward 2020: Netflix Data Mesh: Composable Data Processing - J...
Flink Forward
 
Kibana Tutorial | Kibana Dashboard Tutorial | Kibana Elasticsearch | ELK Stac...
Edureka!
 
Webinar slides: An Introduction to Performance Monitoring for PostgreSQL
Severalnines
 
ELK Elasticsearch Logstash and Kibana Stack for Log Management
El Mahdi Benzekri
 
Optimizing the Supply Chain with Knowledge Graphs, IoT and Digital Twins_Moor...
Neo4j
 
All in AI: LLM Landscape & RAG in 2024 with Mark Ryan (Google) & Jerry Liu (L...
Daniel Zivkovic
 
Observability
Enes Altınok
 

Similar to A look under the hood at Apache Spark's API and engine evolutions (20)

PDF
Spark meetup TCHUG
Ryan Bosshart
 
PDF
Big Data Everywhere Chicago: Apache Spark Plus Many Other Frameworks -- How S...
BigDataEverywhere
 
PDF
Big data processing with apache spark
sarith divakar
 
PDF
Apache Spark and Python: unified Big Data analytics
Julien Anguenot
 
PDF
Apache Spark 101 - Demi Ben-Ari
Demi Ben-Ari
 
PDF
Unified Big Data Processing with Apache Spark
C4Media
 
PDF
Started with-apache-spark
Happiest Minds Technologies
 
PPTX
Pyspark presentationsfspfsjfspfjsfpsjfspfjsfpsjfsfsf
sasuke20y4sh
 
PDF
RDBMS vs Hadoop vs Spark
Laxmi8
 
PPT
An Introduction to Apache spark with scala
johnn210
 
PPTX
Apache Spark in Industry
Dorian Beganovic
 
PDF
How Apache Spark fits into the Big Data landscape
Paco Nathan
 
PDF
Strata 2015 Data Preview: Spark, Data Visualization, YARN, and More
Paco Nathan
 
PPTX
JavaOne 2016: Getting Started with Apache Spark: Use Scala, Java, Python, or ...
David Taieb
 
PPT
Big_data_analytics_NoSql_Module-4_Session
RUHULAMINHAZARIKA
 
PDF
Dev Ops Training
Spark Summit
 
PDF
Jump Start on Apache Spark 2.2 with Databricks
Anyscale
 
PDF
Apache Spark for Everyone - Women Who Code Workshop
Amanda Casari
 
PPTX
2016-07-21-Godil-presentation.pptx
D21CE161GOSWAMIPARTH
 
PDF
How Apache Spark fits in the Big Data landscape
Paco Nathan
 
Spark meetup TCHUG
Ryan Bosshart
 
Big Data Everywhere Chicago: Apache Spark Plus Many Other Frameworks -- How S...
BigDataEverywhere
 
Big data processing with apache spark
sarith divakar
 
Apache Spark and Python: unified Big Data analytics
Julien Anguenot
 
Apache Spark 101 - Demi Ben-Ari
Demi Ben-Ari
 
Unified Big Data Processing with Apache Spark
C4Media
 
Started with-apache-spark
Happiest Minds Technologies
 
Pyspark presentationsfspfsjfspfjsfpsjfspfjsfpsjfsfsf
sasuke20y4sh
 
RDBMS vs Hadoop vs Spark
Laxmi8
 
An Introduction to Apache spark with scala
johnn210
 
Apache Spark in Industry
Dorian Beganovic
 
How Apache Spark fits into the Big Data landscape
Paco Nathan
 
Strata 2015 Data Preview: Spark, Data Visualization, YARN, and More
Paco Nathan
 
JavaOne 2016: Getting Started with Apache Spark: Use Scala, Java, Python, or ...
David Taieb
 
Big_data_analytics_NoSql_Module-4_Session
RUHULAMINHAZARIKA
 
Dev Ops Training
Spark Summit
 
Jump Start on Apache Spark 2.2 with Databricks
Anyscale
 
Apache Spark for Everyone - Women Who Code Workshop
Amanda Casari
 
2016-07-21-Godil-presentation.pptx
D21CE161GOSWAMIPARTH
 
How Apache Spark fits in the Big Data landscape
Paco Nathan
 
Ad

More from Databricks (20)

PPTX
DW Migration Webinar-March 2022.pptx
Databricks
 
PPTX
Data Lakehouse Symposium | Day 1 | Part 1
Databricks
 
PPT
Data Lakehouse Symposium | Day 1 | Part 2
Databricks
 
PPTX
Data Lakehouse Symposium | Day 2
Databricks
 
PPTX
Data Lakehouse Symposium | Day 4
Databricks
 
PDF
5 Critical Steps to Clean Your Data Swamp When Migrating Off of Hadoop
Databricks
 
PDF
Democratizing Data Quality Through a Centralized Platform
Databricks
 
PDF
Learn to Use Databricks for Data Science
Databricks
 
PDF
Why APM Is Not the Same As ML Monitoring
Databricks
 
PDF
The Function, the Context, and the Data—Enabling ML Ops at Stitch Fix
Databricks
 
PDF
Stage Level Scheduling Improving Big Data and AI Integration
Databricks
 
PDF
Simplify Data Conversion from Spark to TensorFlow and PyTorch
Databricks
 
PDF
Scaling your Data Pipelines with Apache Spark on Kubernetes
Databricks
 
PDF
Scaling and Unifying SciKit Learn and Apache Spark Pipelines
Databricks
 
PDF
Sawtooth Windows for Feature Aggregations
Databricks
 
PDF
Redis + Apache Spark = Swiss Army Knife Meets Kitchen Sink
Databricks
 
PDF
Re-imagine Data Monitoring with whylogs and Spark
Databricks
 
PDF
Raven: End-to-end Optimization of ML Prediction Queries
Databricks
 
PDF
Processing Large Datasets for ADAS Applications using Apache Spark
Databricks
 
PDF
Massive Data Processing in Adobe Using Delta Lake
Databricks
 
DW Migration Webinar-March 2022.pptx
Databricks
 
Data Lakehouse Symposium | Day 1 | Part 1
Databricks
 
Data Lakehouse Symposium | Day 1 | Part 2
Databricks
 
Data Lakehouse Symposium | Day 2
Databricks
 
Data Lakehouse Symposium | Day 4
Databricks
 
5 Critical Steps to Clean Your Data Swamp When Migrating Off of Hadoop
Databricks
 
Democratizing Data Quality Through a Centralized Platform
Databricks
 
Learn to Use Databricks for Data Science
Databricks
 
Why APM Is Not the Same As ML Monitoring
Databricks
 
The Function, the Context, and the Data—Enabling ML Ops at Stitch Fix
Databricks
 
Stage Level Scheduling Improving Big Data and AI Integration
Databricks
 
Simplify Data Conversion from Spark to TensorFlow and PyTorch
Databricks
 
Scaling your Data Pipelines with Apache Spark on Kubernetes
Databricks
 
Scaling and Unifying SciKit Learn and Apache Spark Pipelines
Databricks
 
Sawtooth Windows for Feature Aggregations
Databricks
 
Redis + Apache Spark = Swiss Army Knife Meets Kitchen Sink
Databricks
 
Re-imagine Data Monitoring with whylogs and Spark
Databricks
 
Raven: End-to-end Optimization of ML Prediction Queries
Databricks
 
Processing Large Datasets for ADAS Applications using Apache Spark
Databricks
 
Massive Data Processing in Adobe Using Delta Lake
Databricks
 
Ad

Recently uploaded (20)

PDF
Future-Proof or Fall Behind? 10 Tech Trends You Can’t Afford to Ignore in 2025
DIGITALCONFEX
 
PDF
POV_ Why Enterprises Need to Find Value in ZERO.pdf
darshakparmar
 
PDF
LOOPS in C Programming Language - Technology
RishabhDwivedi43
 
PDF
Reverse Engineering of Security Products: Developing an Advanced Microsoft De...
nwbxhhcyjv
 
PPTX
Agentforce World Tour Toronto '25 - MCP with MuleSoft
Alexandra N. Martinez
 
DOCX
Cryptography Quiz: test your knowledge of this important security concept.
Rajni Bhardwaj Grover
 
PDF
Bitcoin for Millennials podcast with Bram, Power Laws of Bitcoin
Stephen Perrenod
 
PDF
Peak of Data & AI Encore AI-Enhanced Workflows for the Real World
Safe Software
 
PPTX
Designing_the_Future_AI_Driven_Product_Experiences_Across_Devices.pptx
presentifyai
 
PDF
Staying Human in a Machine- Accelerated World
Catalin Jora
 
PDF
Newgen 2022-Forrester Newgen TEI_13 05 2022-The-Total-Economic-Impact-Newgen-...
darshakparmar
 
PDF
Kit-Works Team Study_20250627_한달만에만든사내서비스키링(양다윗).pdf
Wonjun Hwang
 
PDF
What’s my job again? Slides from Mark Simos talk at 2025 Tampa BSides
Mark Simos
 
PDF
The 2025 InfraRed Report - Redpoint Ventures
Razin Mustafiz
 
PDF
Go Concurrency Real-World Patterns, Pitfalls, and Playground Battles.pdf
Emily Achieng
 
PPTX
Mastering ODC + Okta Configuration - Chennai OSUG
HathiMaryA
 
PDF
UiPath DevConnect 2025: Agentic Automation Community User Group Meeting
DianaGray10
 
PDF
“Squinting Vision Pipelines: Detecting and Correcting Errors in Vision Models...
Edge AI and Vision Alliance
 
PDF
Agentic AI lifecycle for Enterprise Hyper-Automation
Debmalya Biswas
 
PDF
How do you fast track Agentic automation use cases discovery?
DianaGray10
 
Future-Proof or Fall Behind? 10 Tech Trends You Can’t Afford to Ignore in 2025
DIGITALCONFEX
 
POV_ Why Enterprises Need to Find Value in ZERO.pdf
darshakparmar
 
LOOPS in C Programming Language - Technology
RishabhDwivedi43
 
Reverse Engineering of Security Products: Developing an Advanced Microsoft De...
nwbxhhcyjv
 
Agentforce World Tour Toronto '25 - MCP with MuleSoft
Alexandra N. Martinez
 
Cryptography Quiz: test your knowledge of this important security concept.
Rajni Bhardwaj Grover
 
Bitcoin for Millennials podcast with Bram, Power Laws of Bitcoin
Stephen Perrenod
 
Peak of Data & AI Encore AI-Enhanced Workflows for the Real World
Safe Software
 
Designing_the_Future_AI_Driven_Product_Experiences_Across_Devices.pptx
presentifyai
 
Staying Human in a Machine- Accelerated World
Catalin Jora
 
Newgen 2022-Forrester Newgen TEI_13 05 2022-The-Total-Economic-Impact-Newgen-...
darshakparmar
 
Kit-Works Team Study_20250627_한달만에만든사내서비스키링(양다윗).pdf
Wonjun Hwang
 
What’s my job again? Slides from Mark Simos talk at 2025 Tampa BSides
Mark Simos
 
The 2025 InfraRed Report - Redpoint Ventures
Razin Mustafiz
 
Go Concurrency Real-World Patterns, Pitfalls, and Playground Battles.pdf
Emily Achieng
 
Mastering ODC + Okta Configuration - Chennai OSUG
HathiMaryA
 
UiPath DevConnect 2025: Agentic Automation Community User Group Meeting
DianaGray10
 
“Squinting Vision Pipelines: Detecting and Correcting Errors in Vision Models...
Edge AI and Vision Alliance
 
Agentic AI lifecycle for Enterprise Hyper-Automation
Debmalya Biswas
 
How do you fast track Agentic automation use cases discovery?
DianaGray10
 

A look under the hood at Apache Spark's API and engine evolutions

  • 1. A look under the hood at Apache Spark's API and engine evolutions Reynold Xin @rxin 2017-02-08, Amsterdam Meetup
  • 2. About Databricks Founded by creators of Spark Cloud data platform - Spark - Interactive analysis - Cluster management - Production pipelines - Data governance & security
  • 3. Databricks Amsterdam R&D Center Started in January Hiring distributed systems & database engineers! Email me: [email protected]
  • 4. SQL Streaming MLlib Spark Core (RDD) GraphX Spark stack diagram
  • 5. Frontend (user facing APIs) Backend (execution) Spark stack diagram (a different take)
  • 6. Frontend (RDD, DataFrame, ML pipelines, …) Backend (scheduler, shuffle, operators, …) Spark stack diagram (a different take)
  • 7. Today’s Talk Some archaeology - IMS, relational databases - MapReduce - data frames Last 6 years of Spark evolution
  • 9. IBM IMS hierarchical database (1966) Image from https://stratechery.com/2016/oracles-cloudy-future/
  • 10. Hierarchical Database - Improvement over file system: query language & catalog - Lack of flexibility - Difficult to query items in different parts of the hierarchy - Relationships are pre-determined and difficult to change
  • 12. “Future users of large data banks must be protected from having to know how the data is organized in the machine. … most application programs should remain unaffected when the internal representation of data is changed and even when some aspects of the external representation are changed.”
  • 13. Era of relational databases (late 60s) Two “new” important ideas Physical Data Independence: The ability to change the physical data layout without having to change the logical schema. Declarative Query Language: Programmer specifies “what” rather than “how”.
  • 14. Why? Business applications outlive the environments they were created in: - New requirements might surface - Underlying hardware might change - Require physical layout changes (indexing, different storage medium, etc) Enabled tremendous amount of innovation: - Indexes, compression, column stores, etc
  • 15. Relational Database Pros vs Cons - Declarative and data independent - SQL is the universal interface everybody knows - Difficult to compose & build complex applications - Too opinionated and inflexible - Require data modeling before putting any data in - SQL is the only programming language
  • 17. Challenges Google faced Data size growing (volume & velocity) - Processing has to scale out over large clusters Complexity of analysis increasing (variety) - Massive ETL (web crawling) - Machine learning, graph processing
  • 18. The Big Data Problem Semi-/Un-structured data doesn’t fit well with databases Single machine can no longer process or even store all the data! Only solution is to distribute general storage & processing over clusters.
  • 19. Google Datacenter How do we program this thing? 19
  • 20. Data-Parallel Models Restrict the programming interface so that the system can do more automatically “Here’s an operation, run it on all of the data” - I don’t care where it runs (you schedule that) - In fact, feel free to run it twice on different nodes - Siimlar to “declarative programming” in databases
  • 22. MapReduce Pros vs Cons - Massively parallel - Very flexible programming model & schema-on-read - Extremely verbose & difficult to learn - Most real applications require multiple MR steps - 21 MR steps -> 21 mapper and reducer classes - Lots of boilerplate code per step - Bad performance
  • 24. Data frames in R / Python > head(filter(df, df$waiting < 50)) # an example in R ## eruptions waiting ##1 1.750 47 ##2 1.750 47 ##3 1.867 48 Developed by stats community & concise syntax for ad-hoc analysis Procedural (not declarative)
  • 25. R data frames Pros and Cons - Easy to learn - Pretty fast on a laptop (or one server) - No parallelism & doesn’t work well on big data - Lack sophisticated query optimization
  • 26. “Are you going to talk about Spark at all tonight!?”
  • 27. Which one is better? Databases, R, MapReduce? Declarative, procedural, data independence?
  • 28. Spark’s initial focus: a better MapReduce Language-integrated API (RDD): similar to Scala’s collection library using functional programming; incredibly powerful and composable lines = spark.textFile(“hdfs://...”) // RDD[String] points = lines.map(line => parsePoint(line)) // RDD[Point] points.filter(p => p.x > 100).count() Better performance: through a more general DAG abstraction, faster scheduling, and in-memory caching
  • 29. Programmability WordCount in 50+ lines of Java MR WordCount in 3 lines of Spark
  • 30. Challenge with Functional API Looks high-level, but hides many semantics of computation • Functions are arbitrary blocks of Java bytecode • Data stored is arbitrary Java objects Users can mix APIs in suboptimal ways
  • 32. Example Problem pairs = data.map(word => (word, 1)) groups = pairs.groupByKey() groups.map((k, vs) => (k, vs.sum)) Physical API: Materializes all groups as Seq[Int] objects Then promptly aggregates them
  • 33. Challenge: Data Representation Java objects often many times larger than underlying fields class User(name: String, friends: Array[Int]) new User(“Bobby”, Array(1, 2)) User 0x… 0x… String 3 0 1 2 Bobby 5 0x… int[] char[] 5
  • 34. Recap: two primary issues 1. Many APIs specifies the “physical” behavior, rather than the “logical” intent, aka not declarative enough. 2. Closures (user-defined functions and types) are opaque to the engine, an as a result little room for improvement.
  • 35. Sort Benchmark Originally sponsored by Jim Gray to measure advancements in software and hardware in 1987 Participants often used purpose-built hardware/software to compete • Large companies: IBM, Microsoft, Yahoo, … • Academia: UC Berkeley, UCSD, MIT, …
  • 36. Sort Benchmark • Past winners: Microsoft, Yahoo, Samsung, UCSD, … 1MB -> 100MB -> 1TB (1998) -> 100TB (2009)
  • 37. Winning Attempt Built on low-level Spark API and: - Put all data in off-heap memory using sun.misc.Unsafe - Use tight low level while loops rather than iterators ~ 3000 lines of low level code on Spark written by Reynold
  • 38. On-Disk Sort Record: Time to sort 100TB 2100 machines2013 Record: Hadoop 2014 Record: Spark Source: Daytona GraySort benchmark, sortbenchmark.org 72 minutes 207 machines 23 minutes Also sorted 1PB in 4 hours
  • 39. How do we enable the average users to win a world record, using a few lines of code?
  • 40. Goals of last two year’s API evolution 1. Simpler APIs bridging the gap between big data engineering and data science. 2. Higher level, declarative APIs that are future proof (engine can optimize programs automatically). Taking the best ideas from databases, big data, and data science
  • 42. DataFrames and Spark SQL Efficient library for structured data (data with a known schema) • Two interfaces: SQL for analysts + apps, DataFrames for programmers Optimized computation and storage, similar to RDBMS SIGMOD 2015
  • 44. DataFrame API DataFrames hold rows with a known schema and offer relational operations on them through a DSL val users = spark.sql(“select * from users”) val massUsers = users(users(“country”) === “NL”) massUsers.count() massUsers.groupBy(“name”).avg(“age”) Expression AST
  • 46. Spark DataFrame Execution DataFrame frontend Logical Plan Physical execution Catalyst optimizer Intermediate representation for computation
  • 47. Spark DataFrame Execution Python DF Logical Plan Physical execution Catalyst optimizer Java/Scala DF R DF Intermediate representation for computation Simple wrappers to create logical plan
  • 48. Structured API Example events = sc.read.json(“/logs”) stats = events.join(users) .groupBy(“loc”,“status”) .avg(“duration”) errors = stats.where( stats.status == “ERR”) DataFrame API Optimized Plan Specialized Code SCAN logs SCAN users JOIN AGG FILTER while(logs.hasNext) { e = logs.next if(e.status == “ERR”) { u = users.get(e.uid) key = (u.loc, e.status) sum(key) += e.duration count(key) += 1 } } ...
  • 49. Benefit of Logical Plan: Simpler Frontend Python : ~2000 line of code (built over a weekend) R : ~1000 line of code i.e. much easier to add new language bindings (Julia, Clojure, …)
  • 50. Performance 0 2 4 6 8 10 Java/Scala Python Runtime for an example aggregation workload RDD
  • 51. Benefit of Logical Plan: Performance Parity Across Languages 0 2 4 6 8 10 Java/Scala Python Java/Scala Python R SQL Runtime for an example aggregation workload (secs) DataFrame RDD
  • 52. What are Spark’s structured APIs? Combination of: - data frame from R as the “interface” – easy to learn - declarativity & data independence from databases -- easy to optimize & future-proof - flexibility & parallelism from MapReduce -- massively scalable & flexible
  • 53. Future possibilities Spark as a fast, multi-core data collection library Spark as a performant streaming engine Spark as a GPU computation framework All using the same API
  • 54. Python Java/Scala RSQL … DataFrame Logical Plan LLVMJVM SIMD GPUs Unified API, One Engine, Automatically Optimized Tungsten backend language frontend …
  • 55. Recap We learn from previous generation systems to understand what works, and what can be improved on, and evolve Spark Latest APIs take the best ideas out of earlier systems - data frame from R as the “interface” – easy to learn - declarativity & data independence from databases -- easy to optimize & future-proof - flexibility & parallelism from MapReduce -- massively scalable & flexible