Este documento presenta una introducción a Apache Spark. Explica conceptos clave como RDD, SparkContext y el ecosistema de Spark, incluyendo Spark Core, Spark Streaming, MLlib, SparkSQL y GraphX. También identifica errores comunes como configurar incorrectamente el URL del master o no distribuir los JAR entre los nodos del cluster. El objetivo es proporcionar una visión general de Spark para desarrolladores.
3. 3
VIEWER DISCRETION IS ADVISED
All elephants are innocent until proven guilty in a court of development
Opinions expressed are solely my own and do not express the views or opinions of my employer.
5. o¿Qué es Spark?
oFramework de procesamiento paralelo
oHistoria
Introducción
Apache Spark Madrid Meetup
5
https://spark.apache.org/
Apache Software Foundation
6. oConcepto de programación funcional
oPopularizado por Google
Map-reduce
6
(map 'list (lambda (x) (+ x 10)) '(1 2 3 4)) => (11 12 13 14) (reduce #'+ '(1 2 3 4)) => 10
Jeff Dean and Sanjay Ghemawat. "MapReduce: Simplified Data Processing on Large Clusters." OSDI (2004)
Apache Spark Madrid Meetup
7. Map-Reduce
7
Input data
Map
Map
Map
Map
Reduce
Reduce
Reduce
result
Apache Spark Madrid Meetup
8. oMayor flexibilidad en la definición de transformaciones
oMenor uso de almacenamiento en disco
oAprovechamiento de la memoria
oTolerancia a fallos
oTracción de la comunidad
Ventajas de Spark
Apache Spark Madrid Meetup
8
10. oAbstracción básica en Spark
oContiene las transformaciones que se van a realizar sobre un conjunto de datos
•Inmutable
•Lazy evaluation
•En caso de fallo se puede recuperar el estado
•Control de persistencia y particionado
RDD
Apache Spark Madrid Meetup
10
11. oRepresenta la conexión a un cluster Spark
oPermite crear distintos tipos de variables
•RDD
•Acumuladores
•Broadcast
SparkContext
Apache Spark Madrid Meetup
11
new SparkContext(master: String, appName: String, conf: SparkConf)
14. oProporciona las abstracciones básicas y se encarga del scheduling
Spark core engine
14
Apache Spark Madrid Meetup
RDD
DAG Scheduling
Cluster manager
Threads
Block manager
Task scheduling
Worker
15. oPermite transformar una fuente streaming en un conjunto de mini-batch
•Definición de una ventana
Temporal
Spark Streaming
15
Apache Spark Madrid Meetup
16. Spark Streaming
16
Apache Spark Madrid Meetup
Window = 5
batch0
batch1
batch2
batch3
batch4
batch5
batch6
batch7
tiempo
tiempo
17. oLibrería para Machine Learning
oAbstracciones útiles para cómputo
oVectores, Matrices dispersas
oImplementación de algoritmos conocidos
oClasificación, regresión, collaborative filtering y clustering
MLlib
17
Apache Spark Madrid Meetup
19. SparkSQL (II)
19
Apache Spark Madrid Meetup
val sqlContext = new org.apache.spark.sql.SQLContext(sc) import sqlContext.createSchemaRDD case class Person(name: String, age: Int) val people = sc.textFile("examples/src/main/resources/people.txt") .map(_.split(",")) .map(p => Person(p(0), p(1).trim.toInt)) people.registerAsTable("people") val teenagers = sqlContext .sql("SELECT name FROM people WHERE age >= 13 AND age <= 19") teenagers.map(t => "Name: " + t(0)).collect().foreach(println)
20. oGraphX
•Soporte para grafos
oSparkR
•Permite conectar R con Spark
oBlinkDB
•Base de datos que ofrece funciones aproximadas
Otros
20
Apache Spark Madrid Meetup
graph = Graph(vertices, edges) messages = spark.textFile("hdfs://...") graph2 = graph.joinVertices(messages) { (id, vertex, msg) => ... }
22. oURL del master
oNo distribuir los JAR entre los workers
oFunciones con clases no serializables
oFunciona en local -> funciona en distribuido
oMemory leaks y eficiencia GC en operadores
oConfusión operadores (reduce vs group-by)
Errores comunes
#CassandraSummit 2014
22