Apache Flink vs Spark – ¿Superará uno al otro?

Última actualización: 25 Ene 2021

Apache Spark y Apache Flink son ambos de código abierto, marco de procesamiento distribuido que fue construido para reducir las latencias de Hadoop Mapreduce en el procesamiento rápido de datos. Existe la idea errónea de que Apache Flink va a sustituir a Spark o es posible que ambas tecnologías de big data puedan coexistir, atendiendo así a necesidades similares de procesamiento de datos rápido y tolerante a fallos. Apache Spark y Flink pueden parecer similares a alguien que no haya trabajado con ninguna de las dos y sólo esté familiarizado con Hadoop, y es obvio que sentirá que el desarrollo de Apache Flink es mayormente superfluo. Pero Flink ha conseguido mantenerse a la cabeza del juego gracias a su función de procesamiento de flujos, que consigue procesar filas y filas de datos en tiempo real, algo que no es posible en el método de procesamiento por lotes de Apache Spark. Esto hace que Flink sea más rápido que Spark.

Según este estudio de IBM, estamos creando unos 2,5 quintillones de bytes de datos cada día – y este ritmo de generación de datos sigue aumentando a un ritmo sin precedentes. Para poner las cosas en otra perspectiva, alrededor del 90% de todos los datos que existen en este mundo, fueron creados en los últimos dos años, a pesar de que la World Wide Web ha sido accesible al público por más de dos décadas. A medida que Internet crecía, también lo hacía el número de usuarios y la creciente demanda de contenidos allanó el camino a la Web 2.0 en la última década. Fue la primera vez que se permitió a los usuarios crear sus propios datos en Internet y que éstos estuvieran listos para ser consumidos por un público hambriento de datos.

Después le llegó el turno a las redes sociales de invadir nuestras vidas. Según el informe de wersm (we are social media), Facebook consigue más de 4 millones de likes en un minuto. Los datos generados por otras fuentes populares se mencionan en la infografía (extraída del mismo estudio de wersm) antes de echar un vistazo a cómo se consumen estos datos.

Infografía de hechos y cifras de Big Data

«¿Cómo almacenar estas enormes cantidades de datos?» fue un planteamiento de problema que mantuvo ocupados a los geeks de la tecnología durante la mayor parte de la década anterior. El repentino auge de las redes sociales no les facilitó la tarea. Sin embargo, las soluciones de almacenamiento de la nueva era, como el Cloud Computing, han revolucionado el sector y han presentado la mejor solución posible. En la década actual, el planteamiento del problema ha pasado a ser «¿Qué hacer con enormes trozos de datos?». La analítica de datos surgió como el objetivo final, pero antes de eso, hay que hacer mucho trabajo para integrar los datos almacenados en diferentes formatos en diferentes fuentes y prepararlos para el procesamiento y la analítica, lo cual es una tarea exigente.

Para conocer la lista completa de empresas de big data y sus sueldos- PULSE AQUÍ

Nuestros dos temas de hoy -Apache Spark y Apache Flink- intentan responder a esa pregunta y a otras más.

Apache Spark vs Flink

Apache Spark

Spark es un framework de computación en clúster de código abierto que cuenta con una gran base de usuarios a nivel mundial. Está escrito en Scala, Java, R y Python y ofrece a los programadores una interfaz de programación de aplicaciones (API) construida sobre un conjunto múltiple de datos distribuidos, tolerante a fallos y de sólo lectura. En un breve plazo de 2 años desde su lanzamiento inicial (mayo de 2014), ha visto una amplia aceptación para el análisis avanzado en tiempo real, en memoria – debido a su velocidad, facilidad de uso y la capacidad de manejar los requisitos analíticos sofisticados.

Formación en línea de Apache Spark

Si desea obtener más información sobre las carreras de Big Data, haga clic en el botón naranja «Solicitar información» en la parte superior de esta página.

Ventajas de Spark

Apache Spark tiene varias ventajas sobre las tecnologías tradicionales basadas en Big Data y MapReduce. Las más destacadas son. Esencialmente lleva a MapReduce al siguiente nivel con un rendimiento que es varias veces más rápido. Uno de los diferenciadores clave de Spark es su capacidad para mantener los resultados intermedios en memoria, en lugar de escribir en el disco y leer de nuevo, lo que es crítico para los casos de uso basados en la iteración.

  • Velocidad – Spark puede ejecutar trabajos de procesamiento por lotes de 10 a 100 veces más rápido que MapReduce. Esto no significa que se quede atrás cuando los datos tienen que ser escritos (y recuperados) en el disco, ya que es el poseedor del récord mundial de clasificación a gran escala en el disco.
  • Facilidad de uso – Apache Sparkhas fácil de usar APIs, construido para operar en grandes conjuntos de datos.
  • Motor unificado – Spark puede ejecutarse en la parte superior de Hadoop, haciendo uso de su gestor de clúster (YARN) y el almacenamiento subyacente (HDFS, HBase, etc.). Sin embargo, también puede ejecutarse de forma independiente de Hadoop, colaborando con otros gestores de clústeres y plataformas de almacenamiento (como Cassandra y Amazon S3). También viene con librerías de nivel superior que soportan consultas SQL, streaming de datos, aprendizaje automático y procesamiento de gráficos.
  • Elige entre Java, Scala o Python – Spark no te ata a un lenguaje en particular y te permite elegir entre los más populares como Java, Scala, Python, R e incluso Clojure.
  • Compartición de datos en memoria – Diferentes trabajos pueden compartir datos dentro de la memoria, lo que lo convierte en una opción ideal para tareas iterativas, interactivas y de procesamiento de flujos de eventos.
  • Comunidad de usuarios activa y en expansión – Una comunidad de usuarios activa ha llevado a una versión estable de Spark (en junio de 2016) a los 2 años de su lanzamiento inicial. Esto dice mucho de su aceptación en todo el mundo, que va en aumento.

Apache Flink

En alemán significa «rápido» o «ágil», Apache Flink es el último participante en la lista de marcos de trabajo de código abierto centrados en Big Data Analytics que están tratando de reemplazar el envejecido MapReduce de Hadoop, al igual que Spark. Flink obtuvo su primera versión estable de la API en marzo de 2016 y está construido para el procesamiento en memoria de datos por lotes, al igual que Spark. Este modelo resulta muy útil cuando es necesario realizar varias pasadas sobre los mismos datos. Esto lo convierte en un candidato ideal para el aprendizaje automático y otros casos de uso que requieren aprendizaje adaptativo, redes de autoaprendizaje, etc. Con el inevitable auge del espacio de la Internet de las Cosas (IoT), la comunidad de usuarios de Flink tiene algunos retos apasionantes por delante.

Ventajas de Flink

  • Motor real de procesamiento de flujos que puede aproximarse al procesamiento por lotes, en lugar de ser al revés.
  • Mejor gestión de la memoria – La gestión explícita de la memoria se deshace de los picos ocasionales que se encuentran en el marco de Spark.
  • Velocidad – Gestiona velocidades más rápidas al permitir que el procesamiento iterativo tenga lugar en el mismo nodo en lugar de que el clúster los ejecute de forma independiente. Su rendimiento puede ajustarse aún más ajustándolo para volver a procesar sólo la parte de los datos que ha cambiado en lugar de todo el conjunto. Ofrece hasta cinco veces más velocidad en comparación con el algoritmo de procesamiento estándar.
  • Menos configuración

Apache Flink vs Spark

Cuando Flink apareció, Apache Spark ya era el marco de facto para los requisitos analíticos de big data rápidos y en memoria para varias organizaciones de todo el mundo. Esto hizo que Flink pareciera superfluo. Al fin y al cabo, ¿por qué necesitar otro motor de procesamiento de datos cuando el jurado aún no ha decidido sobre el existente? Hay que profundizar en las capacidades de Flink para observar qué es lo que lo distingue, aunque varios analistas lo han catalogado como el «4G de la analítica de datos».

Dentro de la configuración de Spark hay una pequeña debilidad que Flink ha apuntado y está tratando de capitalizar. Aunque es cierto a efectos de discusiones casuales, Spark no es puramente un motor de procesamiento de flujos. Como observa Ian Pointer en el artículo de InfoWorld ‘Apache Flink: New Hadoop contender squares off against Spark’, Spark es esencialmente una operación de lotes rápidos que trabaja en sólo una pequeña parte de los datos entrantes durante una unidad de tiempo. Spark se refiere a esto como «micro batching» en su documentación oficial. Es poco probable que este problema tenga importancia práctica en las operaciones, a menos que el caso de uso requiera una baja latencia (sistemas financieros), donde un retraso del orden de milisegundos puede causar un impacto significativo. Dicho esto, Flink es un trabajo en curso y no puede pretender sustituir a Spark todavía.

Flink es un marco de procesamiento de flujos que puede ejecutar las tareas que requieren el procesamiento por lotes, dándole la opción de utilizar el mismo algoritmo en ambos modos, sin tener que recurrir a una tecnología como Apache Storm que requiere una respuesta de baja latencia.

Tanto Spark como Flink soportan el procesamiento en memoria que les da una clara ventaja de velocidad sobre otros marcos. Cuando se trata de procesar datos entrantes en tiempo real, Flink no se enfrenta a Spark, aunque tiene la capacidad de realizar tareas de procesamiento en tiempo real.

Spark y Flink pueden manejar el procesamiento iterativo en memoria. En lo que respecta a la velocidad, Flink se lleva la palma, ya que puede programarse para procesar sólo los datos que han cambiado, que es donde sale ganando a Spark.

Historias de crecimiento – Spark y Flink

Cualquier marco de software necesita algo más que conocimientos técnicos para poder ayudar a las empresas a obtener el máximo valor. En esta sección profundizamos en el artículo Apache Spark 2015 Year in Review de Databricks para ver cómo le ha ido en la comunidad global de usuarios y desarrolladores. El año ha visto 4 versiones (de la 1.3 a la 1.6), cada una con cientos de correcciones para mejorar el framework. Lo que nos ha llamado la atención es el crecimiento del número de desarrolladores que contribuyen: ¡de 500 en 2014 a más de 1000 en 2015! Otro aspecto destacable de Spark es la facilidad con la que sus usuarios realizan la transición a las nuevas versiones. El informe menciona que en tres meses la mayoría de los usuarios se adoptan a la última versión. Estos hechos mejoran su reputación como la herramienta de datos de código abierto más activamente desarrollada (y adoptada).

Flink ha llegado relativamente tarde a la carrera, pero la revisión del año 2015 en su sitio web oficial muestra por qué está aquí para quedarse como el marco de procesamiento de flujos de código abierto más completo disponible. El repositorio github de Flink (Get the Repository – Here) muestra que la comunidad duplicó su tamaño en 2015 – de 75 colaboradores a 150. Las bifurcaciones del repositorio se triplicaron con creces en el año y también lo hizo el número de estrellas del repositorio. Partiendo de Berlín, Alemania, ha visto crecer su comunidad de usuarios a través de los continentes hasta llegar a Norteamérica y Asia. La Conferencia Flink Forward fue otro hito para Flink, que contó con la participación de más de 250 asistentes, donde más de 100 participantes viajaron desde todo el mundo para asistir a charlas técnicas de organizaciones como Google, MongoDB, Telecom, NFLabs, RedHat, IBM, Huawei, Ericsson, Capital One, Amadeus y muchas más.

Aunque todavía es pronto para señalar a uno de estos dos como claro ganador, somos de la opinión de que en lugar de tener muchos frameworks que hagan lo mismo, el mundo de la tecnología estaría mejor servido si los nuevos participantes hicieran cosas diferentes y complementaran a los existentes en lugar de competir contra ellos.

Formación online de Apache Spark

Previo

Siguiente