Primeros pasos con Apache Spark - Madrid Meetup

Post on 27-Jun-2015

689 views 0 download

Tags:

description

Primeros pasos con Spark dentro del Apache Spark Meetup group de Madrid (http://www.meetup.com/Madrid-Apache-Spark-meetup/events/198362002/) Contenido: - Introdución - Conceptos básicos - Ecosistema Spark - Instalación del entorno - Errores comunes

transcript

Primeros pasos

con Spark

Apache Spark Madrid Meetup

Daniel Higuero

dhiguero@stratio.com

@dhiguero

1

• Introducción

• Conceptos básicos

• Ecosistema Spark

• Instalación del entorno

• Errores comunes

Agenda

2

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.

Introducción

4

o ¿Qué es Spark?

o Framework de procesamiento paralelo

o Historia

Introducción

Apache Spark Madrid Meetup 5

https://spark.apache.org/

Apache Software Foundation

o Concepto de programación funcional

o Popularizado 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

Map-Reduce

7

Input data

Map

Map

Map

Map

Reduce

Reduce

Reduce

result

Apache Spark Madrid Meetup

o Mayor flexibilidad en la definición de transformaciones

o Menor uso de almacenamiento en disco

o Aprovechamiento de la memoria

o Tolerancia a fallos

o Tracción de la comunidad

Ventajas de Spark

Apache Spark Madrid Meetup 8

Conceptos básicos

9

o Abstracción básica en Spark

o Contiene 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

o Representa la conexión a un cluster Spark

o Permite crear distintos tipos de variables

• RDD

• Acumuladores

• Broadcast

SparkContext

Apache Spark Madrid Meetup 11

new SparkContext(master: String, appName: String, conf: SparkConf)

Ecosistema

12

Ecosistema Spark

13 Apache Spark Madrid Meetup

© databricks

o Proporciona 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

o Permite transformar una fuente streaming en un conjunto de mini-batch

• Definición de una ventana

Temporal

Spark Streaming

15 Apache Spark Madrid Meetup

Spark Streaming

16 Apache Spark Madrid Meetup

Window = 5

batch0 batch1 batch2 batch3 batch4 batch5 batch6 batch7

tiempo

tiempo

o Librería para Machine Learning

o Abstracciones útiles para cómputo

o Vectores, Matrices dispersas

o Implementación de algoritmos conocidos

o Clasificación, regresión, collaborative filtering y clustering

MLlib

17 Apache Spark Madrid Meetup

o Capa de acceso SQL para ejecutar operaciones sobre RDD

o SchemaRDD

SparkSQL

18 Apache Spark Madrid Meetup

sqlCtx = new HiveContext(sc) results = sqlCtx.sql( "SELECT * FROM people") names = results.map(lambda p: p.name)

© databricks

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)

o GraphX

• Soporte para grafos

o SparkR

• Permite conectar R con Spark

o BlinkDB

• 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) => ... }

Errores comunes

21

o URL del master

o No distribuir los JAR entre los workers

o Funciones con clases no serializables

o Funciona en local -> funciona en distribuido

o Memory leaks y eficiencia GC en operadores

o Confusión operadores (reduce vs group-by)

Errores comunes

#CassandraSummit 2014 22

Certificaciones

23

o Distribuciones certificadas

o Certificación de desarrolladores

o Centros de formación certificados

Certificaciones

#CassandraSummit 2014 24

Primeros pasos

con Spark

Apache Spark Madrid Meetup

Daniel Higuero

dhiguero@stratio.com

@dhiguero

25