¿Qué es Apache Spark?
Apache Spark es un sistema de procesamiento distribuido de código abierto que se utiliza para cargas de trabajo de macrodatos. Utiliza el almacenamiento en caché de memoria y una ejecución de consulta optimizada para consultas rápidas de análisis de cualquier tamaño. Proporciona API de desarrollo en Java, Scala, Python y R, y admite la reutilización de código en varias cargas de trabajo: procesamiento por lotes, consultas interactivas, análisis en tiempo real, machine learning y procesamiento de gráficos. Descubrirá que lo utilizan organizaciones de cualquier industria, incluidas FINRA, Yelp, Zillow, DataXu, Urban Institute y CrowdStrike.
¿Cuál es la historia de Apache Spark?
Apache Spark comenzó en 2009 como un proyecto de investigación en el Amplab de la Universidad de California en Berkley, una colaboración en la que participaron estudiantes, investigadores y profesores, centrada en dominios de aplicaciones con uso intensivo de datos. El objetivo de Spark era crear un nuevo marco, optimizado para el procesamiento iterativo rápido, como el machine learning, y el análisis de datos interactivo, conservando la escalabilidad y la tolerancia a errores de Hadoop MapReduce. El primer artículo, titulado “Spark: Cluster Computing with Working Sets” (Spark: computación en clúster con conjuntos de trabajo), se publicó en junio de 2010 y Spark contaba con código abierto bajo una licencia BSD. En junio de 2013, Spark entró en fase de incubación en la Fundación de Software de Apache (ASF) y se estableció como proyecto de alto nivel de Apache en febrero de 2014. Spark puede ejecutarse de forma independiente, en Apache Mesos o, con mayor frecuencia, en Apache Hadoop.
¿Cómo funciona Apache Spark?
Hadoop MapReduce es un modelo de programación para procesar conjuntos de macrodatos con un algoritmo distribuido paralelo. Los desarrolladores pueden escribir operadores en paralelo a gran escala, sin tener que preocuparse por la distribución del trabajo ni por la tolerancia a errores. Sin embargo, un desafío para MapReduce es el proceso secuencial de varios pasos que se necesita para ejecutar un trabajo. Con cada paso, MapReduce lee los datos del clúster, realiza operaciones y vuelve a escribir los resultados en HDFS. Debido a que cada paso requiere la lectura y escritura del disco, los trabajos de MapReduce son más lentos debido a la latencia de la E/S del disco.
Spark se creó para abordar las limitaciones de MapReduce, mediante el procesamiento en memoria, la reducción de la cantidad de pasos de un trabajo y la reutilización de los datos en múltiples operaciones paralelas. Con Spark, solo se necesita un paso para leer los datos en la memoria, realizar operaciones y volver a escribir los resultados, lo que resulta en una ejecución mucho más rápida. Spark también reutiliza los datos mediante una caché en memoria para acelerar considerablemente los algoritmos de machine learning que llaman repetidamente a una función del mismo conjunto de datos. La reutilización de los datos se logra mediante la creación de DataFrames, una abstracción del conjunto de datos distribuido y resiliente (RDD), que es una colección de objetos que se almacenan en caché en la memoria y se reutilizan en varias operaciones de Spark. Esto reduce drásticamente la latencia, lo que hace que Spark sea varias veces más rápido que MapReduce, especialmente cuando se lleva a cabo el machine learning y los análisis interactivos.
Diferencias clave: Apache Spark en comparación con Apache Hadoop
Además de las diferencias en el diseño de Spark y Hadoop MapReduce, muchas organizaciones descubrieron que estos marcos de macrodatos son complementarios y los utilizan juntos para resolver un desafío empresarial más amplio.
Hadoop es un marco de código abierto que tiene el Sistema de archivos distribuido de Hadoop (HDFS) como almacenamiento, YARN como una forma de administrar los recursos de computación utilizados por diferentes aplicaciones y una implementación del modelo de programación MapReduce como motor de ejecución. En una implementación típica de Hadoop, también se implementan diferentes motores de ejecución, como Spark, Tez y Presto.
Spark es un marco de código abierto centrado en las consultas interactivas, machine learning y las cargas de trabajo en tiempo real. No tiene su propio sistema de almacenamiento, pero ejecuta análisis en otros sistemas de almacenamiento, como HDFS, u otras tiendas populares, como Amazon Redshift, Amazon S3, Couchbase, Cassandra y otras. Spark en Hadoop aprovecha YARN para compartir un clúster y un conjunto de datos comunes como otros motores de Hadoop, lo que garantiza niveles de servicio y respuesta consistentes.
¿Cuáles son los beneficios de Apache Spark?
Apache Spark tiene muchas ventajas que lo convierten en uno de los proyectos más activos del ecosistema de Hadoop. Entre ellas se incluyen:
Rápido
Mediante el almacenamiento en memoria caché y una ejecución de consultas optimizada puede ejecutar consultas de análisis rápidas en datos de cualquier tamaño.
Idóneo para desarrolladores
Apache Spark dispone de compatibilidad nativa con Java, Scala, R y Python, con lo que dispone de diversos lenguajes para crear sus aplicaciones. Estas API facilitan las cosas a sus desarrolladores, ya que ocultan la complejidad del procesamiento distribuido detrás de operadores simples y de alto nivel, lo que reduce drásticamente la cantidad de código requerida.
Varias cargas de trabajo
Apache Spark ofrece la capacidad de ejecutar varias cargas de trabajo, incluidas consultas interactivas, el análisis en tiempo real, machine learning y el procesamiento de gráficos. Una aplicación puede combinar varias cargas de trabajo sin problemas.
¿Qué son las cargas de trabajo de Apache Spark?
El marco Spark incluye lo siguiente:
- Spark Core como base de la plataforma
- Spark SQL para consultas interactivas
- Spark Streaming para análisis en tiempo real
- Spark MLlib para machine learning
- Spark GraphX para el procesamiento de gráficos
Spark Core
Spark Core es la base de la plataforma. Es responsable de la administración de la memoria, la recuperación de errores, la programación, la distribución y el monitoreo de los trabajos y de la interacción con los sistemas de almacenamiento. Spark Core se expone a través de una interfaz de programación de aplicaciones (API) creada para Java, Scala, Python y R. Estas API ocultan la complejidad del procesamiento distribuido detrás de operadores simples y de alto nivel.
MLlib
Aprendizaje automático
Spark incluye MLlib, una biblioteca de algoritmos para hacer machine learning con datos a escala. Los científicos de datos pueden entrenar los modelos de machine learning con R o Python en cualquier origen de datos de Hadoop, guardarlos con MLlib e importarlos a una canalización basada en Java o Scala. Spark se diseñó para una computación rápida e interactiva que se ejecuta en la memoria, lo que permite que el machine learning se ejecute rápidamente. Los algoritmos incluyen la capacidad de realizar clasificaciones, regresiones y agrupaciones en clústeres, filtrado colaborativo y minería de patrones.
Spark Streaming
Tiempo real
Spark Streaming es una solución en tiempo real que aprovecha la capacidad de programación rápida de Spark Core para realizar análisis de transmisiones. Ingiere datos en minilotes y permite el análisis de esos datos con el mismo código de aplicación escrito para el análisis por lotes. Esto mejora la productividad de los desarrolladores, ya que pueden usar el mismo código para el procesamiento por lotes y para las aplicaciones de streaming en tiempo real. Spark Streaming admite datos de Twitter, Kafka, Flume, HDFS y ZeroMQ, y muchos otros que se encuentran en el ecosistema de Spark Packages.
Spark SQL
Consultas interactivas
Spark SQL es un motor de consultas distribuido que proporciona consultas interactivas de baja latencia hasta 100 veces más rápido que MapReduce. Incluye un optimizador basado en los costos, almacenamiento en columnas y generación de código para consultas rápidas, a la vez que se escala a miles de nodos. Los analistas de negocios pueden usar SQL estándar o el lenguaje de consulta Hive para consultar datos. Los desarrolladores pueden usar las API, disponibles en Scala, Java, Python y R. Admite varios orígenes de datos listos para usar, incluidos JDBC, ODBC, JSON, HDFS, Hive, ORC y Parquet. Otras tiendas populares, como Amazon Redshift, Amazon S3, Couchbase, Cassandra, MongoDB, Salesforce.com, Elasticsearch y muchas otras, se encuentran en el ecosistema de Spark Packages.
GraphX
Procesamiento de gráficos
Spark GraphX es un marco de procesamiento de gráficos distribuido creado sobre Spark. GraphX proporciona ETL, análisis exploratorio y computación gráfica iterativa para permitir a los usuarios crear y transformar de forma interactiva una estructura de datos de gráficos a escala. Incluye una API de alta flexibilidad y una selección de algoritmos de gráficos distribuidos.
¿Cuáles son los casos de uso de Apache Spark?
Spark es un sistema de procesamiento distribuido de uso general que se utiliza para cargas de trabajo de macrodatos. Se lo desplegó en todos los tipos de casos de uso de macrodatos para detectar patrones y proporcionar información en tiempo real. Entre los casos de uso se incluyen los siguientes:
Servicios financieros
Spark se utiliza en la banca para predecir la pérdida de clientes y recomendar nuevos productos financieros. En la banca de inversión, Spark se utiliza para analizar los precios de las acciones y predecir las tendencias futuras.
Atención sanitaria
Spark se utiliza para ofrecer una atención integral al paciente, poniendo los datos a disposición de los trabajadores de salud de primera línea para cada interacción con el paciente. Spark también se puede utilizar para predecir o recomendar tratamientos para los pacientes.
Fabricación
Spark se utiliza para eliminar el tiempo de inactividad de los equipos conectados a Internet, recomendando cuándo llevar a cabo el mantenimiento preventivo.
Comercio minorista
Spark se utiliza para atraer y retener a los clientes a través de ofertas y servicios personalizados.
¿Cómo funciona el despliegue de Apache Spark en la nube?
Spark es una carga de trabajo ideal en la nube, porque la nube proporciona rendimiento, escalabilidad, fiabilidad, disponibilidad y enormes economías de escala. Según un estudio de ESG, el 43 % de los encuestados considera que la nube es el despliegue principal para Spark. Las principales razones por las que los clientes consideraron a la nube como una ventaja para Spark es que tiene tiempos más rápidos de despliegue, mejor disponibilidad, actualizaciones de características o funcionalidades más frecuentes, más elasticidad, mayor cobertura geográfica y costos vinculados a la utilización real.
¿Cuáles son las ofertas de AWS para Apache Spark?
Amazon EMR es el mejor lugar para implementar Apache Spark en la nube, debido a que combina la precisión de integración y prueba de las distribuciones comerciales Hadoop & Spark con la escala, la simplicidad y la rentabilidad de la nube. Le permite lanzar clústeres de Spark en minutos sin la necesidad de aprovisionar nodos, configurar clústeres y Spark ni ajustar clústeres. EMR permite aprovisionar una, cientos o miles de instancias informáticas en minutos. Puede usar Auto Scaling para que EMR escale vertical y automáticamente sus clústeres de Spark para procesar datos de cualquier tamaño y los reduzca una vez finalizado el trabajo para evitar pagar por la capacidad no utilizada. Puede reducir su factura si se compromete a cumplir un plazo establecido y ahorrar hasta un 75 % con las instancias reservadas de Amazon EC2 o si ejecuta sus clústeres con la capacidad de computación sobrante de AWS y ahorre hasta un 90 % con EC2 Spot.
Para comenzar a utilizar Apache Spark en AWS, cree una cuenta hoy mismo.
Siguientes pasos en AWS
Obtenga acceso instantáneo al nivel Gratuito de AWS.
Comience a crear en la consola de administración de AWS.