Apache Spark es un motor unificado de analíticas para procesar datos a gran escala que integra módulos para SQL, streaming, aprendizaje automático y procesamiento de grafos. Spark se puede ejecutar de forma independiente o en Apache Hadoop, Apache Mesos, Kubernetes, la nube y distintas fuentes de datos.
Muchas veces, no se sabe si utilizar Apache Spark o Apache Hadoop. Ambos están entre los sistemas distribuidos que más destacan en el mercado y ambos son proyectos generales de Apache parecidos que se usan juntos a menudo. Hadoop se emplea principalmente cuando las operaciones exigen un uso intensivo de los discos y siguen el paradigma de MapReduce. Spark es una arquitectura de procesamiento en memoria más flexible y, con frecuencia, más cara. Para decidir cuál te conviene, debes conocer sus características a fondo.
Aprende a utilizar Dataproc para ejecutar clústeres de Apache Spark en Google Cloud de forma más sencilla, integrada y más rentable.
El ecosistema de Spark incluye cinco componentes clave:
1. Spark Core es un motor distribuido de uso general para el tratamiento de datos. En él se asientan las bibliotecas de SQL, procesamiento de streaming, aprendizaje automático y computación de grafos que puedes usar juntas en las aplicaciones. Este núcleo constituye la base de los proyectos y facilita el envío de tareas distribuidas, la programación y las funciones básicas de E/S.
2. Spark SQL es el módulo de Spark que permite utilizar datos estructurados. Ofrece un método común para acceder a fuentes de datos diversas. Gracias a este módulo, puedes consultar datos estructurados de programas de Spark con SQL o con la API de DataFrame que te resulte más cómoda. Spark SQL admite la sintaxis de HiveQL y franquea el acceso a almacenes de Apache Hive. El modo de servidor proporciona conectividad estándar mediante JDBC u ODBC.
3. Spark Streaming facilita la creación de soluciones de streaming escalables y tolerantes a fallos. Como incorpora la API con integración de lenguajes de Spark al procesamiento de streaming, puedes escribir tareas de streaming igual que lo haces con las tareas por lotes. Spark Streaming no solo admite Java, Scala y Python, sino que incluye semántica de una sola vez y con reconocimiento del estado que está lista para utilizarse.
4. MLlib es la biblioteca escalable de aprendizaje automático de Spark. Contiene herramientas con las que las tareas prácticas de aprendizaje automático son sencillas y escalables, además de numerosos algoritmos de aprendizaje de uso habitual, como clasificación, regresión, recomendación y agrupación en clústeres. También incluye el flujo de trabajo y otras utilidades, como transformaciones de características, creación de flujos de procesamiento de aprendizaje automático, evaluación de modelos, álgebra lineal distribuida y estadísticas.
5. GraphX es la API de Spark para grafos y computación en paralelo de grafos. Es flexible y funciona a la perfección tanto con grafos como con colecciones, de modo que unifica en un mismo sistema el proceso de extracción, transformación y carga (ETL), los análisis exploratorios y la computación iterativa de grafos. GraphX no es solo una API muy flexible, sino que también incluye varios algoritmos de grafos. Compite en rendimiento con los sistemas de grafos más rápidos, con la ventaja de que conserva la flexibilidad, la tolerancia a fallos y la facilidad de uso de Spark.
Rapidez
Ejecutas las cargas de trabajo 100 veces más rápido que con Hadoop MapReduce. Con Spark, disfrutas de alto rendimiento con los datos por lotes y de streaming gracias al programador de grafos acíclicos dirigidos de última generación, al optimizador de consultas y al motor físico de ejecución.
Facilidad de uso
Spark cuenta con más de 80 operadores generales que facilitan el desarrollo de aplicaciones en paralelo. Puedes utilizarlo de forma interactiva desde el shell de Scala, Python, R y SQL para escribir aplicaciones rápidamente.
Uso general
Spark permite usar una pila de bibliotecas que incluye SQL, DataFrame, MLlib para aprendizaje automático, GraphX y Spark Streaming. Además, puedes combinarlas sin problemas en la misma aplicación.
Innovación con el framework de código abierto
Spark tiene el respaldo de comunidades de todo el mundo cuyo afán común es presentar funciones y conceptos nuevos con más rapidez y eficacia que los equipos internos de las empresas que trabajan en soluciones propias. La ventaja de estas comunidades de software libre es el potencial colectivo para aportar más ideas, desarrollarlas más rápido y solucionar los problemas en cuanto aparecen. Todo ello se traduce en un tiempo de lanzamiento más corto.
Apache Spark es un motor rápido de uso general para computación de clústeres que se puede desplegar en clústeres de Hadoop o de forma independiente. Spark permite que los programadores escriban aplicaciones rápidamente en Java, Scala, Python, R y SQL para que puedan acceder a ellas los desarrolladores, los científicos de datos y los usuarios avanzados de las áreas de negocio con experiencia en estadísticas. Con Spark SQL, los usuarios se pueden conectar a cualquier fuente de datos y presentarla en forma de tabla para que puedan utilizarla los clientes de SQL. Por si fuera poco, resulta muy sencillo desplegar algoritmos interactivos de aprendizaje automático en Spark.
En cambio, con un motor de solo SQL, como Apache Impala, Apache Hive o Apache Drill, los usuarios solo pueden utilizar SQL o lenguajes semejantes para consultar los datos almacenados en distintas bases de datos. Por lo tanto, son frameworks más limitados que Spark.
Muchas empresas usan Spark para simplificar una tarea complicada e intensiva desde el punto de vista de la computación: procesar y analizar grandes volúmenes de datos archivados o en tiempo real, tanto estructurados como sin estructurar. Sus usuarios también lo utilizan para integrar de manera perfecta funciones complejas pertinentes, como el aprendizaje automático y los algoritmos de grafos.
Ingenieros de datos
Los ingenieros de datos emplean Spark para programar y crear tareas de procesamiento de datos, con la opción de incorporar conjuntos de lenguajes ampliados.
Científicos de datos
Los científicos de datos disfrutan de una experiencia mejor con las analíticas y el aprendizaje automático si utilizan Spark con GPUs. La posibilidad de procesar volúmenes más grandes de datos más rápido y con un lenguaje que conocen los ayuda a agilizar la innovación.
Empieza a crear en Google Cloud con 300 USD en crédito gratis y más de 20 productos Always Free.