Professional Documents
Culture Documents
Tema 1:
Introducción a Spark
2017-2018
www.eoi.es
Índice Spark
• Data processing
• Obtiene, transforma (y almacena) información.
• Large-scale
• Volume: un volumen de datos grande y de origen/destino
distribuido.
• Variety (múltiples tipos de datos y formatos).
• Velocity (tasa variable de input/output de datos).
Fuente: https://spark.apache.org
M6 - Streaming (17/18) Spark - Tema 1: Introducción a Spark 4
Apache Spark (II) Spark
• Fast
• Análisis de datos en memoria.
• Aporta mecanismos para optimizar la ejecución del análisis.
Fuente: https://spark.apache.org
M6 - Streaming (17/18) Spark - Tema 1: Introducción a Spark 5
Apache Spark (III) Spark
• General engine
• API completa y genérica para realizar el análisis de los
datos.
Fuente: https://spark.apache.org
M6 - Streaming (17/18) Spark - Tema 1: Introducción a Spark 6
Apache Spark (y IV) Spark
• Otros datos:
• Open source.
• Creado en la laboratorio AMPLab de Berkeley por Matei
Zaharia.
• Co-fundador de Databricks (principal desarrallador de Spark).
Fuente: https://spark.apache.org
M6 - Streaming (17/18) Spark - Tema 1: Introducción a Spark 7
Revisión de Hadoop (I) Spark
• MapReduce:
• https://en.wikipedia.org/wiki/MapReduce
• https://research.google.com/archive/mapreduce.html
• Puntos débiles:
• Incremento de la complejidad de la aplicación al implementar
algunas tareas según el paradigma MapReduce:
• Modelo de programación rígido.
• Múltiples herramientas y elementos se han creado y añadido al
ecosistema Hadoop (Hive, Pig, Cascading…).
• Complejidad adicional: múltiples entornos de programación y
mantenimiento múltiples elementos.
• Incremento del tiempo total de procesamiento ya que todos
los trabajos necesitan coger los datos y almacenar los
resultados en el sistema de ficheros (HDFS).
• Todo el proceso (I/O y ciclo de vida de los trabajos) depende del
acceso a disco.
• Las aplicaciones generalmente incluyen múltiples trabajos
(operaciones, transformaciones, etapas…).
• El acceso a disco incrementa el tiempo total de procesamiento.
M6 - Streaming (17/18) Spark - Tema 1: Introducción a Spark 9
Comparación (I) Spark
Funcionalidad map
Funcionalidad reduce
Fuente: https://hadoop.apache.org/docs/stable/hadoop-mapreduce-client/hadoop-mapreduce-client-
core/MapReduceTutorial.html#Example:_WordCount_v2.0
Java
Python
Fuente: https://spark.apache.org/examples.html
M6 - Streaming (17/18) Spark - Tema 1: Introducción a Spark 11
Comparación (y III) Spark
Nodo 1 Nodo 2
Disco RAM Disco RAM
(HDFS) (HDFS)
DATOS DATOS
1 2
Nodo 1 Nodo 2
Datos
Disco RAM Disco RAM (RDD)
(HDFS) (HDFS)
Spark Core
Sistema de
Ficheros
M6 - Streaming (17/18) Spark - Tema 1: Introducción a Spark 15
Arquitectura de Spark (II) Spark
• Spark Core:
• Funcionalidad básica del sistema (por ejemplo: ejecutar trabajos, seguridad,
planificación de recursos, distribución de las tareas en un clúster).
• RDD (resilient distributed dataset).
• Acciones y transformaciones.
• Broadcast variables y accumulators.
• Acceso al sistema de ficheros para la entrada y salida de datos.
• Spark SQL:
• Acceso a los datos a través de sentencias SQL.
• Lectura y escritura de datos en Hive, bases de datos relacionales, NoSQL,
ficheros JSON y ficheros Parquet.
• Optimizador de sentencias SQL (Catalyst).
• Permite el acceso externo a los datos almacenados a través de los protocolos
JDBC y ODBC (servidor Thrift).
• Funcionalidad equivalente a Apche Pig y Apache Sqoop.
• Spark Streaming:
• Ingesta de datos desde varias fuentes (HDFS, Kafka, Flume, Twitter, ZeroMQ,
Sockets TCP/IP…).
• Dstream (discretized streams).
• Structured Stream API.
• Recuperación automática ante fallos (de entrada, de análisis, de salida…).
• Interactúa con otros módulos: Spark SQL, Spark ML y Spark GraphX.
• Funcionalidad equivalente a Apache Storm.
Spark SQL
Spark Streaming
• Spark ML (y MLlib):
• Librería que implementa algoritmos de machine learning:
logistic regression, clasificación naive Bayes, support vector
machines (SVM), árboles de decisión, regresión lineal…
• Interactúa con otros módulos: Spark SQL.
• Funcionalidad equivalente a Apache Mahout.
• Spark GraphX:
• graph RDD (grafo): EdgeRDD (arista de un grafo) y VertexRDD
(vértice de un grafo).
• Librería que implementa algoritmos basados en grafos: page
rank, camino más corto…
• Funcionalidad equivalente a Apache Giraph.
M6 - Streaming (17/18) Spark - Tema 1: Introducción a Spark 18
Instalación de Spark (I) Spark
• Máquina:
• Sistema operativo Linux o MacOS.
• Java Versión 8.
• Memoria y CPU dependientes de las necesidades de la aplicación a ejecutar.
• Proceso:
• Establecer la variable de entorno JAVA_HOME.
spark@bdeoi:~$ export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
• Descargar Spark.
spark@bdeoi:~$ wget "<spark_url>/<spark_file>.tgz"
• Comprobar la instalación.
spark@bdeoi:~$ spark-shell --master=local[*]
Setting default log level to "WARN".
To adjust logging level use sc.setLogLevel(newLevel). For SparkR, use
setLogLevel(newLevel).
Spark context Web UI available at http://192.168.25.30:4040
Spark context available as 'sc' (master = local[*], app id = local-1515357843039).
Spark session available as 'spark'.
Welcome to
____ __
/ __/__ ___ _____/ /__
_\ \/ _ \/ _ `/ __/ '_/
/___/ .__/\_,_/_/ /_/\_\ version 2.2.0
/_/
Using Scala version 2.11.8 (OpenJDK 64-Bit Server VM, Java 1.8.0_151)
Type in expressions to have them evaluated.
Type :help for more information.
scala>
Fuente: https://spark.apache.org/docs/latest/cluster-overview.html
M6 - Streaming (17/18) Spark - Tema 1: Introducción a Spark 21
Entorno de ejecución (II) Spark
Fuente: https://spark.apache.org/docs/latest/cluster-overview.html
M6 - Streaming (17/18) Spark - Tema 1: Introducción a Spark 22
Entorno de ejecución (y III) Spark
http://<ip_address>:4040
spark@bdeoi:~$ spark-shell
EJERCICIO 1.1
EJERCICIO 1.2
• Functional programming.
• Ejercicios.