Está en la página 1de 14

Introducción a Spark

Procesamiento distribuido de Big Data


 Según Oracle: El término “big data” abarca datos que contienen
una mayor variedad y que se presentan en volúmenes crecientes
y a una velocidad superior. Esto también se conoce como “las
tres V”.
Big Data  Según AWS: Big data se puede describir en torno a desafíos de
administración de datos que, debido al incremento en el
volumen, la velocidad y la variedad de los datos, no se puede
resolver con las bases de datos tradicionales.
Unos 500MB/s

Velocidades de Unos 80MB/s

transferencia

Unos 6GB/s
DDR4: desde 17GB/s
 Datos indexados
 Operaciones rápidas de acceso
 Los DataFrames están en la RAM
Pandas  Cuando hablamos de BigData: no cabe en la RAM  Pandas
casca.
 Cuando es muy grande, la capacidad de cómputo de una única
máquina se ve limitada.
 Añadir más RAM.
 Caro y limitado para un mismo equipo.

 RAID 3, 4 o 5.
 Aumenta la velocidad de transferencia utilizando HDDs.
Posibles  Clusters.
soluciones  Escalable.
 Aumenta la velocidad de transferencia con los HDDs.
 Permite distribuir las tareas de computación (paralelización
distribuida).
 A diferencia de Hadoop, está orientado al procesamiento
distribuido y no tanto al almacenamiento/acceso de los datos
 Datos en RAM, en DataFrames, de forma análoga a Pandas.
 Maestro-esclavo
Spark  Al ejecutar una aplicación de Spark:
 Se crea un contexto
 El cluster manager distribuye el trabajo

 Se puede combinar con Hadoop


Sesión

Tarea 1 Caché

Contexto Worker 2

Arquitectura de Tarea 2 Caché


Disco

Spark Master

Cluster manager
Tarea 1 Caché

Worker 1

Disco
 Sesión: una conexión con el cluster a través de la que se
realizarán tareas.
 Contexto: es el punto de entrada, con las pecularidades
concretas de la sesión, a la aplicación de Spark.
Conceptos  RDD: es una colección de elementos particionados que se
distribuyen entre los nodos del cluster para procesarlos en
paralelo.
 Desde PySpark, se generan con la función .parallelize()

 Dataframe: es una abstracción por encima de los RDDs de


datos estructurados.
 Resiliente (tolerantes a fallos y capaces de recuperarse de
ellos)
 Distribuido (se repartirán entre los nodos del cluster)
 Conjunto de datos (colección de datos estructurados y
particionados)
RDDs
 Transformaciones: no se  Acciones: se evalúan de forma
evaluarán de inmediato, sino de inmediata. Devuelven frames.
forma perezosa (lazy,  First

Operaciones reactive…). Devuelven RDDs.


 Map
 Last
 Count
sobre los RDDs  FlatMap  Collect
 MapPartition  Take
 Filter  Top
 Sample  Foreach
 GroupBy  …
 Union
 …
 Tendremos 4 máquinas en Docker:
 1 master de Spark
 3 workers de Spark

Práctica 0:
arquitectura
 Map: aplica una función a cada uno de los datos de entrada y los
devuelve.
 Filter: permite llegar a la salida solo los datos de entrada que
cumplan una condición.
Transformaciones  FlatMap: similar a map, pero aplana la salida para que sea una
1:1 de los RDDs única colección.
 Distinct: deja salir una sola copia de cada dato de entrada, es decir,
sin duplicados.
 ReduceByKey: agrupa por clave, aplica una función de reducción a
cada grupo y devuelve una colección de clave:valores-reducidos.
 GroupByKey: agrupa por clave y devuelve una colacción de
Transformaciones clave:colección-de-valores.

clave:valor  SortByKey: ordena por clave y devuelve una colección que


contiene los mismos elementos de entrada pero que pueden estar en
de los RDDs otro orden.
 SortBy: ordena en base a la función especificada y devuelve una
colección que contiene los mismos elementos de entrada pero que
pueden estar en otro orden.
 Count: cuenta el número de elementos en el RDD.
 First: devuelve el primer elemento del RDD.
 Take: devuelve los elementos especificados del RDD.

Acciones  Collect: devuelve todos los elementos del RDD.

sobre los RDDs


 OJO Todos los datos solicitados viajarán por la red hasta el
controlador, una vez terminadas las posibles transformaciones en
curso.

También podría gustarte