hadoop vs - ¿Cuál es la diferencia entre Apache Spark y Apache Flink?




apache-spark apache-flink (6)

¿Cuáles son las diferencias entre Apache Spark y Apache Flink ?

¿ Apache Flink reemplazará a Hadoop ?


Answers

La única característica de Flink es el procesamiento de flujos de datos fuera de servicio utilizando Watermarks


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.


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.


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


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

  1. 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.
  2. 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
  3. 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
  4. Madurez : Flink todavía está en su infancia y tiene pocas implementaciones de producción
  5. 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.


Apache Spark es una plataforma de análisis de datos distribuidos en memoria, principalmente dirigida a acelerar los trabajos de análisis por lotes, los trabajos iterativos de aprendizaje automático, la consulta interactiva y el procesamiento de gráficos.

Una de las principales distinciones de Spark es su uso de RDD o Datasets Distribuidos Resilientes. Los RDD son excelentes para canalizar operadores paralelos para el cálculo y son, por definición, inmutables, lo que permite a Spark una forma única de tolerancia a fallas basada en información de linaje. Si está interesado, por ejemplo, en ejecutar un trabajo de Hadoop MapReduce mucho más rápido, Spark es una excelente opción (aunque se deben considerar los requisitos de memoria).

Apache Storm se centra en el procesamiento de flujo o lo que algunos llaman procesamiento de eventos complejos. Storm implementa un método tolerante a fallas para realizar un cálculo o canalización de múltiples cómputos en un evento a medida que fluye en un sistema. Uno podría usar Storm para transformar datos no estructurados a medida que fluye en un sistema en un formato deseado.

Storm and Spark se centran en casos de uso bastante diferentes. La comparación más "manzanas con manzanas" sería entre Storm Trident y Spark Streaming . Como los RDD de Spark son intrínsecamente inmutables, Spark Streaming implementa un método para "procesar" las actualizaciones entrantes en intervalos de tiempo definidos por el usuario que se transforman en sus propios RDD. Los operadores paralelos de Spark pueden realizar cálculos en estos RDD. Esto es diferente de Storm, que trata cada evento individualmente.

Una diferencia clave entre estas dos tecnologías es que Spark realiza cálculos Data-Parallel mientras Storm realiza cálculos de Tarea-Paralelo . Cualquiera de los diseños hace intercambios que valen la pena conocer. Sugeriría ver estos enlaces.

Editar: descubrí this hoy





hadoop apache-spark apache-flink