50
SPARK Alexey Diomin, [email protected]

«Почему Spark отнюдь не так хорош»

  • Upload
    -

  • View
    332

  • Download
    0

Embed Size (px)

Citation preview

Page 1: «Почему Spark отнюдь не так хорош»

SPARK

Alexey Diomin, [email protected]

Page 2: «Почему Spark отнюдь не так хорош»

Intro

Page 3: «Почему Spark отнюдь не так хорош»

Basic

RDD

DAG

Page 4: «Почему Spark отнюдь не так хорош»

RDD

Resilient Distributed Dataset

Page 5: «Почему Spark отнюдь не так хорош»

RDD

Resilient Distributed Dataset

SchemaRDD

Page 6: «Почему Spark отнюдь не так хорош»

DAG

Page 7: «Почему Spark отнюдь не так хорош»

DAG

Page 8: «Почему Spark отнюдь не так хорош»

DAG

Page 9: «Почему Spark отнюдь не так хорош»

Mythology

Spark is not MapReduce

Page 10: «Почему Spark отнюдь не так хорош»

Mythology

Spark is not MapReduce

Run programs up to 100x faster than

MapReduce in memory, or 10x faster on disk

Page 11: «Почему Spark отнюдь не так хорош»

Mythology

Spark is not MapReduce

Run programs up to 100x faster than

MapReduce in memory, or 10x faster on disk

InMemory processing

Page 12: «Почему Spark отнюдь не так хорош»

Mythology

Spark is not MapReduce

Run programs up to 100x faster than

MapReduce in memory, or 10x faster on disk

InMemory processing

Spark Streaming is real-time streaming

Page 13: «Почему Spark отнюдь не так хорош»

Mythology

Spark is not MapReduce

Run programs up to 100x faster than

MapReduce in memory, or 10x faster on disk

InMemory processing

Spark Streaming is real-time streaming

Lightning-fast cluster computing

Page 14: «Почему Spark отнюдь не так хорош»

MapReduce

Page 15: «Почему Spark отнюдь не так хорош»

MapReduce

Page 16: «Почему Spark отнюдь не так хорош»

MapReduce

Page 17: «Почему Spark отнюдь не так хорош»

Not MapReduce

Page 18: «Почему Spark отнюдь не так хорош»

Spark

Run programs up to 100x faster than

MapReduce in memory, or 10x faster on disk

Page 19: «Почему Spark отнюдь не так хорош»

Spark

Run programs up to 100x faster than Hadoop

MapReduce* in memory, or 10x faster on disk

*Hadoop without Tez

Page 20: «Почему Spark отнюдь не так хорош»

http://spark.apache.org/

Page 21: «Почему Spark отнюдь не так хорош»

InMemory

Page 22: «Почему Spark отнюдь не так хорош»

InMemory

The MapReduce and Spark shuffles use a “pull”

model. Every map task writes out data to local

disk, and then the reduce tasks make remote

requests to fetch that data

http://blog.cloudera.com/blog/2015/01/improving-sort-performance-in-apache-spark-its-a-double/

Page 23: «Почему Spark отнюдь не так хорош»

Spark Streaming

RDD

DAG

Page 24: «Почему Spark отнюдь не так хорош»

Spark Streaming

Page 25: «Почему Spark отнюдь не так хорош»

Spark Streaming

Receiver.store(...)

Page 26: «Почему Spark отнюдь не так хорош»

Spark Streaming

Page 27: «Почему Spark отнюдь не так хорош»

Google Cloud Dataflow

One of the most compelling aspects of Cloud

Dataflow is its approach to one of the most

difficult problems facing data engineers: how to

develop pipeline logic that can execute in both

batch and streaming contexts.

http://blog.cloudera.com/blog/2015/01/new-in-cloudera-labs-google-cloud-

dataflow-on-apache-spark/

Page 28: «Почему Spark отнюдь не так хорош»

Lightning-fast cluster computing

Page 29: «Почему Spark отнюдь не так хорош»

Lightning-fast cluster computing

Page 30: «Почему Spark отнюдь не так хорош»

Lightning-fast cluster computing

Page 31: «Почему Spark отнюдь не так хорош»

Lightning-fast cluster computing

Page 32: «Почему Spark отнюдь не так хорош»

Lightning-fast cluster computing

Page 33: «Почему Spark отнюдь не так хорош»

Spark

Logging

Pipeline

Indexes

Job progress

Effective Memory

Network

Page 34: «Почему Spark отнюдь не так хорош»

Example

Page 35: «Почему Spark отнюдь не так хорош»

Staged (batch) execution

Page 36: «Почему Spark отнюдь не так хорош»

Pipelined execution

Page 37: «Почему Spark отнюдь не так хорош»

Indexes

Netflix

https://github.com/amplab/spark-indexedrdd

Page 38: «Почему Spark отнюдь не так хорош»

Job Progress

Accumulators

Broadcast

Page 39: «Почему Spark отнюдь не так хорош»

Memory

val value = task.run(taskId, attemptNumber)

Page 40: «Почему Spark отнюдь не так хорош»

Memory

val value = task.run(taskId, attemptNumber)

val valueBytes = resultSer.serialize(value)

Page 41: «Почему Spark отнюдь не так хорош»

Memory

val value = task.run(taskId, attemptNumber)

val valueBytes = resultSer.serialize(value)

val directResult = new DirectTaskResult(valueBytes,

accumUpdates, task.metrics.orNull)

val serializedDirectResult = ser.serialize(directResult)

Page 42: «Почему Spark отнюдь не так хорош»

Memory

val value = task.run(taskId, attemptNumber)

val valueBytes = resultSer.serialize(value)

val directResult = new DirectTaskResult(valueBytes, accumUpdates, task.metrics.orNull)

val serializedDirectResult = ser.serialize(directResult)

Default JavaSerializer

public synchronized byte toByteArray()[] {

return Arrays.copyOf(buf, count);

}

Page 43: «Почему Spark отнюдь не так хорош»

Network

Page 44: «Почему Spark отнюдь не так хорош»

Network

Page 45: «Почему Spark отнюдь не так хорош»

Network

Problem with firewall/nat/multiple ip/etc.

Page 46: «Почему Spark отнюдь не так хорош»

SQL

Shark (dead)

Spark SQL

Spark on Hive

Page 47: «Почему Spark отнюдь не так хорош»

SparkR

Page 48: «Почему Spark отнюдь не так хорош»

SparkR

Unstable API

Minimum docs

Page 49: «Почему Spark отнюдь не так хорош»

SparkR

Unstable API

Minimum docs

Rstudio Server

Page 50: «Почему Spark отнюдь не так хорош»

Links

Spark

http://spark.apache.org/

Flink

http://flink.apache.org/

Tez

http://tez.apache.org/