Spark es un motor de análisis distribuido para cargas de trabajo de big data. Combina el almacenamiento en caché en memoria con un motor de ejecución basado en grafos acíclicos dirigidos (DAG) para ofrecer alto rendimiento en el procesamiento por lotes, las consultas interactivas y el streaming en tiempo real.
Arquitectura
Spark Core constituye la base de la plataforma Spark. Cuatro bibliotecas especializadas se basan en ella:
Spark SQL: compatible con procesos de extracción, transformación y carga (ETL) sin conexión y procesamiento analítico en línea (OLAP).
Spark Streaming: compatible con el procesamiento de flujos en tiempo real.
MLlib: compatible con cargas de trabajo de aprendizaje automático.
-
GraphX: compatible con la computación de grafos.
Para consultar la referencia completa de las bibliotecas, consulte el sitio web oficial de Apache Spark.
Escenarios
-
ETL sin conexión
El ETL sin conexión abarca escenarios de almacenamiento de datos where se extraen, transforman y cargan grandes volúmenes de información de forma masiva. Por lo general, estos trabajos se ejecutan según una programación establecida en lugar de bajo demanda. El procesamiento en memoria y la optimización basada en DAG de Spark lo hacen ideal para canalizaciones de ETL por lotes a gran escala.
-
OLAP
OLAP cubre escenarios de inteligencia empresarial (BI) en los que los analistas envían consultas interactivas y esperan resultados rápidos. Entre los motores OLAP más comunes se encuentran Presto, Impala y Spark. Elija Spark cuando sus consultas impliquen transformaciones complejas o cuando necesite un solo motor que gestione cargas de trabajo de ETL y aprendizaje automático en el mismo clúster. E-MapReduce (EMR) Spark 2.4 es compatible con las funciones principales de Spark 3.0. Para obtener más información, consulte la guía de Spark SQL.
-
Procesamiento de flujos
El procesamiento de flujos abarca escenarios de datos en tiempo real, como actualizaciones de paneles, gestión de riesgos, recomendaciones, monitoreo y alertas. En EMR se ejecutan dos motores comunes: Spark Streaming y Flink. Spark Streaming ofrece dos API: DStream y Structured Streaming. Structured Streaming utiliza el mismo modelo DataFrame que los trabajos por lotes, por lo que su curva de aprendizaje es baja. Utilice Flink cuando su carga de trabajo requiera la menor latencia posible de extremo a extremo. Use Spark Streaming cuando necesite mayor throughput. Para obtener más información, consulte la guía de programación de Structured Streaming.
-
Aprendizaje automático
MLlib es una biblioteca escalable de aprendizaje automático integrada en Spark. Incluye algoritmos de clasificación, regresión, filtrado colaborativo y agregación, así como herramientas para la selección de modelos, el ajuste automático de hiperparámetros y la validación cruzada. MLlib se centra en algoritmos que no son de aprendizaje profundo y se integra directamente con el modelo de datos distribuidos de Spark, sin necesidad de un clúster de entrenamiento independiente. Para obtener más información, consulte la guía de Machine Learning Library (MLlib).
-
Computación de grafos
GraphX es la biblioteca de computación de grafos de Spark. Es compatible con operadores de propiedades, estructurales, de unión y de agregación de vecindad; esto permite cubrir la mayoría de las cargas de trabajo de análisis de grafos sin requerir una base de datos de grafos dedicada. Para obtener más información, consulte la guía de programación de GraphX.