MÓDULO III: PARALELIZACIÓN DE DATOS – Framework Spark
Presentación
En este tema se presenta una de las tecnologías más importantes dentro del Big Data, que es Apache Spark (https://spark.apache.org/). Spark se puede definir como una plataforma de computación distribuida similar a Apache Hadoop pero con unos beneficios adicionales respecto a la facilidad de uso, la velocidad de computación y el propio modelo de programación. Apache Spark está organizado en un ecosistema específico.
De esta forma, se mostrarán los conceptos teóricos y prácticos para trabajar con Apache Spark y se verán los diferentes componentes fundamentales de la arquitectura: programación de aplicaciones con (Spark Core API y los lenguajes soportados, así como las estructuras básicas de uso/gestión de datos dentro de Spark: RDDs, DataFrames, DataSets y Spark SQL ), uso de algoritmos de Machine Learning (MLib), mecanismos de gestión de datos en tiempo real (Spark Streaming) y computación de grafos (GraphX). Adicionalmente, se mostrarán aspectos más relativos a la gestión eficiente de Spark en cuanto a su configuración y buenas prácticas programación.
Contextualización
Apache Spark nació como motor de procesamiento de código abierto desarrollado en 2009 por el AMPLab (https://amplab.cs.berkeley.edu/) de la Universidad de California en Berkeley. Posteriormente fue donado a la Apache Software Foundation en 2013. Spark permite realizar de manera rápida y eficiente dos tareas fundamentales: análisis de datos y modelos de desarrollo. La necesidad, y a la vez ventaja, de Spark surge de los intentos de generar una plataforma de computación distribuida de datos que no solo soportase el modelo MapReduce (Apache Hadoop es un ejemplo de este modelo) sino que proporcionase un modelo de desarrollo más general y simple de usar. El procesamiento de datos en Spark está basado en el uso del concepto de RDD (Resilient Distributed Dataset) o conjunto “elástico” de datos distribuidos. De esta forma es posible particionar el origen de la información y distribuirlo a través de los nodos del clúster que se usa en Spark para mejorar la eficiencia de las operaciones realizadas sobre cada “partición” de datos del conjunto original. Además, Apache Spark mejora la eficiencia de la computación consiguiendo, en algunos casos, ser hasta 10 veces más rápido que otras soluciones como Apache Hadoop. Estas son algunas de las razones por las cuales Spark se ha convertido en una referencia en las arquitecturas distribuidas de procesamiento de datos. En el tema/módulo se verán todas las características que hacen a Apache Spark una arquitectura apropiada para la gestión de grandes volúmenes de datos.
Conocimientos previos recomendables
Para cursar adecuadamente este tema es recomendable tener los siguientes conocimientos previos:
- Familiaridad con el sistema operativo Linux.
- Familiaridad con tecnologías de virtualización de escritorio (VirtualBox y Docker).
- Conocimientos de programación (Python, Java, Scala y SQL).
Resultados de aprendizaje
Los resultados más relevantes que se pretenden alcanzar con el estudio de este tema son los siguientes:
- Describir las propiedades específicas que definen a Apache Spark.
- Conocer detalladamente el ecosistema de Apache Spark.
- Desarrollar aplicaciones orientadas a la gestión/manipulación de datos con Spark
- Aplicar los conocimientos de SQL para el acceso/manipulación de información en Spark
- Aplicar los conocimientos de los modelos de representación de datos de Spark para desarrollar aplicaciones eficientes
- Describir el conjunto de algoritmos de aprendizaje máquina soportados por Spark a través de MLib
- Describir el modelo de computación de grafos GraphX y aplicar los conocimientos aprendidos en el desarrollo de este tipo aplicaciones
- Describir las prácticas adecuadas en la configuración y programación de la plataforma Spark
Contenidos del tema
Los contenidos de este tema se organizan en los siguientes capítulos:
1: Introducción e instalación de Apache Spark.
- Arquitectura y propósito de Spark.
- Componentes de la pila unificada de Spark.
- Tipos de gestores de clusters de Spark.
- Resilient Distributed Dataset (RDD).
- Instalación de Spark.
- Ejecución/uso de las shell de Spark (Scala/Python).
- El primer programa Spark.
- Ejecución de los ejemplos de Spark.
2: Programación de aplicaciones en Spark
- Desarrollo y ejecución de una aplicación Spark.
- Envío de aplicaciones al cluster Spark.
- Creación de sesiones: objetos SparkSession/SparkContext.
- Inicialización de Spark en varios lenguajes: Scala/Python.
- Cargar y guardar datos en Spark.
- Desarrollo y ejecución de una aplicación Spark.
- Colecciones de datos: Resilient Distributed Dataset, DataFrames y Datasets.
- Paralelización de las colecciones de datos.
- Operaciones sobre RDD.
- El API de Datasets/DataFrames.
3: Librerías/Componentes de Spark
- Librerías disponibles en Spark.
- Gestión de datos al modo SQL: Spark SQL.
- Machine Learning en Spark: Spark Mlib.
- Procesamiento de gráfos: Spark GraphX.
- Introducción a Spark Streaming.
4: Configuración, monitorización y optimización de Spark.
- Parámetros de configuración de Spark.
- Monitorización de Spark: Web UI, métricas e instrumentación externa.
- Optimización de las transformaciones y acciones.
- Particionamiento de las colecciones de datos (RDD).
- Caché y serialización.
Bibliografía básica
Título: Fast Data Processing with Spark 2 – Third Edition
Autor: Krishna Sankar
Editorial: Packt Publishing
Año: 2016
ISBN-13 en papel: 978-1-78588-927-1
Título: Sams Teach Yourself Apache Spark™ in 24 Hours
Autor: Jeffrey Aven
Editorial: Sams
Año: 2016
ISBN-13 en papel: 978-0-672-33851-9
Título: Mastering Apache Spark 2.x – Second Edition
Autor: Romeo Kienzler
Editorial: Packt Publishing
Año: 2017
ISBN-13 en papel: 978-1-78646-274-9
Título: Apache Spark 2.x Cookbook
Autor: Rishi Yadav
Editorial: Packt Publishing
Año: 2017
ISBN-13 en papel: 978-1-78712-726-5
Título: Spark for Python Developers
Autor: Amit Nandi
Editorial: Packt Publishing
Año: 2015
ISBN-13 en Web: 978-1-78439-737-1
Título: Machine Learning with Spark – Second Edition
Autor: Rajdeep Dua; Manpreet Singh Ghotra; Nick Pentreath
Editorial: Packt Publishing
Año: 2017
ISBN-13 en papel: 978-1-78588-993-6
Título: Spark GraphX in Action
Autor: Michael S. Malak and Robin East
Editorial: Manning Publications
Año: 2016
ISBN-13: 978-1-61729-252-1
Título: Spark in Action
Autor: Petar Zečević Marko Bonaći
Editorial: Manning Publications
Año: 2016
ISBN-13: 978-1-61729-260-6