Introducción a Apache Spark

26
Introducción Apache Spark Gustavo Arjones [email protected] @arjones

description

Introducción (en Español) al framework de procesamiento distribuido en memoria Apache Spark. Elementos básicos de Spark, RDD, incluye demo de las librerías SparkSQL y Spark Streaming Presentado en www.nardoz.com

Transcript of Introducción a Apache Spark

Page 1: Introducción a Apache Spark

Introducción Apache Spark

Gustavo [email protected]@arjones

Page 2: Introducción a Apache Spark

Co-founder & CTO, Socialmetrix

Lic. Ciencias ComputaciónMBA Marketing Servicios

@[email protected]

Brasileño, en ARG desde 2008

Gustavo Arjones

Page 3: Introducción a Apache Spark

Qué esApache Spark?

Page 4: Introducción a Apache Spark

Qué es Spark?

Apache Spark™ is a fast and general engine for large-scale data processing.

• Procesamiento In-memory (preferencialmente)

• Framework de Procesamiento Unificado

• Para Ingenieros & Data Scientists

Page 5: Introducción a Apache Spark

Principales PilaresTask Scheduler• Prepara los jobs a traves de DAG (Directed acyclic

graph)• Enganchan funciones para ejecutar los stages• Cache-aware; considera data utilización & localización

(data locality)• Partitioning-aware para reducir shuffles por la red

RDD (Resilient Distributed Datasets)• Estructura de datos Immutable (In-memory)• Tolerante a fallas (Se reama en caso de falla)• Estructura de datos que puede ser operada en

paralelo•Rica interfaz de Transformations & Actions

Page 6: Introducción a Apache Spark

Porqué me gusta?

Page 7: Introducción a Apache Spark

Viene de buen “origen”BDAS, the Berkeley Data Analytics Stack (AMPLAB)

Page 8: Introducción a Apache Spark

Compacto y poderoso• Escrito en Scala, con wrappers para Python y Java*

Page 9: Introducción a Apache Spark

API muy expresiva

Ver: https://spark.apache.org/docs/latest/api/scala/#org.apache.spark.rdd.RDD

Page 10: Introducción a Apache Spark

• Aprender, prototipado rápido• Análisis interactivo sobre los datos

Consola interactiva

Page 11: Introducción a Apache Spark

Plataforma Unificada

Page 12: Introducción a Apache Spark

Plataforma Unificada

• No es necesario copiar datos/ETL entre sistemas

• Varios tipos de procesamientos en el mismo código (claridad)

• Reutilización de código (Batch & Realtime)

• Un único sistema para aprender

• Un único sistema para mantener

Big Deal para Arquitectura Lambda

Page 13: Introducción a Apache Spark

Plataforma Unificada (lines of code)

Hadoop MapReduce

Storm (Streaming)

Impala (SQL) Giraph (Graph)

Spark0

20000400006000080000

100000120000140000

non-test, non-example source lines

GraphX

StreamingSparkSQL

Page 14: Introducción a Apache Spark

Spark UI

Page 15: Introducción a Apache Spark

Código Testeable!• El contexto puede crear RDD

Page 16: Introducción a Apache Spark

Proyecto muy activo (y ganando tracción)

Page 17: Introducción a Apache Spark

Proyecto MUY activo (y ganando tracción)

*as of June 1, 2014

Patches0

50

100

150

200

250

MapReduce StormYarn Spark

Lines Added0

5000

10000

15000

20000

25000

30000

35000

40000

45000

MapReduce StormYarn Spark

Lines Removed0

2000

4000

6000

8000

10000

12000

14000

16000

MapReduce StormYarn Spark

Page 18: Introducción a Apache Spark

Y más …• Esfuerzo para estandarización de la plataforma

• Certificación para Distros & Apps gratis

• Material de training gratis

• Databricks levantó $47M

• Databricks Cloud???

Page 19: Introducción a Apache Spark

Y Hadoop?

Page 20: Introducción a Apache Spark

Modelo Map-Reduce

iter. 1 iter. 2 . . .

Input

HDFSread

HDFSwrite

HDFSread

HDFSwrite

Input

query 1

query 2

query 3

result 1

result 2

result 3

. . .

HDFSread

Lento porque necesita replicación, serialización y I/O

Page 21: Introducción a Apache Spark

iter. 1 iter. 2 . . .

Input

Distributedmemory

Input

query 1

query 2

query 3

. . .

one-timeprocessing

10-100× más rápido

Spark (in-memory + DAG execution engine)

Page 22: Introducción a Apache Spark

Spark y Hadoop pueden ser amigos• YARN / Mesos• Acceso HDFS / S3• Usando Input/Output formats

de Hadoop

Page 23: Introducción a Apache Spark

DEMOhttp://bit.ly/NardozSparkDemo

Page 24: Introducción a Apache Spark

Donde aprender más?

Page 25: Introducción a Apache Spark

Mucha documentación disponible

https://spark.apache.org/documentation.html

http://spark-summit.org/2014/training

http://shop.oreilly.com/product/0636920028512.do

http://arjon.es/tag/spark/

Page 26: Introducción a Apache Spark

Gracias & Obrigado!

Gustavo Arjones

[email protected]@arjones