Taller de procesamiento de BigData en Spark + R

Manuel Parra (manuelparra@decsai.ugr.es). Soft Computing and Intelligent Information Systems . Distributed Computational Intelligence and Time Series. University of Granada. logos

Herramientas tradicionales de análisis de datos:

  • Unix scripts
  • Pandas
  • SPSS
  • SAS
  • R
  • ...
  • Excel ... ;)

Todas ellas operan sobre una única máquina, no conectadas o conectadas, con recursos limitados, etc.

El problema de los grandes conjuntos de datos. El problema sobre BigData.

  • Los datos crecen más rápido que la velocidad de computación.
  • Fuentes de datos creciendo: datos de la web, datos científicos, datos móviles, datos de sistemas, ...
  • Almacenamiento muy barato: El tamaño se dobla cada 18 meses.
  • Cuellos de botella en la CPU y almacenamiento.

Ejemplos

  • Logs diarios de FaceBook: 60 TB
  • 1000 genomas: 200 TB
  • CERN: 25 PB anuales
  • Indice web de Google: 10+ PB
  • Coste de 1 TB de discoduro: ~35 ... 50 €
  • Tiempo de lectura de 1 TB: 3 horas !!!! (100 MB/s)

Un problema y una solución para almacenar y analizar grandes conjuntos de datos

Hadoop

Una máquina sola no puede procesar o incluso almacenar todos los datos

  • Sólo una solución: distribuir los datos sobre clusters

Una de las soluciones iniciales: MAP REDUCE (https://www.ibm.com/analytics/us/en/technology/hadoop/mapreduce/)

sd

MapReduce es el corazón de Hadoop.

Este paradigma de programación permite una escalabilidad masiva a través de cientos o miles de servidores en un clúster con Hadoop. El concepto de MapReduce es bastante simple de entender.

Limitaciones de Hadoop y MapReduce:

  • Latencia para el acceso a datos.
  • Cantidades grandes de ficheros pequeños.
  • Escribe una vez, lee varias.
  • No se puede acceder con los comandos tradicionales de Linux (ls, cat, vim...).

En cuanto a MapReduce:

  • Es muy difícil de depurar: Al procesarse el programa en los nodos donde se encuentran los bloques de datos.
  • No todos los algoritmos se pueden escribir con el paradigma MapReduce. Por ejemplo, el famoso algoritmo de grafos Dijkstra, al necesitar un procesamiento secuencial, no se puede escribir en MapReduce.

hdfs

La motivación de Apache Spark

El uso de MAP REDUCE para trabajos complejos, consultas interactivas y procesamiento en tiempo real, involucra enormes cantidades de entrada y salida de disco.

El trabajo con Disco es muy lento !

memory

memchange

Almacenar más datos en memoria. Usar más memoria en lugar de disco.

faster

Resilient Distributed Datasets (RDDs)

  • Colecciones de objetos particionados y repartidos a lo largo del cluster, almacenado en memoría o disco.
  • Manipulados a través de deversas transformaciones y acciones (map, filter, join, count, collect, save, ...)
  • Son automáticamente reconstruidos en caso de fallo de la máquina

 Hadoop (Map Reduce) y Spark

Caracteristica Hadoop Spark
Almacenamiento Disco En memoria o disco
Operaciones Map Reduce Map Reduce Join, Sample
Modelo de ejecución Por lotes Por lotes Interactivo Streaming
Lenguaje Java Scala, Java, R y Python

Procesamiento en Memoria, puede marcar gran diferencia

compare

Las ventajas principales de Spark:

  1. Una plataforma de código abierto con una comunidad activa
  2. Una plataforma muy rápida
  3. Una plataforma unificada para gestionar datos
  4. Consola interactiva
  5. Una gran API para trabajar con los datos
  6. Programable desde Java, Python, R y Scala
  7. Procesamiento de Grafos
  8. Procesamiento de Datos en Streaming