Qué es Apache Spark
Apache Spark es un framework pensado para la gestión de enormes cantidades de datos de forma distribuida diseñado para ser rápido y facilitar el uso de operaciones distribuidas como si se trabajara en un solo nodo.
Es un proyecto de la fundación Apache por lo que es de código abierto. Muchos grupos están detrás del desarrollo y el mantenimiento de Apache Spark.
Además, permite la conexión con otros frameworks del ecosistema de Hadoop como Kafka, Hbase o Hive.
¿Para qué sirve Spark en el mundo Big Data?
El siglo XXII es sin duda el siglo tecnológico dominado por la gran cantidad de datos que se generan a cada segundo.
Qué es blockchain: tecnología de cadena de bloques
La tecnología blockchain se ha puesto muy de moda estos últimos años. ¿Sabes realmente cómo funciona? ¡Entra y descubre lo que esconde la cadena de bloques!
Ver artículoMuchas de las aplicaciones que llevamos en nuestro teléfono móvil están constantemente recopilando información de nuestras acciones y localizaciones.
Todo esto se guarda en grandes almacenes de datos que contienen millones y millones de entradas.
¿Cómo podemos extraer información útil dentro de un mar enorme de datos?
Este problema se soluciona con tecnología Big Data, del cual Spark forma parte.
Esta increíble suma de información no puede almacenarse en un solo ordenador por lo que está distribuida en diferentes ordenadores que llamamos nodos. El conjunto de nodos recibe el nombre de cluster.
Otros posts que te gustarán
Cuando necesitamos extraer información tenemos que recorrer los datos que se encuentran en los distintos nodos del sistema. Aquí es donde entra la función de Spark, facilitar esta tarea que a priori parece tan complicada.
Apache Spark nos permite orquestar, distribuir y monitorizar todos los nodos para obtener la información necesaria para nuestro proyecto.
Spark carga los datos de un sistema de ficheros distribuidos como HDFS y crea unos objetos llamados RDD (Resilient Distributed Datasets). Sobre estos objetos podemos establecer ciertas acciones como búsquedas, uniones (joins) o agrupaciones para obtener la información que nos interesa de la base de datos.
Cuando programamos las acciones, se forma un grafo dirigido aciclico (DAG) donde los nodos son las operaciones que se deben ejecutar. No obstante, Spark se caracteriza por tener lo que se conoce como evaluación perezosa o lazy evaluation, por lo que las operaciones no se ejecutan hasta que no se desencadena un cierto evento.
Un punto muy importante de Spark es que es un framework con un uso muy flexible ya que incluye distintas APIs que permite su utilización en diferentes lenguajes de programación. Las APIs que se incluyen son de Scala, Java, Python, SQL y R.
Componentes principales de Apache Spark
Core Spark
Spark Core es el corazón de Spark y a partir del cual funcionan el resto de componentes que veremos seguidamente.
El Core es el encargado de orquestar y distribuir las tareas de del nodo master al resto de los nodos. Este funciona sobre YARN o Mesos que son las aplicaciones encargadas de administrar los recursos del clúster.
Spark Streaming
Spark Streaming es una extensión que permite el proceso de datos en tiempo real. Vivimos en una sociedad gobernada por datos donde cada segundo se genera nueva información, por ejemplo, en redes sociales.
Muchas empresas les interesa analizar a tiempo real que esta sucediendo alrededor del mundo. Spark Streaming se conecta a las fuentes de datos y procesa dicha información para obtener datos relevantes de lo que sucede en cada momento.
Spark SQL
Spark SQL es un módulo que permite tratar las tablas de datos como un objeto llamado dataframe. Los dataframes se pueden crear a partir de múltiples fuentes de información como Avro, Parquet o JDCB.
Spark SQL permite realizar peticiones en SQL facilitando la obtención de data ya que SQL se parece mucho al lenguaje natural de los humanos.
Spark MLlib
MLlib (Machine Learning Library) es un modulo de Spark que permite entrenar modelos de machine learning con datos que están guardados de sistema de archivos distribuido como HDFS.
Esto permite generar modelos sobre datasets o conjuntos de datos de millones y millones de entradas, aumentando la precisión del modelo.
Algunas de las tareas de aprendizaje automático que pueden realizarse con MLlib son:
- Regresión
- Clasificación
- Análisis de valores principales
- Algoritmos basados en arboles de decisión
- Ingeniería de datos
- Limpieza de datos