SlideShare a Scribd company logo
1 of 36
Download to read offline
© 2015 IBM Corporation
A Java Implementer's Guide to
Boosting Apache Spark
Performance
Tim Ellison
IBM Runtimes Team, Hursley, UK
tellison
@tpellison
Flickr: G B. CC BY­ND 2.0
© 2016 IBM Corporation
IBM's Java SE technology
Reference
Java
Technology
Oracle, open
source, etc
IBM
Runtime
Technology
Centre
Quality
Engineering
Performance
Security
Reliability
Scalability
Serviceability
Production
Requirements
IBM Software Group
IBM hardware
ISVs
IBM Clients
AWT Swing Java2d
XML Crypto Corba
Core libraries
“J9” virtual machine
 Deep integration with hardware and software innovation
 Available on more platforms than any other vendor
 Heuristics optimised for product and customer scenarios
© 2016 IBM Corporation3
Apache Spark is a fast,
general purpose cluster
computing platform
© 2016 IBM Corporation4
SQL Streaming
Machine
Learning Graph
Core
Data
Frames
Machine Learning
Pipelines
© 2016 IBM Corporation5
Apache Spark APIs
 Spark Core
– Provides APIs for working with raw data collections
– Map / reduce functions to transform and evaluate the data
– Filter, aggregation, grouping, joins, sorting
 Spark SQL
– APIs for working with structured and semi-structured data
– Loads data from a variety of sources (DB2, JSON, Parquet, etc)
– Provides SQL interface to external tools (JDBC/ODBC)
 Spark Streaming
– Discretized streams of data arriving over time
– Fault tolerant and long running tasks
– Integrates with batch processing of data
 Machine Learning (MLlib)
– Efficient, iterative algorithms across distributed datasets
– Focus on parallel algorithms that run well on clusters
– Relatively low-level (e.g. K-means, alternating least squares)
 Graph Computation (GraphX)
– View the same data as graph or collection-based
– Transform and join graphs to manipulate data sets
– PageRank, Label propagation, strongly connected, triangle count, ...
© 2016 IBM Corporation6
Cluster Computing Platform
 Master Node “the driver”
Evaluates user operations
– Creates a physical execution plan to obtain the final result (a “job”)
– Works backwards to determine what individual “tasks” are required to
produce the answer
– Optimizes the required tasks using pipelining for parallelizable tasks,
reusing intermediate results, including persisting temporary states, etc
(“stages of the job”)
– Distributes work out to worker nodes
– Tracks the location of data and tasks
– Deals with errant workers
 Worker Nodes “the executors” in a cluster
Executes tasks
– Receives a copy of the application code
– Receives data, or the location of data partitions
– Performs the required operation
– Writes output to another input, or storage
driver
job job job
executor
task task task
executor
task task task
© 2016 IBM Corporation7
Resilient Distributed Dataset
 The Resilient Distributed Dataset (RDD) is the target of program operations
 Conceptually, one large collection of all your data elements – can be huge!
 Can be the original input data, or intermediate results from other operations
 In the Apache Spark implementation, RDDs are:
– Further decomposed into partitions
– Persisted in memory or on disk
– Fault tolerant
– Lazily evaluated
– Have a concept of location optimization
RDD1
derived
from
partitions
RDD1
partition1
RDD1
partition 2
RDD1
partition 1
RDD1
partition 3
RDD1
partition n...
f(x)
partitioner +
preferred location
© 2016 IBM Corporation8
Performance of the Apache Spark Runtime Core
 Moving data blocks
– How quickly can a worker get the data needed for this task?
– How quickly can a worker persist the results if required?
 Executing tasks
– How quickly can a worker sort, compute, transform, … the data in this partition?
– Can a fast worker work-steal or run speculative tasks?
“Narrow” RDD dependencies e.g. map()
pipeline-able
“Wide” RDD dependencies e.g. reduce()
shuffles
RDD1
partition1
RDD1
partition 2
RDD1
partition 1
RDD1
partition 3
RDD1
partition n...
RDD1
partition1
RDD2
partition 2
RDD2
partition 1
RDD2
partition 3
RDD2
partition n...
RDD1
partition1
RDD3
partition 2
RDD3
partition 1
RDD3
partition 3
RDD3
partition n...
RDD1
partition1
RDD1
partition 2
RDD1
partition 1
RDD1
partition 3
RDD1
partition n...
RDD1
partition1
RDD2
partition 2
RDD2
partition 1
© 2016 IBM Corporation9
A few things we can do with the JVM to enhance the performance of
Apache Spark!
1) JIT compiler enhancements, and writing JIT-friendly code
2) Improving the object serializer
3) Faster IO – networking and storage
4) Offloading tasks to graphics co-processors (GPUs)
© 2016 IBM Corporation10
JIT compiler enhancements, and writing JIT-friendly code
© 2016 IBM Corporation11
Java Adaptive Compilation : trade off effort and benefit
 The VM searches the JAR, loads and verifies bytecodes to internal
representation, runs bytecode form directly
 After many invocations (or via sampling) code gets compiled at
‘cold’ or ‘warm’ level
 An internal, low overhead sampling thread is used to identify
frequently used methods
 Methods may get recompiled at ‘hot’ or ‘scorching’ levels (for more
optimizations)
 Transition to ‘scorching’ goes through a temporary profiling step
cold
hot
scorching
profiling
interpreter
warm
Java's intermediate bytecodes are compiled as required and based on runtime profiling
- code is compiled 'just in time' as required
- dynamic compilation can determine the target machine capabilities and app demands
The JIT takes a holistic view of the application, looking for global optimizations
based on actual usage patterns, and speculative assumptions.
© 2016 IBM Corporation12
JNI calls are not free!
https://github.com/xerial/snappy­java/blob/develop/src/main/java/org/xerial/snappy/SnappyNative.cpp
© 2016 IBM Corporation13
Style: Using JNI has an impact...
 The cost of calling from Java code to natives and from natives to Java code is significantly
higher (maybe 5x longer) than a normal Java method call.
– The JIT can't in-line native methods.
– The JIT can't do data flow analysis into JNI calls
• e.g. it has to assume that all parameters are always used.
– The JIT has to set up the call stack and parameters for C calling convention,
• i.e. maybe rearranging items on the stack.
 JNI can introduce additional data copying costs
– There's no guarantee that you will get a direct pointer to the array / string with
Get<type>ArrayElements(), even when using the GetPrimitiveArrayCritical
versions.
– The IBM JVM will always return a copy (to allow GC to continue).
 Tip:
– JNI natives are more expensive than plain Java calls.
– e.g. create an unsafe based Snappy-like package written in Java code so that JNI cost is
eliminated.
© 2016 IBM Corporation14
Style: Use JIT optimizations to reduce overhead of logging checks
 Tip: Check for the non-null value of a static field ref to instance of a logging class singleton
– e.g.
– Uses the JIT's speculative optimization to avoid the explicit test for logging being enabled;
instead it ...
1)Generates an internal JIT runtime assumption (e.g. InfoLogger.class is undefined),
2)NOPs the test for trace enablement
3)Uses a class initialization hook for the InfoLogger.class (already necessary for instantiating the class)
4)The JIT will regenerate the test code if the class event is fired
 Apache Spark's logging calls are gated on the checks of a static boolean value
trait Logging
Spark
© 2016 IBM Corporation15
Style: Judicious use of polymorphism
 Apache Spark has a number of highly polymorphic interface call sites and high fan-in (several calling
contexts invoking the same callee method) in map, reduce, filter, flatMap, ...
– e.g. ExternalSorter.insertAll is very hot (drains an iterator using hasNext/next calls)
 Pattern #1:
– InterruptibleIterator → Scala's mapIterator → Scala's filterIterator → …
 Pattern #2:
– InterruptibleIterator → Scala's filterIterator → Scala's mapIterator → …
 The JIT can only choose one pattern to in-line!
– Makes JIT devirtualization and speculation more risky; using profiling information from a different
context could lead to incorrect devirtualization.
– More conservative speculation, or good phase change detection and recovery are needed in the JIT
compiler to avoid getting it wrong.
 Lambdas and functions as arguments, by definition, introduce different code flow targets
– Passing in widely implemented interfaces produce many different bytecode sequences
– When we in-line we have to put runtime checks ahead of in-lined method bodies to make sure we are
going to run the right method!
– Often specialized classes are used only in a very limited number of places, but the majority of the code
does not use these classes and pays a heavy penalty
– e.g. Scala's attempt to specialize Tuple2 Int argument does more harm than good!
 Tip: Use polymorphism sparingly, use the same order / patterns for nested & wrappered code, and
keep call sites homogeneous.
© 2016 IBM Corporation16
Effect of Adjusting JIT heuristics for Apache Spark
IBM JDK8 SR3
(tuned)
IBM JDK8 SR3
(out of the box)
PageRank 160% 148%
Sleep 101% 113%
Sort 103% 147%
WordCount 130% 146%
Bayes 100% 91%
Terasort 157% 131%
Geometric
mean
121% 116%
1/Geometric mean of HiBench time on zLinux 32 cores, 25G heap
Improvements in successive IBM Java 8 releases Performance compared with OpenJDK 8
HiBench huge, Spark 1.5.2, Linux Power8 12 core * 8-way SMT
1.35x
© 2016 IBM Corporation17
IBM Runtime performance
●
IBM JDK is faster in all of the three Databricks performance scenarios we
attempted
●
30% advantage in the 50 GB heap size scenario
30-60 GB is the sweet spot for showing large
performance advantages compared to other JDK vendors
© 2016 IBM Corporation18
Replacing the object serializer
© 2016 IBM Corporation19
Writing an Apache Spark-friendly object serializer
 Spark has a plug-in architecture for flattening objects to storage
– Typically uses general purpose serializers,
e.g. Java serializer, or Kryo, etc.
 Can we optimize for Apache Spark usage?
– Goal: Reduce time time to flatten objects
– Goal: Reduce size of flattened objects
 Expanding the list of specialist serialized form
– Having custom write/read object methods allows for reduced time in reflection and smaller
on-wire payloads.
– Types such as Tuple and Some given special treatment in the serializer
 Sharing object representation within the serialized stream to reduce payload
– But may be defeated if supportsRelocationOfSerializedObjects required
 Reduce the payload size further using variable length encoding of primitive types.
– All objects are eventually decomposed into primitives
© 2016 IBM Corporation20
Writing an Apache Spark-friendly object serializer
 Adaptive stack-based recursive serialization vs. state machine serialization
– Use the stack to track state wherever possible, but fall back to state machine for deeply
nested objects (e.g. big RDDs)
 Special replacement of deserialization calls to avoid stack-walking to find class loader
context
– Optimization in JIT to circumvent some regular calls to more efficient versions
 Tip: These are opaque to the application, no special patterns required.
 Results: Variable, small numbers of percentages at best
© 2016 IBM Corporation21
Faster IO – networking and storage
© 2016 IBM Corporation
Remote Direct Memory Access (RDMA) Networking
Spark VM
Buffer
Off
Heap
Buffer
Spark VM
Buffer
Off
Heap
Buffer
Ether/IB
SwitchRDMA NIC/HCA RDMA NIC/HCA
OS OS
DMA DMA
(Z-Copy) (Z-Copy)
(B-Copy)(B-Copy)
Acronyms:
Z-Copy – Zero Copy
B-Copy – Buffer Copy
IB – InfiniBand
Ether - Ethernet
NIC – Network Interface Card
HCA – Host Control Adapter
●
Low-latency, high-throughput networking
●
Direct 'application to application' memory pointer exchange between remote hosts
●
Off-load network processing to RDMA NIC/HCA – OS/Kernel Bypass (zero-copy)
●
Introduces new IO characteristics that can influence the Spark transfer plan
Spark node #1 Spark node #2
© 2016 IBM Corporation23
TCP/IP
RDMA
RDMA exhibits improved throughput and reduced latency.
Available over java.net.Socket APIs or explicit jVerbs calls
Characteristics of RDMA Networking
© 2016 IBM Corporation
Modifications for an RDMA-enabled Apache Spark
24
New dynamic transfer plan that adapts to the load and
responsiveness of the remote hosts.
New “RDMA” shuffle IO mode with lower latency and
higher throughput.
JVM-agnostic
IBM JVM only
JVM-agnostic
IBM JVM only
IBM JVM only
Block manipulation (i.e., RDD partitions)
High-level API
JVM-agnostic working prototype
with RDMA
© 2016 IBM Corporation
TCP-H benchmark 100Gb
30% improvement in database
operations
Shuffle-intensive benchmarks show 30% - 40% better performance
with RDMA
HiBench PageRank 3Gb
40% faster, lower CPU usage
32 cores
(1 master, 4 nodes x 8 cores/node,
32GB Mem/node)
© 2016 IBM Corporation26
Time to complete TeraSort benchmark
32 cores (1 master, 4 nodes x 8 cores/node, 32GB Mem/node), IBM Java 8
0 100 200 300 400 500 600
Spark HiBench TeraSort [30GB]
Execution Time (sec)
556s
159s
TCP/IP
JSoR
© 2016 IBM Corporation27
Faster storage with POWER CAPI/Flash
 POWER8 architecture offers a 40Tb Flash drive attached
via Coherent Accelerator Processor Interface (CAPI)
– Provides simple coherent block IO APIs
– No file system overhead
 Power Service Layer (PSL)
– Performs Address Translations
– Maintains Cache
– Simple, but powerful interface to the Accelerator unit
 Coherent Accelerator Processor Proxy (CAPP)
– Maintains directory of cache lines held by Accelerator
– Snoops PowerBus on behalf of Accelerator

© 2016 IBM Corporation28
Faster disk IO with CAPI/Flash-enabled Spark
 When under memory pressure, Spark spills RDDs to disk.
– Happens in ExternalAppendOnlyMap and ExternalSorter
 We have modified Spark to spill to the high-bandwidth, coherently-attached Flash device instead.
– Replacement for DiskBlockManager
– New FlashBlockManager handles spill to/from flash
 Making this pluggable requires some further abstraction in Spark:
– Spill code assumes using disks, and depends on DiskBlockManger
– We are spilling without using a file system layer
 Dramatically improves performance of executors under memory pressure.
 Allows to reach similar performance with much less memory (denser deployments).
IBM Flash System 840Power8 + CAPI
© 2016 IBM Corporation29
e.g. using CAPI Flash for RDD
caching allows for 4X memory
reduction while maintaining equal
performance
© 2016 IBM Corporation30
Offloading tasks to graphics co-processors
© 2016 IBM Corporation31
GPU-enabled array sort method
IBM Power 8 with Nvidia K40m GPU
 Some Arrays.sort() methods will offload work to GPUs today
– e.g. sorting large arrays of ints
© 2016 IBM Corporation32
JIT optimized GPU acceleration
 Comes with caveats
– Recognize a limited set of operations within the lambda expressions,
• notably no object references maintained on GPU
– Default grid dimensions and operating parameters for the GPU
workload
– Redundant/pessimistic data transfer between host and device
• Not using GPU shared memory
– Limited heuristics about when to invoke the GPU and when to
generate CPU instructions
 As the JIT compiles a stream expression we can identify candidates for GPU off-loading
– Arrays copied to and from the device implicitly
– Java operations mapped to GPU kernel operations
– Preserves the standard Java syntax and semantics bytecodes
intermediate
representation
optimizer
CPU GPU
code generator
code
generator
PTX ISACPU native
© 2016 IBM Corporation33
GPU optimization of Lambda expressions
Speed-up factor when run on a GPU enabled host
IBM Power 8 with Nvidia K40m GPU
0.00
0.01
0.10
1.00
10.00
100.00
1000.00
auto-SIMD parallel forEach on CPU
parallel forEach on GPU
matrix size
The JIT can recognize parallel stream
code, and automatically compile down to
the GPU.
© 2016 IBM Corporation
Learn Predict
Moving high-level algorithms onto the GPU
Drug1 Drug2
Aspirin Gliclazide
Aspirin Dicoumarol
Drug1 Drug2 Sim
Salsalate Aspirin .9
Dicoumarol Warfarin .76
Known Interactions of type 1 to …
Drug1 Drug2 Best
Sim1*Sim1
Best
SimN*SimN
Salsalate Gliclazid
e
.9*1 .7*1
Salsalate Warfarin .9*.76 .7*.6
Chemical Similarity
Drug1 Drug2 Prediction
Salsalate Gliclazide 0.85
Salsalate Warfarin 0.7
…
Drug1 Drug2 Prediction
Salsalate Gliclazide 0.53
Salsalate Warfarin 0.32
Logistic
Regression
ModelDrug1 Drug2 Sim
Salsalate Aspirin .7
Dicoumarol Warfarin .6
Interactions
Ingest
Drug1 Drug2
Aspirin Probenecid
Aspirin Azilsartan
Interactions Prediction
© 2016 IBM Corporation
• 25X Speed up for Building Model stage (replacing Spark Mllib Logistic Regression)
• Transparent to the Spark application, but requires changes to Spark itself
© 2016 IBM Corporation36
Summary
 We are focused on Core runtime performance to get a multiplier up the Spark stack.
– More efficient code, more efficient memory usage/spilling, more efficient serialization &
networking, etc.
 There are hardware and software technologies we can bring to the party.
– We can tune the stack from hardware to high level structures for running Spark.
 Spark and Scala developers can help themselves by their style of coding.
 All the changes are being made in the Java runtime or
being pushed out to the Spark community.
 There is lots more stuff I don't have time to talk about, like GC optimizations, object layout,
monitoring VM/Spark events, hardware compression, security, etc. etc.
– mailto:
http://ibm.biz/spark­kit

More Related Content

What's hot

Supporting Over a Thousand Custom Hive User Defined Functions
Supporting Over a Thousand Custom Hive User Defined FunctionsSupporting Over a Thousand Custom Hive User Defined Functions
Supporting Over a Thousand Custom Hive User Defined FunctionsDatabricks
 
End-to-End Deep Learning with Horovod on Apache Spark
End-to-End Deep Learning with Horovod on Apache SparkEnd-to-End Deep Learning with Horovod on Apache Spark
End-to-End Deep Learning with Horovod on Apache SparkDatabricks
 
Introduction to Apache Spark
Introduction to Apache Spark Introduction to Apache Spark
Introduction to Apache Spark Hubert Fan Chiang
 
Spark on Mesos
Spark on MesosSpark on Mesos
Spark on MesosJen Aman
 
Simplify and Boost Spark 3 Deployments with Hypervisor-Native Kubernetes
Simplify and Boost Spark 3 Deployments with Hypervisor-Native KubernetesSimplify and Boost Spark 3 Deployments with Hypervisor-Native Kubernetes
Simplify and Boost Spark 3 Deployments with Hypervisor-Native KubernetesDatabricks
 
Spark at Bloomberg: Dynamically Composable Analytics
Spark at Bloomberg:  Dynamically Composable Analytics Spark at Bloomberg:  Dynamically Composable Analytics
Spark at Bloomberg: Dynamically Composable Analytics Jen Aman
 
Unleashing Data Intelligence with Intel and Apache Spark with Michael Greene
Unleashing Data Intelligence with Intel and Apache Spark with Michael GreeneUnleashing Data Intelligence with Intel and Apache Spark with Michael Greene
Unleashing Data Intelligence with Intel and Apache Spark with Michael GreeneDatabricks
 
Re-Architecting Spark For Performance Understandability
Re-Architecting Spark For Performance UnderstandabilityRe-Architecting Spark For Performance Understandability
Re-Architecting Spark For Performance UnderstandabilityJen Aman
 
Elastify Cloud-Native Spark Application with Persistent Memory
Elastify Cloud-Native Spark Application with Persistent MemoryElastify Cloud-Native Spark Application with Persistent Memory
Elastify Cloud-Native Spark Application with Persistent MemoryDatabricks
 
A Container-based Sizing Framework for Apache Hadoop/Spark Clusters
A Container-based Sizing Framework for Apache Hadoop/Spark ClustersA Container-based Sizing Framework for Apache Hadoop/Spark Clusters
A Container-based Sizing Framework for Apache Hadoop/Spark ClustersDataWorks Summit/Hadoop Summit
 
Fast and Reliable Apache Spark SQL Releases
Fast and Reliable Apache Spark SQL ReleasesFast and Reliable Apache Spark SQL Releases
Fast and Reliable Apache Spark SQL ReleasesDataWorks Summit
 
No More Cumbersomeness: Automatic Predictive Modeling on Apache Spark with Ma...
No More Cumbersomeness: Automatic Predictive Modeling on Apache Spark with Ma...No More Cumbersomeness: Automatic Predictive Modeling on Apache Spark with Ma...
No More Cumbersomeness: Automatic Predictive Modeling on Apache Spark with Ma...Databricks
 
JVM and OS Tuning for accelerating Spark application
JVM and OS Tuning for accelerating Spark applicationJVM and OS Tuning for accelerating Spark application
JVM and OS Tuning for accelerating Spark applicationTatsuhiro Chiba
 
Programming in Spark using PySpark
Programming in Spark using PySpark      Programming in Spark using PySpark
Programming in Spark using PySpark Mostafa
 
Cassandra and SparkSQL: You Don't Need Functional Programming for Fun with Ru...
Cassandra and SparkSQL: You Don't Need Functional Programming for Fun with Ru...Cassandra and SparkSQL: You Don't Need Functional Programming for Fun with Ru...
Cassandra and SparkSQL: You Don't Need Functional Programming for Fun with Ru...Databricks
 
Integrating Existing C++ Libraries into PySpark with Esther Kundin
Integrating Existing C++ Libraries into PySpark with Esther KundinIntegrating Existing C++ Libraries into PySpark with Esther Kundin
Integrating Existing C++ Libraries into PySpark with Esther KundinDatabricks
 
Deep Learning with Spark and GPUs
Deep Learning with Spark and GPUsDeep Learning with Spark and GPUs
Deep Learning with Spark and GPUsDataWorks Summit
 
In Memory Analytics with Apache Spark
In Memory Analytics with Apache SparkIn Memory Analytics with Apache Spark
In Memory Analytics with Apache SparkVenkata Naga Ravi
 
Transactional writes to cloud storage with Eric Liang
Transactional writes to cloud storage with Eric LiangTransactional writes to cloud storage with Eric Liang
Transactional writes to cloud storage with Eric LiangDatabricks
 

What's hot (20)

Supporting Over a Thousand Custom Hive User Defined Functions
Supporting Over a Thousand Custom Hive User Defined FunctionsSupporting Over a Thousand Custom Hive User Defined Functions
Supporting Over a Thousand Custom Hive User Defined Functions
 
End-to-End Deep Learning with Horovod on Apache Spark
End-to-End Deep Learning with Horovod on Apache SparkEnd-to-End Deep Learning with Horovod on Apache Spark
End-to-End Deep Learning with Horovod on Apache Spark
 
Introduction to Apache Spark
Introduction to Apache Spark Introduction to Apache Spark
Introduction to Apache Spark
 
Spark on Mesos
Spark on MesosSpark on Mesos
Spark on Mesos
 
Simplify and Boost Spark 3 Deployments with Hypervisor-Native Kubernetes
Simplify and Boost Spark 3 Deployments with Hypervisor-Native KubernetesSimplify and Boost Spark 3 Deployments with Hypervisor-Native Kubernetes
Simplify and Boost Spark 3 Deployments with Hypervisor-Native Kubernetes
 
Spark at Bloomberg: Dynamically Composable Analytics
Spark at Bloomberg:  Dynamically Composable Analytics Spark at Bloomberg:  Dynamically Composable Analytics
Spark at Bloomberg: Dynamically Composable Analytics
 
Unleashing Data Intelligence with Intel and Apache Spark with Michael Greene
Unleashing Data Intelligence with Intel and Apache Spark with Michael GreeneUnleashing Data Intelligence with Intel and Apache Spark with Michael Greene
Unleashing Data Intelligence with Intel and Apache Spark with Michael Greene
 
Re-Architecting Spark For Performance Understandability
Re-Architecting Spark For Performance UnderstandabilityRe-Architecting Spark For Performance Understandability
Re-Architecting Spark For Performance Understandability
 
Elastify Cloud-Native Spark Application with Persistent Memory
Elastify Cloud-Native Spark Application with Persistent MemoryElastify Cloud-Native Spark Application with Persistent Memory
Elastify Cloud-Native Spark Application with Persistent Memory
 
A Container-based Sizing Framework for Apache Hadoop/Spark Clusters
A Container-based Sizing Framework for Apache Hadoop/Spark ClustersA Container-based Sizing Framework for Apache Hadoop/Spark Clusters
A Container-based Sizing Framework for Apache Hadoop/Spark Clusters
 
Fast and Reliable Apache Spark SQL Releases
Fast and Reliable Apache Spark SQL ReleasesFast and Reliable Apache Spark SQL Releases
Fast and Reliable Apache Spark SQL Releases
 
No More Cumbersomeness: Automatic Predictive Modeling on Apache Spark with Ma...
No More Cumbersomeness: Automatic Predictive Modeling on Apache Spark with Ma...No More Cumbersomeness: Automatic Predictive Modeling on Apache Spark with Ma...
No More Cumbersomeness: Automatic Predictive Modeling on Apache Spark with Ma...
 
JVM and OS Tuning for accelerating Spark application
JVM and OS Tuning for accelerating Spark applicationJVM and OS Tuning for accelerating Spark application
JVM and OS Tuning for accelerating Spark application
 
Programming in Spark using PySpark
Programming in Spark using PySpark      Programming in Spark using PySpark
Programming in Spark using PySpark
 
Cassandra and SparkSQL: You Don't Need Functional Programming for Fun with Ru...
Cassandra and SparkSQL: You Don't Need Functional Programming for Fun with Ru...Cassandra and SparkSQL: You Don't Need Functional Programming for Fun with Ru...
Cassandra and SparkSQL: You Don't Need Functional Programming for Fun with Ru...
 
Integrating Existing C++ Libraries into PySpark with Esther Kundin
Integrating Existing C++ Libraries into PySpark with Esther KundinIntegrating Existing C++ Libraries into PySpark with Esther Kundin
Integrating Existing C++ Libraries into PySpark with Esther Kundin
 
Deep Learning with Spark and GPUs
Deep Learning with Spark and GPUsDeep Learning with Spark and GPUs
Deep Learning with Spark and GPUs
 
In Memory Analytics with Apache Spark
In Memory Analytics with Apache SparkIn Memory Analytics with Apache Spark
In Memory Analytics with Apache Spark
 
Transactional writes to cloud storage with Eric Liang
Transactional writes to cloud storage with Eric LiangTransactional writes to cloud storage with Eric Liang
Transactional writes to cloud storage with Eric Liang
 
Spark Working Environment in Windows OS
Spark Working Environment in Windows OSSpark Working Environment in Windows OS
Spark Working Environment in Windows OS
 

Viewers also liked

Five cool ways the JVM can run Apache Spark faster
Five cool ways the JVM can run Apache Spark fasterFive cool ways the JVM can run Apache Spark faster
Five cool ways the JVM can run Apache Spark fasterTim Ellison
 
Project Tungsten: Bringing Spark Closer to Bare Metal
Project Tungsten: Bringing Spark Closer to Bare MetalProject Tungsten: Bringing Spark Closer to Bare Metal
Project Tungsten: Bringing Spark Closer to Bare MetalDatabricks
 
Type Annotations in Java 8
Type Annotations in Java 8 Type Annotations in Java 8
Type Annotations in Java 8 FinLingua, Inc.
 
Deep Dive Into Catalyst: Apache Spark 2.0'S Optimizer
Deep Dive Into Catalyst: Apache Spark 2.0'S OptimizerDeep Dive Into Catalyst: Apache Spark 2.0'S Optimizer
Deep Dive Into Catalyst: Apache Spark 2.0'S OptimizerSpark Summit
 
Anatomy of Spark SQL Catalyst - Part 2
Anatomy of Spark SQL Catalyst - Part 2Anatomy of Spark SQL Catalyst - Part 2
Anatomy of Spark SQL Catalyst - Part 2datamantra
 
Deep Dive into Project Tungsten: Bringing Spark Closer to Bare Metal-(Josh Ro...
Deep Dive into Project Tungsten: Bringing Spark Closer to Bare Metal-(Josh Ro...Deep Dive into Project Tungsten: Bringing Spark Closer to Bare Metal-(Josh Ro...
Deep Dive into Project Tungsten: Bringing Spark Closer to Bare Metal-(Josh Ro...Spark Summit
 
Deep Dive Into Catalyst: Apache Spark 2.0’s Optimizer
Deep Dive Into Catalyst: Apache Spark 2.0’s OptimizerDeep Dive Into Catalyst: Apache Spark 2.0’s Optimizer
Deep Dive Into Catalyst: Apache Spark 2.0’s OptimizerDatabricks
 
From DataFrames to Tungsten: A Peek into Spark's Future @ Spark Summit San Fr...
From DataFrames to Tungsten: A Peek into Spark's Future @ Spark Summit San Fr...From DataFrames to Tungsten: A Peek into Spark's Future @ Spark Summit San Fr...
From DataFrames to Tungsten: A Peek into Spark's Future @ Spark Summit San Fr...Databricks
 
Anatomy of spark catalyst
Anatomy of spark catalystAnatomy of spark catalyst
Anatomy of spark catalystdatamantra
 
Selective Data Replication with Geographically Distributed Hadoop
Selective Data Replication with Geographically Distributed HadoopSelective Data Replication with Geographically Distributed Hadoop
Selective Data Replication with Geographically Distributed HadoopDataWorks Summit
 
Deep Dive: Memory Management in Apache Spark
Deep Dive: Memory Management in Apache SparkDeep Dive: Memory Management in Apache Spark
Deep Dive: Memory Management in Apache SparkDatabricks
 

Viewers also liked (12)

Five cool ways the JVM can run Apache Spark faster
Five cool ways the JVM can run Apache Spark fasterFive cool ways the JVM can run Apache Spark faster
Five cool ways the JVM can run Apache Spark faster
 
Project Tungsten: Bringing Spark Closer to Bare Metal
Project Tungsten: Bringing Spark Closer to Bare MetalProject Tungsten: Bringing Spark Closer to Bare Metal
Project Tungsten: Bringing Spark Closer to Bare Metal
 
Type Annotations in Java 8
Type Annotations in Java 8 Type Annotations in Java 8
Type Annotations in Java 8
 
Optimizing Hive Queries
Optimizing Hive QueriesOptimizing Hive Queries
Optimizing Hive Queries
 
Deep Dive Into Catalyst: Apache Spark 2.0'S Optimizer
Deep Dive Into Catalyst: Apache Spark 2.0'S OptimizerDeep Dive Into Catalyst: Apache Spark 2.0'S Optimizer
Deep Dive Into Catalyst: Apache Spark 2.0'S Optimizer
 
Anatomy of Spark SQL Catalyst - Part 2
Anatomy of Spark SQL Catalyst - Part 2Anatomy of Spark SQL Catalyst - Part 2
Anatomy of Spark SQL Catalyst - Part 2
 
Deep Dive into Project Tungsten: Bringing Spark Closer to Bare Metal-(Josh Ro...
Deep Dive into Project Tungsten: Bringing Spark Closer to Bare Metal-(Josh Ro...Deep Dive into Project Tungsten: Bringing Spark Closer to Bare Metal-(Josh Ro...
Deep Dive into Project Tungsten: Bringing Spark Closer to Bare Metal-(Josh Ro...
 
Deep Dive Into Catalyst: Apache Spark 2.0’s Optimizer
Deep Dive Into Catalyst: Apache Spark 2.0’s OptimizerDeep Dive Into Catalyst: Apache Spark 2.0’s Optimizer
Deep Dive Into Catalyst: Apache Spark 2.0’s Optimizer
 
From DataFrames to Tungsten: A Peek into Spark's Future @ Spark Summit San Fr...
From DataFrames to Tungsten: A Peek into Spark's Future @ Spark Summit San Fr...From DataFrames to Tungsten: A Peek into Spark's Future @ Spark Summit San Fr...
From DataFrames to Tungsten: A Peek into Spark's Future @ Spark Summit San Fr...
 
Anatomy of spark catalyst
Anatomy of spark catalystAnatomy of spark catalyst
Anatomy of spark catalyst
 
Selective Data Replication with Geographically Distributed Hadoop
Selective Data Replication with Geographically Distributed HadoopSelective Data Replication with Geographically Distributed Hadoop
Selective Data Replication with Geographically Distributed Hadoop
 
Deep Dive: Memory Management in Apache Spark
Deep Dive: Memory Management in Apache SparkDeep Dive: Memory Management in Apache Spark
Deep Dive: Memory Management in Apache Spark
 

Similar to A Java Implementer's Guide to Boosting Apache Spark Performance by Tim Ellison.

A Java Implementer's Guide to Better Apache Spark Performance
A Java Implementer's Guide to Better Apache Spark PerformanceA Java Implementer's Guide to Better Apache Spark Performance
A Java Implementer's Guide to Better Apache Spark PerformanceTim Ellison
 
Apache Big Data Europe 2016
Apache Big Data Europe 2016Apache Big Data Europe 2016
Apache Big Data Europe 2016Tim Ellison
 
Apache Spark Performance Observations
Apache Spark Performance ObservationsApache Spark Performance Observations
Apache Spark Performance ObservationsAdam Roberts
 
IBM Runtimes Performance Observations with Apache Spark
IBM Runtimes Performance Observations with Apache SparkIBM Runtimes Performance Observations with Apache Spark
IBM Runtimes Performance Observations with Apache SparkAdamRobertsIBM
 
How Java 19 Influences the Future of Your High-Scale Applications .pdf
How Java 19 Influences the Future of Your High-Scale Applications .pdfHow Java 19 Influences the Future of Your High-Scale Applications .pdf
How Java 19 Influences the Future of Your High-Scale Applications .pdfAna-Maria Mihalceanu
 
Profiling & Testing with Spark
Profiling & Testing with SparkProfiling & Testing with Spark
Profiling & Testing with SparkRoger Rafanell Mas
 
Accelerating Spark Genome Sequencing in Cloud—A Data Driven Approach, Case St...
Accelerating Spark Genome Sequencing in Cloud—A Data Driven Approach, Case St...Accelerating Spark Genome Sequencing in Cloud—A Data Driven Approach, Case St...
Accelerating Spark Genome Sequencing in Cloud—A Data Driven Approach, Case St...Spark Summit
 
FOSDEM 2017 - Open J9 The Next Free Java VM
FOSDEM 2017 - Open J9 The Next Free Java VMFOSDEM 2017 - Open J9 The Next Free Java VM
FOSDEM 2017 - Open J9 The Next Free Java VMCharlie Gracie
 
Spark 101 - First steps to distributed computing
Spark 101 - First steps to distributed computingSpark 101 - First steps to distributed computing
Spark 101 - First steps to distributed computingDemi Ben-Ari
 
"JIT compiler overview" @ JEEConf 2013, Kiev, Ukraine
"JIT compiler overview" @ JEEConf 2013, Kiev, Ukraine"JIT compiler overview" @ JEEConf 2013, Kiev, Ukraine
"JIT compiler overview" @ JEEConf 2013, Kiev, UkraineVladimir Ivanov
 
Ijaprr vol1-2-13-60-64tejinder
Ijaprr vol1-2-13-60-64tejinderIjaprr vol1-2-13-60-64tejinder
Ijaprr vol1-2-13-60-64tejinderijaprr_editor
 
Making Hardware Accelerator Easier to Use
Making Hardware Accelerator Easier to UseMaking Hardware Accelerator Easier to Use
Making Hardware Accelerator Easier to UseKazuaki Ishizaki
 
What's new in Java 8
What's new in Java 8What's new in Java 8
What's new in Java 8jclingan
 
Programming in Spark - Lessons Learned in OpenAire project
Programming in Spark - Lessons Learned in OpenAire projectProgramming in Spark - Lessons Learned in OpenAire project
Programming in Spark - Lessons Learned in OpenAire projectŁukasz Dumiszewski
 
Java performance tuning
Java performance tuningJava performance tuning
Java performance tuningJerry Kurian
 
AI Scalability for the Next Decade
AI Scalability for the Next DecadeAI Scalability for the Next Decade
AI Scalability for the Next DecadePaula Koziol
 
EmbeddedJavaSmall.ppt
EmbeddedJavaSmall.pptEmbeddedJavaSmall.ppt
EmbeddedJavaSmall.pptMonishaAb1
 

Similar to A Java Implementer's Guide to Boosting Apache Spark Performance by Tim Ellison. (20)

A Java Implementer's Guide to Better Apache Spark Performance
A Java Implementer's Guide to Better Apache Spark PerformanceA Java Implementer's Guide to Better Apache Spark Performance
A Java Implementer's Guide to Better Apache Spark Performance
 
Apache Big Data Europe 2016
Apache Big Data Europe 2016Apache Big Data Europe 2016
Apache Big Data Europe 2016
 
Apache Spark Performance Observations
Apache Spark Performance ObservationsApache Spark Performance Observations
Apache Spark Performance Observations
 
IBM Runtimes Performance Observations with Apache Spark
IBM Runtimes Performance Observations with Apache SparkIBM Runtimes Performance Observations with Apache Spark
IBM Runtimes Performance Observations with Apache Spark
 
How Java 19 Influences the Future of Your High-Scale Applications .pdf
How Java 19 Influences the Future of Your High-Scale Applications .pdfHow Java 19 Influences the Future of Your High-Scale Applications .pdf
How Java 19 Influences the Future of Your High-Scale Applications .pdf
 
Profiling & Testing with Spark
Profiling & Testing with SparkProfiling & Testing with Spark
Profiling & Testing with Spark
 
Accelerating Spark Genome Sequencing in Cloud—A Data Driven Approach, Case St...
Accelerating Spark Genome Sequencing in Cloud—A Data Driven Approach, Case St...Accelerating Spark Genome Sequencing in Cloud—A Data Driven Approach, Case St...
Accelerating Spark Genome Sequencing in Cloud—A Data Driven Approach, Case St...
 
まとめと展望
まとめと展望まとめと展望
まとめと展望
 
FOSDEM 2017 - Open J9 The Next Free Java VM
FOSDEM 2017 - Open J9 The Next Free Java VMFOSDEM 2017 - Open J9 The Next Free Java VM
FOSDEM 2017 - Open J9 The Next Free Java VM
 
20160908 hivemall meetup
20160908 hivemall meetup20160908 hivemall meetup
20160908 hivemall meetup
 
Spark 101 - First steps to distributed computing
Spark 101 - First steps to distributed computingSpark 101 - First steps to distributed computing
Spark 101 - First steps to distributed computing
 
"JIT compiler overview" @ JEEConf 2013, Kiev, Ukraine
"JIT compiler overview" @ JEEConf 2013, Kiev, Ukraine"JIT compiler overview" @ JEEConf 2013, Kiev, Ukraine
"JIT compiler overview" @ JEEConf 2013, Kiev, Ukraine
 
Ijaprr vol1-2-13-60-64tejinder
Ijaprr vol1-2-13-60-64tejinderIjaprr vol1-2-13-60-64tejinder
Ijaprr vol1-2-13-60-64tejinder
 
Making Hardware Accelerator Easier to Use
Making Hardware Accelerator Easier to UseMaking Hardware Accelerator Easier to Use
Making Hardware Accelerator Easier to Use
 
Java 8
Java 8Java 8
Java 8
 
What's new in Java 8
What's new in Java 8What's new in Java 8
What's new in Java 8
 
Programming in Spark - Lessons Learned in OpenAire project
Programming in Spark - Lessons Learned in OpenAire projectProgramming in Spark - Lessons Learned in OpenAire project
Programming in Spark - Lessons Learned in OpenAire project
 
Java performance tuning
Java performance tuningJava performance tuning
Java performance tuning
 
AI Scalability for the Next Decade
AI Scalability for the Next DecadeAI Scalability for the Next Decade
AI Scalability for the Next Decade
 
EmbeddedJavaSmall.ppt
EmbeddedJavaSmall.pptEmbeddedJavaSmall.ppt
EmbeddedJavaSmall.ppt
 

More from J On The Beach

Massively scalable ETL in real world applications: the hard way
Massively scalable ETL in real world applications: the hard wayMassively scalable ETL in real world applications: the hard way
Massively scalable ETL in real world applications: the hard wayJ On The Beach
 
Big Data On Data You Don’t Have
Big Data On Data You Don’t HaveBig Data On Data You Don’t Have
Big Data On Data You Don’t HaveJ On The Beach
 
Acoustic Time Series in Industry 4.0: Improved Reliability and Cyber-Security...
Acoustic Time Series in Industry 4.0: Improved Reliability and Cyber-Security...Acoustic Time Series in Industry 4.0: Improved Reliability and Cyber-Security...
Acoustic Time Series in Industry 4.0: Improved Reliability and Cyber-Security...J On The Beach
 
Pushing it to the edge in IoT
Pushing it to the edge in IoTPushing it to the edge in IoT
Pushing it to the edge in IoTJ On The Beach
 
Drinking from the firehose, with virtual streams and virtual actors
Drinking from the firehose, with virtual streams and virtual actorsDrinking from the firehose, with virtual streams and virtual actors
Drinking from the firehose, with virtual streams and virtual actorsJ On The Beach
 
How do we deploy? From Punched cards to Immutable server pattern
How do we deploy? From Punched cards to Immutable server patternHow do we deploy? From Punched cards to Immutable server pattern
How do we deploy? From Punched cards to Immutable server patternJ On The Beach
 
When Cloud Native meets the Financial Sector
When Cloud Native meets the Financial SectorWhen Cloud Native meets the Financial Sector
When Cloud Native meets the Financial SectorJ On The Beach
 
The big data Universe. Literally.
The big data Universe. Literally.The big data Universe. Literally.
The big data Universe. Literally.J On The Beach
 
Streaming to a New Jakarta EE
Streaming to a New Jakarta EEStreaming to a New Jakarta EE
Streaming to a New Jakarta EEJ On The Beach
 
The TIPPSS Imperative for IoT - Ensuring Trust, Identity, Privacy, Protection...
The TIPPSS Imperative for IoT - Ensuring Trust, Identity, Privacy, Protection...The TIPPSS Imperative for IoT - Ensuring Trust, Identity, Privacy, Protection...
The TIPPSS Imperative for IoT - Ensuring Trust, Identity, Privacy, Protection...J On The Beach
 
Pushing AI to the Client with WebAssembly and Blazor
Pushing AI to the Client with WebAssembly and BlazorPushing AI to the Client with WebAssembly and Blazor
Pushing AI to the Client with WebAssembly and BlazorJ On The Beach
 
Axon Server went RAFTing
Axon Server went RAFTingAxon Server went RAFTing
Axon Server went RAFTingJ On The Beach
 
The Six Pitfalls of building a Microservices Architecture (and how to avoid t...
The Six Pitfalls of building a Microservices Architecture (and how to avoid t...The Six Pitfalls of building a Microservices Architecture (and how to avoid t...
The Six Pitfalls of building a Microservices Architecture (and how to avoid t...J On The Beach
 
Madaari : Ordering For The Monkeys
Madaari : Ordering For The MonkeysMadaari : Ordering For The Monkeys
Madaari : Ordering For The MonkeysJ On The Beach
 
Servers are doomed to fail
Servers are doomed to failServers are doomed to fail
Servers are doomed to failJ On The Beach
 
Interaction Protocols: It's all about good manners
Interaction Protocols: It's all about good mannersInteraction Protocols: It's all about good manners
Interaction Protocols: It's all about good mannersJ On The Beach
 
A race of two compilers: GraalVM JIT versus HotSpot JIT C2. Which one offers ...
A race of two compilers: GraalVM JIT versus HotSpot JIT C2. Which one offers ...A race of two compilers: GraalVM JIT versus HotSpot JIT C2. Which one offers ...
A race of two compilers: GraalVM JIT versus HotSpot JIT C2. Which one offers ...J On The Beach
 
Leadership at every level
Leadership at every levelLeadership at every level
Leadership at every levelJ On The Beach
 
Machine Learning: The Bare Math Behind Libraries
Machine Learning: The Bare Math Behind LibrariesMachine Learning: The Bare Math Behind Libraries
Machine Learning: The Bare Math Behind LibrariesJ On The Beach
 

More from J On The Beach (20)

Massively scalable ETL in real world applications: the hard way
Massively scalable ETL in real world applications: the hard wayMassively scalable ETL in real world applications: the hard way
Massively scalable ETL in real world applications: the hard way
 
Big Data On Data You Don’t Have
Big Data On Data You Don’t HaveBig Data On Data You Don’t Have
Big Data On Data You Don’t Have
 
Acoustic Time Series in Industry 4.0: Improved Reliability and Cyber-Security...
Acoustic Time Series in Industry 4.0: Improved Reliability and Cyber-Security...Acoustic Time Series in Industry 4.0: Improved Reliability and Cyber-Security...
Acoustic Time Series in Industry 4.0: Improved Reliability and Cyber-Security...
 
Pushing it to the edge in IoT
Pushing it to the edge in IoTPushing it to the edge in IoT
Pushing it to the edge in IoT
 
Drinking from the firehose, with virtual streams and virtual actors
Drinking from the firehose, with virtual streams and virtual actorsDrinking from the firehose, with virtual streams and virtual actors
Drinking from the firehose, with virtual streams and virtual actors
 
How do we deploy? From Punched cards to Immutable server pattern
How do we deploy? From Punched cards to Immutable server patternHow do we deploy? From Punched cards to Immutable server pattern
How do we deploy? From Punched cards to Immutable server pattern
 
Java, Turbocharged
Java, TurbochargedJava, Turbocharged
Java, Turbocharged
 
When Cloud Native meets the Financial Sector
When Cloud Native meets the Financial SectorWhen Cloud Native meets the Financial Sector
When Cloud Native meets the Financial Sector
 
The big data Universe. Literally.
The big data Universe. Literally.The big data Universe. Literally.
The big data Universe. Literally.
 
Streaming to a New Jakarta EE
Streaming to a New Jakarta EEStreaming to a New Jakarta EE
Streaming to a New Jakarta EE
 
The TIPPSS Imperative for IoT - Ensuring Trust, Identity, Privacy, Protection...
The TIPPSS Imperative for IoT - Ensuring Trust, Identity, Privacy, Protection...The TIPPSS Imperative for IoT - Ensuring Trust, Identity, Privacy, Protection...
The TIPPSS Imperative for IoT - Ensuring Trust, Identity, Privacy, Protection...
 
Pushing AI to the Client with WebAssembly and Blazor
Pushing AI to the Client with WebAssembly and BlazorPushing AI to the Client with WebAssembly and Blazor
Pushing AI to the Client with WebAssembly and Blazor
 
Axon Server went RAFTing
Axon Server went RAFTingAxon Server went RAFTing
Axon Server went RAFTing
 
The Six Pitfalls of building a Microservices Architecture (and how to avoid t...
The Six Pitfalls of building a Microservices Architecture (and how to avoid t...The Six Pitfalls of building a Microservices Architecture (and how to avoid t...
The Six Pitfalls of building a Microservices Architecture (and how to avoid t...
 
Madaari : Ordering For The Monkeys
Madaari : Ordering For The MonkeysMadaari : Ordering For The Monkeys
Madaari : Ordering For The Monkeys
 
Servers are doomed to fail
Servers are doomed to failServers are doomed to fail
Servers are doomed to fail
 
Interaction Protocols: It's all about good manners
Interaction Protocols: It's all about good mannersInteraction Protocols: It's all about good manners
Interaction Protocols: It's all about good manners
 
A race of two compilers: GraalVM JIT versus HotSpot JIT C2. Which one offers ...
A race of two compilers: GraalVM JIT versus HotSpot JIT C2. Which one offers ...A race of two compilers: GraalVM JIT versus HotSpot JIT C2. Which one offers ...
A race of two compilers: GraalVM JIT versus HotSpot JIT C2. Which one offers ...
 
Leadership at every level
Leadership at every levelLeadership at every level
Leadership at every level
 
Machine Learning: The Bare Math Behind Libraries
Machine Learning: The Bare Math Behind LibrariesMachine Learning: The Bare Math Behind Libraries
Machine Learning: The Bare Math Behind Libraries
 

Recently uploaded

Folding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesFolding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesPhilip Schwarz
 
Odoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 EnterpriseOdoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 Enterprisepreethippts
 
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...OnePlan Solutions
 
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...Angel Borroy López
 
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样umasea
 
Introduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdfIntroduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdfFerryKemperman
 
Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024Andreas Granig
 
Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...Velvetech LLC
 
Cyber security and its impact on E commerce
Cyber security and its impact on E commerceCyber security and its impact on E commerce
Cyber security and its impact on E commercemanigoyal112
 
Intelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalmIntelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalmSujith Sukumaran
 
Recruitment Management Software Benefits (Infographic)
Recruitment Management Software Benefits (Infographic)Recruitment Management Software Benefits (Infographic)
Recruitment Management Software Benefits (Infographic)Hr365.us smith
 
Ahmed Motair CV April 2024 (Senior SW Developer)
Ahmed Motair CV April 2024 (Senior SW Developer)Ahmed Motair CV April 2024 (Senior SW Developer)
Ahmed Motair CV April 2024 (Senior SW Developer)Ahmed Mater
 
What are the key points to focus on before starting to learn ETL Development....
What are the key points to focus on before starting to learn ETL Development....What are the key points to focus on before starting to learn ETL Development....
What are the key points to focus on before starting to learn ETL Development....kzayra69
 
React Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief UtamaReact Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief UtamaHanief Utama
 
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...Matt Ray
 
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...confluent
 
PREDICTING RIVER WATER QUALITY ppt presentation
PREDICTING  RIVER  WATER QUALITY  ppt presentationPREDICTING  RIVER  WATER QUALITY  ppt presentation
PREDICTING RIVER WATER QUALITY ppt presentationvaddepallysandeep122
 
A healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdfA healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdfMarharyta Nedzelska
 
英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作qr0udbr0
 

Recently uploaded (20)

Folding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesFolding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a series
 
Odoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 EnterpriseOdoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 Enterprise
 
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
 
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
 
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
 
Introduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdfIntroduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdf
 
Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024
 
Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...
 
Cyber security and its impact on E commerce
Cyber security and its impact on E commerceCyber security and its impact on E commerce
Cyber security and its impact on E commerce
 
Intelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalmIntelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalm
 
Recruitment Management Software Benefits (Infographic)
Recruitment Management Software Benefits (Infographic)Recruitment Management Software Benefits (Infographic)
Recruitment Management Software Benefits (Infographic)
 
Ahmed Motair CV April 2024 (Senior SW Developer)
Ahmed Motair CV April 2024 (Senior SW Developer)Ahmed Motair CV April 2024 (Senior SW Developer)
Ahmed Motair CV April 2024 (Senior SW Developer)
 
2.pdf Ejercicios de programación competitiva
2.pdf Ejercicios de programación competitiva2.pdf Ejercicios de programación competitiva
2.pdf Ejercicios de programación competitiva
 
What are the key points to focus on before starting to learn ETL Development....
What are the key points to focus on before starting to learn ETL Development....What are the key points to focus on before starting to learn ETL Development....
What are the key points to focus on before starting to learn ETL Development....
 
React Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief UtamaReact Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief Utama
 
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
 
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
 
PREDICTING RIVER WATER QUALITY ppt presentation
PREDICTING  RIVER  WATER QUALITY  ppt presentationPREDICTING  RIVER  WATER QUALITY  ppt presentation
PREDICTING RIVER WATER QUALITY ppt presentation
 
A healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdfA healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdf
 
英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作
 

A Java Implementer's Guide to Boosting Apache Spark Performance by Tim Ellison.

  • 1. © 2015 IBM Corporation A Java Implementer's Guide to Boosting Apache Spark Performance Tim Ellison IBM Runtimes Team, Hursley, UK tellison @tpellison Flickr: G B. CC BY­ND 2.0
  • 2. © 2016 IBM Corporation IBM's Java SE technology Reference Java Technology Oracle, open source, etc IBM Runtime Technology Centre Quality Engineering Performance Security Reliability Scalability Serviceability Production Requirements IBM Software Group IBM hardware ISVs IBM Clients AWT Swing Java2d XML Crypto Corba Core libraries “J9” virtual machine  Deep integration with hardware and software innovation  Available on more platforms than any other vendor  Heuristics optimised for product and customer scenarios
  • 3. © 2016 IBM Corporation3 Apache Spark is a fast, general purpose cluster computing platform
  • 4. © 2016 IBM Corporation4 SQL Streaming Machine Learning Graph Core Data Frames Machine Learning Pipelines
  • 5. © 2016 IBM Corporation5 Apache Spark APIs  Spark Core – Provides APIs for working with raw data collections – Map / reduce functions to transform and evaluate the data – Filter, aggregation, grouping, joins, sorting  Spark SQL – APIs for working with structured and semi-structured data – Loads data from a variety of sources (DB2, JSON, Parquet, etc) – Provides SQL interface to external tools (JDBC/ODBC)  Spark Streaming – Discretized streams of data arriving over time – Fault tolerant and long running tasks – Integrates with batch processing of data  Machine Learning (MLlib) – Efficient, iterative algorithms across distributed datasets – Focus on parallel algorithms that run well on clusters – Relatively low-level (e.g. K-means, alternating least squares)  Graph Computation (GraphX) – View the same data as graph or collection-based – Transform and join graphs to manipulate data sets – PageRank, Label propagation, strongly connected, triangle count, ...
  • 6. © 2016 IBM Corporation6 Cluster Computing Platform  Master Node “the driver” Evaluates user operations – Creates a physical execution plan to obtain the final result (a “job”) – Works backwards to determine what individual “tasks” are required to produce the answer – Optimizes the required tasks using pipelining for parallelizable tasks, reusing intermediate results, including persisting temporary states, etc (“stages of the job”) – Distributes work out to worker nodes – Tracks the location of data and tasks – Deals with errant workers  Worker Nodes “the executors” in a cluster Executes tasks – Receives a copy of the application code – Receives data, or the location of data partitions – Performs the required operation – Writes output to another input, or storage driver job job job executor task task task executor task task task
  • 7. © 2016 IBM Corporation7 Resilient Distributed Dataset  The Resilient Distributed Dataset (RDD) is the target of program operations  Conceptually, one large collection of all your data elements – can be huge!  Can be the original input data, or intermediate results from other operations  In the Apache Spark implementation, RDDs are: – Further decomposed into partitions – Persisted in memory or on disk – Fault tolerant – Lazily evaluated – Have a concept of location optimization RDD1 derived from partitions RDD1 partition1 RDD1 partition 2 RDD1 partition 1 RDD1 partition 3 RDD1 partition n... f(x) partitioner + preferred location
  • 8. © 2016 IBM Corporation8 Performance of the Apache Spark Runtime Core  Moving data blocks – How quickly can a worker get the data needed for this task? – How quickly can a worker persist the results if required?  Executing tasks – How quickly can a worker sort, compute, transform, … the data in this partition? – Can a fast worker work-steal or run speculative tasks? “Narrow” RDD dependencies e.g. map() pipeline-able “Wide” RDD dependencies e.g. reduce() shuffles RDD1 partition1 RDD1 partition 2 RDD1 partition 1 RDD1 partition 3 RDD1 partition n... RDD1 partition1 RDD2 partition 2 RDD2 partition 1 RDD2 partition 3 RDD2 partition n... RDD1 partition1 RDD3 partition 2 RDD3 partition 1 RDD3 partition 3 RDD3 partition n... RDD1 partition1 RDD1 partition 2 RDD1 partition 1 RDD1 partition 3 RDD1 partition n... RDD1 partition1 RDD2 partition 2 RDD2 partition 1
  • 9. © 2016 IBM Corporation9 A few things we can do with the JVM to enhance the performance of Apache Spark! 1) JIT compiler enhancements, and writing JIT-friendly code 2) Improving the object serializer 3) Faster IO – networking and storage 4) Offloading tasks to graphics co-processors (GPUs)
  • 10. © 2016 IBM Corporation10 JIT compiler enhancements, and writing JIT-friendly code
  • 11. © 2016 IBM Corporation11 Java Adaptive Compilation : trade off effort and benefit  The VM searches the JAR, loads and verifies bytecodes to internal representation, runs bytecode form directly  After many invocations (or via sampling) code gets compiled at ‘cold’ or ‘warm’ level  An internal, low overhead sampling thread is used to identify frequently used methods  Methods may get recompiled at ‘hot’ or ‘scorching’ levels (for more optimizations)  Transition to ‘scorching’ goes through a temporary profiling step cold hot scorching profiling interpreter warm Java's intermediate bytecodes are compiled as required and based on runtime profiling - code is compiled 'just in time' as required - dynamic compilation can determine the target machine capabilities and app demands The JIT takes a holistic view of the application, looking for global optimizations based on actual usage patterns, and speculative assumptions.
  • 12. © 2016 IBM Corporation12 JNI calls are not free! https://github.com/xerial/snappy­java/blob/develop/src/main/java/org/xerial/snappy/SnappyNative.cpp
  • 13. © 2016 IBM Corporation13 Style: Using JNI has an impact...  The cost of calling from Java code to natives and from natives to Java code is significantly higher (maybe 5x longer) than a normal Java method call. – The JIT can't in-line native methods. – The JIT can't do data flow analysis into JNI calls • e.g. it has to assume that all parameters are always used. – The JIT has to set up the call stack and parameters for C calling convention, • i.e. maybe rearranging items on the stack.  JNI can introduce additional data copying costs – There's no guarantee that you will get a direct pointer to the array / string with Get<type>ArrayElements(), even when using the GetPrimitiveArrayCritical versions. – The IBM JVM will always return a copy (to allow GC to continue).  Tip: – JNI natives are more expensive than plain Java calls. – e.g. create an unsafe based Snappy-like package written in Java code so that JNI cost is eliminated.
  • 14. © 2016 IBM Corporation14 Style: Use JIT optimizations to reduce overhead of logging checks  Tip: Check for the non-null value of a static field ref to instance of a logging class singleton – e.g. – Uses the JIT's speculative optimization to avoid the explicit test for logging being enabled; instead it ... 1)Generates an internal JIT runtime assumption (e.g. InfoLogger.class is undefined), 2)NOPs the test for trace enablement 3)Uses a class initialization hook for the InfoLogger.class (already necessary for instantiating the class) 4)The JIT will regenerate the test code if the class event is fired  Apache Spark's logging calls are gated on the checks of a static boolean value trait Logging Spark
  • 15. © 2016 IBM Corporation15 Style: Judicious use of polymorphism  Apache Spark has a number of highly polymorphic interface call sites and high fan-in (several calling contexts invoking the same callee method) in map, reduce, filter, flatMap, ... – e.g. ExternalSorter.insertAll is very hot (drains an iterator using hasNext/next calls)  Pattern #1: – InterruptibleIterator → Scala's mapIterator → Scala's filterIterator → …  Pattern #2: – InterruptibleIterator → Scala's filterIterator → Scala's mapIterator → …  The JIT can only choose one pattern to in-line! – Makes JIT devirtualization and speculation more risky; using profiling information from a different context could lead to incorrect devirtualization. – More conservative speculation, or good phase change detection and recovery are needed in the JIT compiler to avoid getting it wrong.  Lambdas and functions as arguments, by definition, introduce different code flow targets – Passing in widely implemented interfaces produce many different bytecode sequences – When we in-line we have to put runtime checks ahead of in-lined method bodies to make sure we are going to run the right method! – Often specialized classes are used only in a very limited number of places, but the majority of the code does not use these classes and pays a heavy penalty – e.g. Scala's attempt to specialize Tuple2 Int argument does more harm than good!  Tip: Use polymorphism sparingly, use the same order / patterns for nested & wrappered code, and keep call sites homogeneous.
  • 16. © 2016 IBM Corporation16 Effect of Adjusting JIT heuristics for Apache Spark IBM JDK8 SR3 (tuned) IBM JDK8 SR3 (out of the box) PageRank 160% 148% Sleep 101% 113% Sort 103% 147% WordCount 130% 146% Bayes 100% 91% Terasort 157% 131% Geometric mean 121% 116% 1/Geometric mean of HiBench time on zLinux 32 cores, 25G heap Improvements in successive IBM Java 8 releases Performance compared with OpenJDK 8 HiBench huge, Spark 1.5.2, Linux Power8 12 core * 8-way SMT 1.35x
  • 17. © 2016 IBM Corporation17 IBM Runtime performance ● IBM JDK is faster in all of the three Databricks performance scenarios we attempted ● 30% advantage in the 50 GB heap size scenario 30-60 GB is the sweet spot for showing large performance advantages compared to other JDK vendors
  • 18. © 2016 IBM Corporation18 Replacing the object serializer
  • 19. © 2016 IBM Corporation19 Writing an Apache Spark-friendly object serializer  Spark has a plug-in architecture for flattening objects to storage – Typically uses general purpose serializers, e.g. Java serializer, or Kryo, etc.  Can we optimize for Apache Spark usage? – Goal: Reduce time time to flatten objects – Goal: Reduce size of flattened objects  Expanding the list of specialist serialized form – Having custom write/read object methods allows for reduced time in reflection and smaller on-wire payloads. – Types such as Tuple and Some given special treatment in the serializer  Sharing object representation within the serialized stream to reduce payload – But may be defeated if supportsRelocationOfSerializedObjects required  Reduce the payload size further using variable length encoding of primitive types. – All objects are eventually decomposed into primitives
  • 20. © 2016 IBM Corporation20 Writing an Apache Spark-friendly object serializer  Adaptive stack-based recursive serialization vs. state machine serialization – Use the stack to track state wherever possible, but fall back to state machine for deeply nested objects (e.g. big RDDs)  Special replacement of deserialization calls to avoid stack-walking to find class loader context – Optimization in JIT to circumvent some regular calls to more efficient versions  Tip: These are opaque to the application, no special patterns required.  Results: Variable, small numbers of percentages at best
  • 21. © 2016 IBM Corporation21 Faster IO – networking and storage
  • 22. © 2016 IBM Corporation Remote Direct Memory Access (RDMA) Networking Spark VM Buffer Off Heap Buffer Spark VM Buffer Off Heap Buffer Ether/IB SwitchRDMA NIC/HCA RDMA NIC/HCA OS OS DMA DMA (Z-Copy) (Z-Copy) (B-Copy)(B-Copy) Acronyms: Z-Copy – Zero Copy B-Copy – Buffer Copy IB – InfiniBand Ether - Ethernet NIC – Network Interface Card HCA – Host Control Adapter ● Low-latency, high-throughput networking ● Direct 'application to application' memory pointer exchange between remote hosts ● Off-load network processing to RDMA NIC/HCA – OS/Kernel Bypass (zero-copy) ● Introduces new IO characteristics that can influence the Spark transfer plan Spark node #1 Spark node #2
  • 23. © 2016 IBM Corporation23 TCP/IP RDMA RDMA exhibits improved throughput and reduced latency. Available over java.net.Socket APIs or explicit jVerbs calls Characteristics of RDMA Networking
  • 24. © 2016 IBM Corporation Modifications for an RDMA-enabled Apache Spark 24 New dynamic transfer plan that adapts to the load and responsiveness of the remote hosts. New “RDMA” shuffle IO mode with lower latency and higher throughput. JVM-agnostic IBM JVM only JVM-agnostic IBM JVM only IBM JVM only Block manipulation (i.e., RDD partitions) High-level API JVM-agnostic working prototype with RDMA
  • 25. © 2016 IBM Corporation TCP-H benchmark 100Gb 30% improvement in database operations Shuffle-intensive benchmarks show 30% - 40% better performance with RDMA HiBench PageRank 3Gb 40% faster, lower CPU usage 32 cores (1 master, 4 nodes x 8 cores/node, 32GB Mem/node)
  • 26. © 2016 IBM Corporation26 Time to complete TeraSort benchmark 32 cores (1 master, 4 nodes x 8 cores/node, 32GB Mem/node), IBM Java 8 0 100 200 300 400 500 600 Spark HiBench TeraSort [30GB] Execution Time (sec) 556s 159s TCP/IP JSoR
  • 27. © 2016 IBM Corporation27 Faster storage with POWER CAPI/Flash  POWER8 architecture offers a 40Tb Flash drive attached via Coherent Accelerator Processor Interface (CAPI) – Provides simple coherent block IO APIs – No file system overhead  Power Service Layer (PSL) – Performs Address Translations – Maintains Cache – Simple, but powerful interface to the Accelerator unit  Coherent Accelerator Processor Proxy (CAPP) – Maintains directory of cache lines held by Accelerator – Snoops PowerBus on behalf of Accelerator 
  • 28. © 2016 IBM Corporation28 Faster disk IO with CAPI/Flash-enabled Spark  When under memory pressure, Spark spills RDDs to disk. – Happens in ExternalAppendOnlyMap and ExternalSorter  We have modified Spark to spill to the high-bandwidth, coherently-attached Flash device instead. – Replacement for DiskBlockManager – New FlashBlockManager handles spill to/from flash  Making this pluggable requires some further abstraction in Spark: – Spill code assumes using disks, and depends on DiskBlockManger – We are spilling without using a file system layer  Dramatically improves performance of executors under memory pressure.  Allows to reach similar performance with much less memory (denser deployments). IBM Flash System 840Power8 + CAPI
  • 29. © 2016 IBM Corporation29 e.g. using CAPI Flash for RDD caching allows for 4X memory reduction while maintaining equal performance
  • 30. © 2016 IBM Corporation30 Offloading tasks to graphics co-processors
  • 31. © 2016 IBM Corporation31 GPU-enabled array sort method IBM Power 8 with Nvidia K40m GPU  Some Arrays.sort() methods will offload work to GPUs today – e.g. sorting large arrays of ints
  • 32. © 2016 IBM Corporation32 JIT optimized GPU acceleration  Comes with caveats – Recognize a limited set of operations within the lambda expressions, • notably no object references maintained on GPU – Default grid dimensions and operating parameters for the GPU workload – Redundant/pessimistic data transfer between host and device • Not using GPU shared memory – Limited heuristics about when to invoke the GPU and when to generate CPU instructions  As the JIT compiles a stream expression we can identify candidates for GPU off-loading – Arrays copied to and from the device implicitly – Java operations mapped to GPU kernel operations – Preserves the standard Java syntax and semantics bytecodes intermediate representation optimizer CPU GPU code generator code generator PTX ISACPU native
  • 33. © 2016 IBM Corporation33 GPU optimization of Lambda expressions Speed-up factor when run on a GPU enabled host IBM Power 8 with Nvidia K40m GPU 0.00 0.01 0.10 1.00 10.00 100.00 1000.00 auto-SIMD parallel forEach on CPU parallel forEach on GPU matrix size The JIT can recognize parallel stream code, and automatically compile down to the GPU.
  • 34. © 2016 IBM Corporation Learn Predict Moving high-level algorithms onto the GPU Drug1 Drug2 Aspirin Gliclazide Aspirin Dicoumarol Drug1 Drug2 Sim Salsalate Aspirin .9 Dicoumarol Warfarin .76 Known Interactions of type 1 to … Drug1 Drug2 Best Sim1*Sim1 Best SimN*SimN Salsalate Gliclazid e .9*1 .7*1 Salsalate Warfarin .9*.76 .7*.6 Chemical Similarity Drug1 Drug2 Prediction Salsalate Gliclazide 0.85 Salsalate Warfarin 0.7 … Drug1 Drug2 Prediction Salsalate Gliclazide 0.53 Salsalate Warfarin 0.32 Logistic Regression ModelDrug1 Drug2 Sim Salsalate Aspirin .7 Dicoumarol Warfarin .6 Interactions Ingest Drug1 Drug2 Aspirin Probenecid Aspirin Azilsartan Interactions Prediction
  • 35. © 2016 IBM Corporation • 25X Speed up for Building Model stage (replacing Spark Mllib Logistic Regression) • Transparent to the Spark application, but requires changes to Spark itself
  • 36. © 2016 IBM Corporation36 Summary  We are focused on Core runtime performance to get a multiplier up the Spark stack. – More efficient code, more efficient memory usage/spilling, more efficient serialization & networking, etc.  There are hardware and software technologies we can bring to the party. – We can tune the stack from hardware to high level structures for running Spark.  Spark and Scala developers can help themselves by their style of coding.  All the changes are being made in the Java runtime or being pushed out to the Spark community.  There is lots more stuff I don't have time to talk about, like GC optimizations, object layout, monitoring VM/Spark events, hardware compression, security, etc. etc. – mailto: http://ibm.biz/spark­kit