Apache Spark es una plataforma de código abierto para el procesamiento masivo de datos almacenados en el ecosistema Hadoop y que se puede alimentar de datos residentes en HDFS, HBase, Cassandra, Hive o cualquier fuente de datos Hadoop.
La implementación de las reglas de procesado se hace a través de las APIs disponibles para los lenguajes de programación Java, Scala y Python.
El motor de procesado de Spark puede desplegarse sobre clusters en un entorno distribuido que puede estar gestionado por Hadoop YARN o Apache Mesos lo que permite el procesado en paralelo de particiones de datos y permite que Spark incorpore las características de escalabilidad y tolerancia a fallos propias del cluster. También es posible el despliegue de Spark en modo independiente en un solo servidor.
No está sujeto al paradigma MapReduce, y ofrece mejor rendimiento que éste. Hasta 100 veces superior en procesado de datos en memoria según la web del proyecto.
Además dispone de varias librerías de más alto nivel que facilitan la implementación de algoritmos de procesado de datos:
- Spark SQL para el acceso a datos estructurados a través de lenguaje SQ. Permitiendo integrar queries SQL en los algoritmos implementados con los APIs Python, Scala o Java.
- Spark Streaming para el procesado de flujos continuos de datos. Permite a su vez combinar el procesado de streams con el procesado batch, por ejemplo permitiendo joins de los datos del stream con datos historizados. Dispone de APIs Java y Scala.
- MLlib es la librería de Spark que incorpora algoritmos de machine learning.
- GraphX es la librería Spark que incorpora los algoritmos de procesado y análisis de grafos.
En conclusión Spark ofrece similar funcionalidad a la ofrecida por Hadoop MapReduce en cuanto a procesado batch de datos pero con un rendimiento más eficiente, incorporando además funcionalidad propia de soluciones de Streaming Analytics para el procesado en tiempo real.
Social networks