• Home |
  • Apache Flink y Apache Spark – Estudio comparativo – Parte 1 – Español

Apache Flink y Apache Spark – Estudio comparativo – Parte 1 – Español

  • febrero 15, 2023

Prefacio

Una frase bastante común en el ámbito del Big Data, adjudicada al matemático y emprendedor británico Clive Humby, es que los datos son el nuevo petróleo; y el grupo de tecnologías referenciadas como Big Data definitivamente representan la mejor estrategia para explotarlos. Lejos de ser una solución mágica como suele considerarse, por el contrario, si bien el Big Data es una solución que permite lidiar con varias limitaciones que se tenían con tecnologías anteriores como ser Datawarehouse, debe tenerse en cuenta que es necesario contar con personal capacitado, calidad de datos y una organización madura. El conocimiento sobre los frameworks de Big Data a la hora de su elección y posterior diseño son etapas cruciales para poder cumplir con las exigencias del mercado, maximizar su desempeño y obtener un rendimiento óptimo.

A partir de aquí deriva el foco de la presente investigación, cuya principal interrogante refiere a la elección de frameworks, específicamente para el reemplazo de algoritmos tradicionales como ser un Datawarehouse. En este sentido, la inquietud que orienta el presente estudio es ¿Cuáles son las ventajas comparativas entre Apache Flink y Apache Spark, partiendo de la medición de la Performance en la ejecución de algoritmos tradicionales de un Datawarehouse?

Para esto es necesario introducir a dos de los frameworks que han ganado más relevancia y que utilizan procesamiento de datos en memoria para lograr mejores tiempos en comparación del framework pionero MapReduce en el tratamiento masivo de datos, actualmente en desuso por cuestiones de eficiencia.

En este sentido, uno de los frameworks presentados como se ha enunciado es Apache Flink, el cual comienza su historia en 2010 como un proyecto de investigación de universidades alemanas, y llegando a ser aceptado como un proyecto top-level en la Fundación de Software Apache en diciembre de 2014. Apache Flink está desarrollado en Java, realiza el procesamiento de flujos utilizando un modelo de ventanas de tiempo y puntos de control, procesa de manera indiferente un flujo finito e infinito y trae consigo el concepto de procesamiento batch como un caso particular del procesamiento de flujos.

Su contraparte, Apache Spark creado por Matei Zaharia en la Universidad de Berkeley e implementado en Scala. Este framework ha sido donado en 2013 a la Fundación de Software Apache, logrando su estado de proyecto top-level en enero de 2014. Apache Spark procesa datos casi en tiempo real, y está basado en un modelo de micro batching. Asimismo, procesa DStreams (flujo de datos) y RDD (Resilient distributed dataset).

De esta manera se evidencian las diferencias conceptuales existentes entre ambos frameworks, cuyas características determinan sus comportamientos frente a diferentes escenarios y a su antecesor en la resolución de algoritmos tradicionales el Datawarehouse.

Teniendo en cuenta el marco presentado, este trabajo realiza un estudio comparativo entre ambos frameworks, que durante el último lustro han ganado popularidad por encima de otros. El análisis comparativo tiene por objeto valorar las ventajas que este tipo de frameworks ha venido ganado en popularidad, cómo funcionan, sobre qué tecnologías se apoya para realizar un análisis que conduzca a la elección del mismo.

La cantidad de posibilidades en Big Data a la hora de elegir una solución es tan amplia, que cometer un error en su elección implica indefectiblemente un aumento de tiempo y de costos; de esta manera, un proyecto que depende de una tecnología o framework inadecuado, debe enfrentarse a todo tipo de problemas a futuro (mantenimiento y tiempos de procesamiento no satisfactorios, entre otros).

La ejecución de consultas tradicionales en entornos Datawarehouse, como, por ejemplo: el cálculo de KPI de rendimiento de un producto por sucursal puede consumir muchos recursos, en tiempo y uso de almacenamiento, a diferencia de los frameworks para Big Data que logran realizar consultas de forma rápida y efectiva.

En Datawarehouse, la mayor parte de su procesamiento es por lotes, los cuales demoran mucho tiempo en su ejecución ya que por lo general no contemplan todos los cálculos requeridos, debiendo realizar agregaciones complejas. Este escenario conlleva a largas discusiones en el ámbito corporativo sobre qué herramientas y tecnologías deben ser implementadas para satisfacer al negocio en términos de time to market y toma de decisión.

Considerando todo lo anteriormente expuesto, se han delineado como objetivos de investigación los siguientes:

Objetivo General.

Desarrollar un estudio comparativo entre Apache Flink y Apache Spark, partiendo de la medición de la Performance en la ejecución de algoritmos tradicionales de un Datawarehouse.

Objetivos Específicos.

Indagar desde la perspectiva teórica la caracterización de Apache Flink y Apache Spark como framework para computación.

Establecer criterios para la valoración de las ventajas comparativas de Apache Flink y Apache Spark, partiendo de la medición de la Performance en la ejecución de algoritmos tradicionales de un Datawarehouse.

Ejecutar pruebas en base a criterios de comparación para la valoración de Apache Flink y Apache Spark, partiendo de la medición de la Performance en la ejecución de algoritmos tradicionales de un Datawarehouse.

A fin de alcanzar los objetivos enunciados, metodológicamente la investigación se orienta bajo el paradigma cuantitativo, a través de un tipo de estudio comparativo, por cuanto que de acuerdo con Hurtado (2015), permite “destacar la forma diferencial en la cual un fenómeno se manifiesta en ciertos contextos o grupos diferentes, sin establecer relaciones de causalidad.” (p. 116). En este sentido, según Hurtado (2015), para establecer el proceso de comparación es indispensable desarrollar previamente un análisis y descripción del fenómeno en estudio. De igual forma, se precisa acotar también que las técnicas de recolección de datos son el análisis de documentos y análisis de contenido, diseñando para ello como instrumento una matriz de datos en la que se indica la ventaja y desventaja de cada Datawarehouse referidos durante la ejecución de pruebas y la revisión documental desarrollada.

Capítulo I

Marco Teórico Referencial.

El Marco Referencial según explica Rodríguez comprende una revisión de los trabajos previos realizados sobre el problema en estudio y de la realidad contextual en la que se ubica.

El marco teórico es una de las fases más importantes de un trabajo de investigación, consiste en desarrollar la teoría que va a fundamentar el proyecto. Una vez que se ha seleccionado el tema objeto de estudio y se han formulado las preguntas que guíen la investigación, el siguiente paso consiste en realizar una revisión de la literatura sobre el tema. Esto consiste en buscar las fuentes documentales que permitan detectar, extraer y recopilar la información de interés para construir el marco teórico pertinente al problema de investigación planteado.

  1. Antecedentes de la Investigación.

En los siguientes apartados se sintetizan investigaciones que preceden al presente trabajo, que guardan relación con el tema objeto de estudio.

Inicialmente se presenta el trabajo desarrollado por Borja, a lo largo del mismo se describen los preceptos teóricos que hacen referencia a Apache Flink y Apache Spark, por su estrecha relación, genera aporte de valor para alcanzar conclusiones en la investigación.

Seguidamente se hace referencia al trabajo presentado por Espinosa , basado en una herramienta para realizar testing en Apache Flink sobre un sistema de stream processing capaz de procesar datos a tiempo real.

Basado en el trabajo de Espinosa, se busca tener otra mirada que permita generar aportes para arribar a conclusiones sobre los objetivos que se plantean en el presente trabajo.

1.2 Big Data

Se denomina Big Data al conjunto de tecnologías de hardware y software que permiten el tratamiento de grandes volúmenes de datos. Por lo general estos datos están almacenados en diferentes computadoras (formando lo que se conoce como clúster) las cuales tienen instalados diferentes aplicaciones y frameworks que permiten a los analistas de datos consultar ese enorme volumen de datos distribuidos de manera ágil y transparente como si todo este cuerpo de datos analizados estuviera almacenado en una única computadora.

En los siguientes apartados se estudian algunos conceptos sobre las tecnologías que están involucradas en un ambiente de Big Data, desde cómo se almacena la información, hasta cómo se recupera y qué lenguajes pueden ser utilizados para esta tarea.

  1. Formato y Tipos de Archivo del Big Data.

En ambientes de Big Data donde trabajan generalmente Apache Flink y Apache Spark existen formatos de archivos. Cada uno de ellos tiene sus particularidades etiquetando según su estructura y clasificándose según su tipo de formato; existiendo tres: estructurados, semi estructurados y sin estructura.

Los archivos con formato estructurado son aquellos que contienen un esquema que los describe, por ejemplo, se pueden nombrar los datos que residen en las bases de datos relacionales. Algunos de los formatos más utilizados son los conocidos como Parquet y ORC.

Los archivos con formato semiestructurado son de esquema variable: archivos de texto, CSV (archivos separados por comas), JSON (JavaScript Object Notation). Mientras que los archivos sin estructura son archivos con datos que no tienen un esquema: imágenes, videos, texto libre o archivos binarios.

Habitualmente es más simple trabajar con datos estructurados ya que hay muchas herramientas para hacerlo, por ejemplo, el lenguaje de consulta estructurado SQL. No es así para los semiestructurados y los no estructurados, que se han transformado en un gran desafío al momento de extraer información a partir de ellos. Con el constante crecimiento de las necesidades de extraer información de estos formatos nacen las bases de datos NoSQL, la cual constituye un conjunto de bases de datos no relacionales creadas para cubrir un conjunto finito de casos de uso que no cubren el ACID.

Ahora bien, en los siguientes apartados se desarrollan los tres formatos tomados para responder el tema objeto de este estudio.

Referencias Bibliográficas

  • Karau, Holden & Warren, Rachel (2017). High Performance Spark: Best practices for scaling and optimizing Apache Spark. O’Reilly Media, Inc.
  • Ryza, S., Laserson, U., Owen, S. & Wills, J. (2017). Advanced Analytics with Spark: Patterns for Learning from Data at Scale. O’Reilly Media, Inc.
  • Hurtado, J. (2015). El Proyecto de Investigación. Editorial Quirón.Caracas Venezuela.
  • Hueske, F. & Kalavri, V. (2019). Stream Processing with Apache Flink: Fundamentals, Implementation, and Operation of Streaming Applications. O’Reilly Media, Inc.
  • Saxena, S. & Gupta, S., (2017). Practical Real-time Data Processing and Analytics: Distributed Computing and Event Processing using Apache Spark, Flink, Storm, and Kafka. Packt Publishing Ltd.
  • Deshpande, T. (2017). Learning Apache Flink. Packt Publishing Ltd. UK.
  • Avro format https://avro.apache.org/docs/1.8.1/spec.htm
  • Parquet Format https://parquet.apache.org/documentation/latest/
  • ORC Format https://orc.apache.org/
  • Apache Spark References https://spark.apache.org/docs/latest/sql-reference.htmlInformacion sustraida en Abril año 2020
  • Data Flair https://data-flair.training/blogs/comparison-apache-flink-vs-apache-spark/ . Informacion Sustraida en Enero 2020.
  • Apache Flink References https://ci.apache.org/projects/flink/flink-docs-stable/ Informacion Sustraida en Enero 2020.
  • Columnar Databases https://www.columnardatabase.com/ Informacion Sustraida en Enero 2020.
  • Apache mesos http://mesos.apache.org/documentation/latest/ Informacion Sustraida en Enero 2020.
  • Dharmesh Kakadia (2015) Apache Mesos Essentials: Build and execute robust and scalable applications using Apache Mesos
  • Architecture of Mesos http://mesos.apache.org/documentation/latest/architecture/
  • Apache Hadoop https://hadoop.apache.org/docs/current/hadoop-project-dist/hadoop-common/CommandsManual.html Informacion Sustraida en Febrero 2020.
  • Mark Grover, Ted Malaska (2015) Hadoop Application Architectures: Designing Real-World Big Data Applications
  • Tom White (2015) Hadoop: The Definitive Guide: Storage and Analysis at InternetScale
  • Macías Lloret, Mario, Gómez Parada, Mauro, Tous Liesa, Rubén, Torres Viñals, Jordi (2015) Introducción A Apache Spark.