hadoop - ¿Cuál es la diferencia entre Apache Spark y Apache Flink?
apache spark vs hadoop (6)
Al principio, ¿qué tienen en común? Flink y Spark son plataformas de procesamiento de datos de uso general y proyectos de alto nivel de la Apache Software Foundation (ASF). Tienen un amplio campo de aplicación y son utilizables para docenas de escenarios de big data. Gracias a expansiones como consultas SQL (Spark: Spark SQL, Flink: MRQL), procesamiento de gráficos (Spark: GraphX, Flink: Spargel (base) y Gelly (biblioteca)), aprendizaje automático (Spark: MLlib, Flink: Flink ML) y procesamiento de flujo (Spark Streaming, Flink Streaming). Ambos son capaces de ejecutarse en modo independiente, sin embargo, muchos los están usando en la parte superior de Hadoop (YARN, HDFS). Comparten un gran rendimiento debido a su naturaleza de memoria.
Sin embargo, la forma en que logran esta variedad y los casos en los que están especializados difieren.
Diferencias: Al principio me gustaría proporcionar dos enlaces que detallan las diferencias entre Flink y Spark antes de resumirlo. Si tiene tiempo, eche un vistazo a Apache Flink es el 4G de BigData Analytics Framework y Flink and Spark Semejanzas y diferencias
En contraste con Flink, Spark no es capaz de manejar conjuntos de datos más grandes que la RAM antes de la versión 1.5.x
Flink está optimizado para procesos cíclicos o iterativos mediante el uso de transformaciones iterativas en colecciones. Esto se logra optimizando los algoritmos de combinación, el encadenamiento del operador y la reutilización de particiones y clasificaciones. Sin embargo, Flink es también una herramienta sólida para el procesamiento por lotes. La transmisión de Flink procesa los flujos de datos como transmisiones verdaderas, es decir, los elementos de datos se canalizan inmediatamente a través de un programa de transmisión tan pronto como llegan. Esto permite realizar operaciones de ventana flexibles en las transmisiones. Incluso es capaz de manejar datos tardíos en flujos mediante el uso de marcas de agua. Además, Flink ofrece un modo de compatibilidad muy fuerte que hace posible utilizar su tormenta existente, mapa reducir, ... código en el motor de ejecución flink
Spark por otro lado se basa en conjuntos de datos distribuidos (RDD) elásticos. Esta estructura de datos (en su mayoría) en memoria da el poder al paradigma de programación funcional de chispas. Es capaz de grandes cálculos de lotes al fijar la memoria. La transmisión por secuencias envuelve los flujos de datos en mini lotes, es decir, recoge todos los datos que llegan dentro de un cierto período de tiempo y ejecuta un programa por lotes regular en los datos recopilados. Mientras se ejecuta el programa por lotes, se recopilan los datos para el siguiente mini lote.
¿Flink reemplazará a Hadoop?
No, no lo hará. Hadoop consta de diferentes partes:
- HDFS - Sistema de archivos distribuido Hadoop
- HILO - Sin embargo, otro negociador de recursos (o gerente de recursos)
- MapReduce - El marco de procesamiento por lotes de Hadoop
HDFS y YARN siguen siendo necesarios como parte integral de los clústeres de BigData. Esos dos están construyendo la base para otras tecnologías distribuidas como motores de consultas distribuidas o bases de datos distribuidas. El principal caso de uso de MapReduce es el procesamiento por lotes para conjuntos de datos más grandes que la RAM del clúster, mientras que Flink está diseñado para el procesamiento continuo y iterativo. Por lo tanto, en general, esos dos pueden coexistir, aunque yo recomendaría encarecidamente usar flinks más fuertes y capacidades de lotes más fáciles de usar.
¿Cuáles son las diferencias entre Apache Spark y Apache Flink ?
¿ Apache Flink reemplazará a Hadoop ?
Desde el punto de vista de un desarrollador:
Por el momento: si desea obtener un trabajo lo más rápido posible en el entorno de big data, aprenda Spark, porque se usa principalmente en el mercado.
Pero en mi opinión, Flink es la mejor opción, porque no tengo que enfrentarme a tantos problemas de "falta de memoria" durante el desarrollo. Flink tiene su propio administrador de memoria, por lo que, en general, no es necesario preocuparse por ello.
La única característica de Flink es el procesamiento de flujos de datos fuera de servicio utilizando Watermarks
Los programas de Flink están optimizados por un optimizador basado en el costo (por ejemplo: motores SQL). Por lo tanto, las aplicaciones de Flink necesitarán reconfiguración y mantenimiento siempre que las características del clúster cambien y los datos evolucionen a lo largo del tiempo.
Según las páginas de documentación de Apache Flink & Spark :
Apache Flink es una plataforma de código abierto para el flujo distribuido y el procesamiento de datos por lotes
Apache Spark ™ es un motor rápido y general para el procesamiento de datos a gran escala.
El procesamiento de flujo en tiempo real es USP de Apache Flink .
Flink proporciona API expresivas que permiten a los programadores desarrollar rápidamente aplicaciones de transmisión de datos.
Flink está diseñado para ser un buen ciudadano de YARN (que Spark aún no ha logrado) y puede ejecutar los trabajos existentes de MapReduce directamente en su motor de ejecución.
Echa un vistazo a este article infoworld pantano publicado por Ian Pointer para más detalles.
differences clave del blog publicado por VON HANS-PETER ZORN UND JASIR EL-SOBHY
- Procesamiento de flujo : Si bien Spark es un sistema orientado por lotes que opera en trozos de datos, denominados RDD, Apache Flink es un sistema de procesamiento de flujo capaz de procesar fila tras fila en tiempo real.
- Iteraciones: al explotar su arquitectura de transmisión, Flink le permite iterar de forma nativa sobre los datos, algo que Spark también admite solo como lotes
- Gestión de la memoria : las tareas de Spark deben optimizarse y adaptarse a conjuntos de datos específicos porque es necesario controlar manualmente las particiones y el almacenamiento en caché si quiere hacerlo bien
- Madurez : Flink todavía está en su infancia y tiene pocas implementaciones de producción
- Flujo de datos : a diferencia del paradigma de programación de procedimientos, Flink sigue un enfoque de flujo de datos distribuidos. Para las operaciones de conjunto de datos donde se requieren resultados intermedios además de la entrada regular de una operación, las variables de difusión se utilizan para distribuir los resultados pre calculados a todos los nodos de trabajadores
Con respecto a su segunda pregunta, ni Flink ni Spark pueden reemplazar a Hadoop .
Flink es un reemplazo de Hadoop MapReduce ; que funciona tanto en modo por lotes como en modo de transmisión, eliminando el mapa y reduciendo los trabajos a favor de un enfoque de gráfico dirigido que aprovecha el almacenamiento en memoria para obtener ganancias de rendimiento masivas.
HDFS (Hadoop Distributed File System) y YARN (aún otro negociador de recursos) , que son parte del gran sistema ecológico de Hadoop no pueden ser reemplazados por Flink
Eche un vistazo a esta presentación de flink-vs-spark de Slim Baltagi, Director de Big Data Engineering, Capital One.
Spark ofrece transmisión casi en tiempo real debido a la arquitectura de micro-procesamiento por lotes, mientras que Apache Flink ofrece una verdadera secuencia real en tiempo real debido a la arquitectura de flujo puro basada en la arquitectura Kappa. Esto es probado por Yahoo streaming Benchmark Application y luego nuevamente por la aplicación extendida de streaming yahoo. Repase el video que explica este detalle y me ayudó a entenderlo. https://www.youtube.com/watch?v=WTBsMTpR-mE