PDF de programación - Introducción a Apache Spark

Imágen de pdf Introducción a Apache Spark

Introducción a Apache Sparkgráfica de visualizaciones

Publicado el 16 de Junio del 2019
1.239 visualizaciones desde el 16 de Junio del 2019
1,1 MB
87 paginas
Creado hace 2a (17/03/2017)
Máster en Big Data y Data Science

17/03/2017

Ecosistema Spark

Introducción a Apache Spark

Gonzalo Martínez Muñoz

Hadoop Map-Reduce. Contar palabras

Map

Reduce

Map Reduce

En un lugar de la Mancha,

de cuyo nombre no quiero

acordarme,

no ha mucho tiempo que

vivía

un hidalgo de los de lanza

en astillero,



{En: 1, un: 1,

lugar: 1…}

{de: 1, cuyo:
1, nombre:1}



{…}

a-c

c-h

x-z

{a: 43, …}

{de:14,ha:10,

…}



{…}



En Hadoop se
alterna disco
(lento) y cpu



Máster en Big Data y Data Science

Solución de spark
Usar memoria
1

Ecosistema Spark

Coste de la
memoria

Mínimo de
0’2 cent/MB

Disco

http://www.jcmit.com/mem2015.htm

Máster en Big Data y Data Science

Ecosistema Spark

2

¿Qué es Apache Spark?

 Spark es una plataforma de

computación para clústers

 Es de propósito general.

 Desarrollo simplificado

 Trabaja en memoria

 Rápido

 Permite trabajo interactivo,

streaming…

Máster en Big Data y Data Science

Ecosistema Spark

3

En qué mejora Spark a Hadoop

 Velocidad

 Simplicidad del API

 Ejecución Batch, interactiva,

streaming vs solo batch en hadoop

 Integra varias herramientas: SQL,

grafos, etc.

 Varias APIs: Java, scala, R, python.

Hadoop solo java

Máster en Big Data y Data Science

Ecosistema Spark

4

Velocidad

 Puede ser hasta 100x más rápido que Hadoop

Logistic regression in Hadoop and Spark

Máster en Big Data y Data Science

Ecosistema Spark

5

Ordenando 1PB. Resultados de 2014

https://databricks.com/blog/2014/11/05/spark-officially-sets-a-new-record-in-large-scale-sorting.html

Máster en Big Data y Data Science

Ecosistema Spark

6

Resultados de 2016. Spark primero en Cloud

http://sortbenchmark.org

Máster en Big Data y Data Science

Ecosistema Spark

7

Simplicidad

Contar
palabras
en
Hadoop

Contar palabras en Spark (python)

Máster en Big Data y Data Science

Ecosistema Spark

8

Aplicaciones

 SQL

 Streaming

 GraphX

 MLlib

Máster en Big Data y Data Science

Ecosistema Spark

9

Algunos hechos: salario por expertise

2014 Data Science Salary Survey, O’Reilly

800 respuestas
de 53 países y
41 estados de
EEUU

Máster en Big Data y Data Science

Ecosistema Spark

10

Historia

 En 2009 surge dentro de un proyecto de

investigación en Berkeley

 La idea era hacer algo rápido para consultas

interactivas. De aquí el utilizar datos en
memoria

 En 2010 se hace de código abierto

 En 2013 se transfiere a la fundación Apache.

 Spin-off databricks

 Actualmente en versión 2.1

Máster en Big Data y Data Science

Ecosistema Spark

11

Arquitectura

 Muy versátil. Puede trabajar:

 Standalone.
 Sobre la nube de Amazon
 Sobre Hadoop

 Fuentes de datos:

 Ficheros locales
 HDFS
 Cassandra
 MongoDB
 Hive
 postgresQL, mySQL
 S3 amazon
 …

Máster en Big Data y Data Science

Ecosistema Spark

12

Aspectos básicos

 pyspark: interfaz python a Spark. Nos permite

ejecutar tareas en paralelo de forma sencilla.

 A partir de unos datos, se definirá una secuencia de

transformaciones y acciones que se ejecutan en
paralelo.

 La gestión de la paralelización es transparente para el

programador

Máster en Big Data y Data Science

Ecosistema Spark

13

Aspectos básicos

 Arrancar la consola interactiva ipython con Spark

> ruta/a/pyspark

 Arrancar un notebook de Python con Spark

> IPYTHON_OPTS="notebook" ruta/a/pyspark

 Tras arrancar el notebook se muestra el directorio

desde donde se arranca en el navegador

Máster en Big Data y Data Science

Ecosistema Spark

14

Aspectos básicos

 Arrancar la máquina virtual:

vagrant up

 Abrir en el navegador: http://localhost:8008

 Abrir un notebook de pyspark

 New→notebook→Pyspark (Py 2)

 Esto arranca un notebook con el kernel pyspark

 Cerrar la máquina virtual:

vagrant halt

Máster en Big Data y Data Science

Ecosistema Spark

15

Un programa spark

Los workers ejecutan el programa.
Tienen una cache (memoria) para
almacenar resultados intermedios

Driver program

SparkContext

Cluster manager

Driver es el que accede
a lo que hay por debajo.
Gestiona la ejecución de
los programas. En
pyspark se accede a
través de la variable:

sc

Worker program



Worker program

Executor
[Cache]

Executor
[Cache]

Datos: HDFS, ficheros, S3 amazon, etc

Máster en Big Data y Data Science

Ecosistema Spark

16

Resilient Distributed Datasets (RDDs)

 Trabajaremos sobre colecciones de datos denominadas

RDD:

 Es el concepto básico de trabajo en Spark

 Son inmutables. Es decir una vez creados no se pueden

modificar.

 Se pueden transformar para crear nuevos RDDs o realizar

acciones sobre ellos pero no modificar.

 Se guarda la secuencia de transformaciones para poder

recuperar RDDs de forma eficiente si alguna máquina se cae

 Están distribuidos en el clúster en los nodos workers

Máster en Big Data y Data Science

Ecosistema Spark

17

Ciclo de vida de una aplicación en Spark

RDD (Datos)

Serie de
transformaciones

cache

Serie de acciones

•Datos distribuidos
en los workers

•Inmutables

•Operaciones cuyo
resultado es otro
RDD

•No se ejecutan
inmediatamente

•Algún RDD se
puede mantener
en memoria
mediante la
función cache()

•Evita recalcular

•Operaciones que
devuelven
resultados al driver

•Desencadenan la
ejecución de las
transformaciones
definidas

Máster en Big Data y Data Science

Ecosistema Spark

18

Recordatorio funciones lambda de python

 Son funciones anónimas. Por ejemplo, para sumar dos

números:

lambda a, b: a + b

 Se pueden usar cuando haya que pasar una función

como parámetro

 Tienen una única instrucción cuyo valor corresponde al

valor devuelto

Máster en Big Data y Data Science

Ecosistema Spark

19

Creación de RDD - textFile

 Crea un RDD a partir del sistema local de archivos,

HDFS, Cassandra, HBase, Amazon S3, etc.

lineas = sc.textFile('elquijote.txt', 8)

Fichero de datos

El número de
particiones en que
se dividirá el
fichero (opcional)

 Las elementos del RDD son cada línea del fichero. Es

decir, el RDD será una colección de cadenas

 Evaluación perezosa

Máster en Big Data y Data Science

Ecosistema Spark

20

Creación de RDD - textFile

 Otras opciones: Directorio, con comodines, desde

fichero comprimido,…:

lineas1 = sc.textFile("/my/directory")

lineas2 = sc.textFile("/my/directory/*.txt")

lineas3 = sc.textFile("/my/directory/*.gz")

 Otros protocolos, HDFS, S3,…:

lineas1 = sc.textFile("hdfs://...")

lineas2 = sc.textFile("s3://...")

Máster en Big Data y Data Science

Ecosistema Spark

21

Creación de RDD - parallelize

 Crea un RDD a partir de una lista python

numeros = sc.parallelize([1,2,3,4,5,6,7,8,9,10], 2)

Lista de python.
Puede ser de
números,
cadenas…

 Evaluación perezosa

Número de
particiones en que
se dividirá la lista
(opcional)

Máster en Big Data y Data Science

Ecosistema Spark

22

Creación de RDD

 Ejemplo evaluación perezosa

numeros = sc.parallelize([1,2,3,4,5,6,7,8,9,10])

print numeros.count()

 Spark “apunta” qué va a pasar

 No se calcula nada hasta que es necesario

RDD: numeros

[1, 2, 3,
4, 5, 6,
7, 8, 9,

10]

10

Máster en Big Data y Data Science

Ecosistema Spark

23

Transformaciones

 Crean un RDD a partir de otro u otros RDDs
 Evaluación perezosa. No se calculan los resultados

inmediatamente. Spark apunta la serie de
transformaciones que se deben aplicar para ejecutar
después.

 Es como una receta

lineas.flatMap(...).filter(...).map(...).reduceByKey(...)

 ¿Os había dicho que no se evalúa directamente?

Evaluación perezosa!!!

Máster en Big Data y Data Science

Ecosistema Spark

24

Transformaciones generales

Transformación

Descripción

map(func)

filter(func)

flatMap(func)

distinct()

Crea un nuevo RDD a partir de otro aplicando una
transformación a cada elemento original

Crea un nuevo RDD a partir de otro manteniendo solo
los elementos de la lista original que cumplan una
condición

Como map pero cada elemento original se puede
mapear a 0 o varios elementos de salida

Crea un nuevo RDD a partir de otro eliminando
duplicados

union(otroRDD)

Une dos RDD en uno

sample()

Obtiene un RDD con una muestra obtenida con
reemplazamiento (o sin) a partir de otro RDD.

Ecosistema Spark

Máster en Big Data y Data Science

25

Transformación - map

 Aplica una transformación a cada elemento del RDD original

numeros = sc.parallelize([1,2,3,4,5])

num3 = numeros.map(lambda elemento: 3*elemento)

 Resultado: [1,2,3,4,5]  [3,6,9,12,15]

 La función que se pasa a map debe:

Función que se aplica a
cada elemento del rdd
números

 Recibir un único parámetro, que serán elementos individuales del

rdd de partida

 Devolver el elemento transformado

Máster en Big Data y Data Science

Ecosistema Spark

26

Transformación – cuestiones sobre el map

 ¿Cuál es el tamaño del rdd de salida?

 El mismo que el tamaño de entrada

palabras = sc.parallelize(['HOLA', 'Que', 'TAL', 'Bien'])

pal_minus = palabras.map(lambda elemento: elemento.lower())

print pal_minus.collect()

RDD: palabras RDD: pal_minus

['HOLA',

'Que',
'TAL',
'Bien']

['hola',

'que',
'tal',
'bien']

['hola', 'que', 'tal', 'bien']

Máster en Big Data y Data Science

Ecosistema Spark

27

Transformación – cuestiones sobre el map

 ¿Podemos cambiar el tipo de los elementos de los RDDs

con un map?

 No, los RDDs son inmutables!! Pero con map podemos crear nuevos RDDs

palabras = sc.parallelize(['HOLA', 'Que', 'TAL', 'Bien'])

pal_long = palabras.map(lambda elemento: len(elemento))

print pal_long.collect()

RDD: palabras

RDD: pal_long

['HOLA','Que'
,'TAL','Bien'

]

[4, 3, 3,

4]

[4, 3, 3, 4]

Máster en Big Data y Data Science

Ecosistema Spark

28

Transformación - filter

 Filtra un RDD manteniendo solo los elementos que cumplan

una condición

numeros = sc.parallelize([1,2,3,4,5])

rdd = numeros.filter(lambda elemento: elemento%2==0)

 Resultado: [1,2,3,4,5]  [2,4]

 La función que se pa
  • Links de descarga
http://lwp-l.com/pdf16134

Comentarios de: Introducción a Apache Spark (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios
Es necesario revisar y aceptar las políticas de privacidad