introducción a apache spark
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.comTRANSCRIPT
Introducción Apache Spark
Gustavo [email protected]@arjones
Co-founder & CTO, Socialmetrix
Lic. Ciencias ComputaciónMBA Marketing Servicios
Brasileño, en ARG desde 2008
Gustavo Arjones
Qué esApache 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
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
Porqué me gusta?
Viene de buen “origen”BDAS, the Berkeley Data Analytics Stack (AMPLAB)
Compacto y poderoso• Escrito en Scala, con wrappers para Python y Java*
API muy expresiva
Ver: https://spark.apache.org/docs/latest/api/scala/#org.apache.spark.rdd.RDD
• Aprender, prototipado rápido• Análisis interactivo sobre los datos
Consola interactiva
Plataforma Unificada
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
Plataforma Unificada (lines of code)
Hadoop MapReduce
Storm (Streaming)
Impala (SQL) Giraph (Graph)
Spark0
20000400006000080000
100000120000140000
non-test, non-example source lines
GraphX
StreamingSparkSQL
Spark UI
Código Testeable!• El contexto puede crear RDD
Proyecto muy activo (y ganando tracción)
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
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???
Y Hadoop?
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
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)
Spark y Hadoop pueden ser amigos• YARN / Mesos• Acceso HDFS / S3• Usando Input/Output formats
de Hadoop
DEMOhttp://bit.ly/NardozSparkDemo
Donde aprender más?
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/