2. Background
3.2. Preconditions
El uso de tecnologías Big Data para el procesamiento de datos a gran escala se está extendiendo a gran velocidad, transformando la forma en la que obtenemos información valiosa de grandes volúmenes de datos. A medida que el tamaño de los datos aumenta, su análisis resulta más exigente para los sistemas de computación actuales. Esta situación pone en el punto de mira el rendimiento y escalabilidad de los entornos de procesamiento de datos masivos, lo que a su vez requiere nuevas maneras de evaluarlos y optimizarlos. La presente Tesis, “Evaluación y Optimización del Procesamiento Big Data en Entornos de Computación de Altas Prestaciones”, aborda estas cuestiones por medio del diseño e implementación de nuevas herra- mientas con el objetivo de ayudar a desarrolladores y usuarios a identificar y aliviar los posibles problemas de rendimiento.
Introducción
La cantidad de datos que generamos y recopilamos se incrementa día a día de manera exponencial. De hecho, la International Data Corporation (IDC) prevé que generaremos 163 ZB de datos en el año 2025, diez veces los 16.1 ZB generados en 2016 [101]. El término Big Data se refiere al uso de estos grandes volúmenes de datos para obtener información útil, aportando soluciones a problemas analíticos en múltiples campos como ciudades inteligentes [66], ciencias sociales [52], medici-
na [146], industria [138] y muchos más. Los principales retos a los que se enfrentan las tecnologías Big Data son definidos por Gartner, Inc. como volumen, variedad y velocidad [44]. Estos tres retos son cada vez más difíciles de gestionar, ya que ejercen una gran presión en el rendimiento de los sistemas de procesamiento de datos.
La creciente adopción del Big Data se ha fomentado por el cambio en la forma en la que se definen las operaciones de procesamiento de datos. La publicación del modelo de programación MapReduce por parte de Google [29] sentó la base de un nuevo paradigma de computación que se centra en trasladar la computación al lugar donde se almacenan los datos en vez de trasladar los datos al lugar donde se procesan. MapReduce se utiliza popularmente en entornos de procesamiento Big Data, principalmente Apache Hadoop [8]. Otros entornos como Apache Spark [145] o Apache Flink [7] también utilizan parte de su semántica, aunque permiten realizar un conjunto de transformaciones más amplio. Todos estos entornos procesan de forma distribuida grandes volúmenes de datos en sistemas clúster y cloud que pueden tener hasta miles de nodos [67]. A medida que la cantidad de datos a procesar aumenta, la capacidad de computación necesaria para ello alcanza niveles difíciles de gestionar por los sistemas actuales. Esta situación obliga a desarrolladores y usuarios de Big Data a hacer un esfuerzo considerable para identificar y optimizar los problemas de rendimiento que puedan existir en las tecnologías y sistemas actuales, con el fin de mantener los tiempos de ejecución de las aplicaciones dentro de unos límites aceptables, a la vez que se garantiza la calidad de los resultados.
Determinar los factores que limitan el rendimiento de los entornos Big Data no es una tarea trivial, ya que se ven afectados por una gran variedad de aspectos como su diseño e implementación, la planificación de las tareas, la distribución de la carga de trabajo o la arquitectura del sistema. Esto ha supuesto un gran estímulo para la actividad investigadora en torno a la evaluación del rendimiento y el uso de recursos de entornos Big Data. Sin embargo, los resultados de estos estudios son difíciles de extrapolar a casos de uso concretos sin antes obtener información empírica, debido al gran número de factores que influyen en su comportamiento. Por lo tanto, identificar problemas de rendimiento de una carga de trabajo requiere un profundo análisis experimental. Ya que los usuarios de Big Data provienen de campos muy diferentes, en ocasiones sin conocimiento acerca del comportamiento a bajo nivel de los entornos, pueden no contar ni con las habilidades ni con el tiempo
147 necesario para realizar este tipo de tareas adecuadamente.
Otra problemática a destacar está relacionada con las limitaciones de rendimien- to que los entornos ejercen con frecuencia sobre las aplicaciones. Un ejemplo claro de ello se puede encontrar en gran cantidad de aplicaciones Hadoop que se han desa- rrollado desde su liberación en 2007, alguna de ellas como resultado de meses o años de desarrollo. Aunque Hadoop ha seguido evolucionando y mejorando durante este tiempo, algunas decisiones de diseño iniciales siguen perjudicando su rendimiento general. Para aliviar este problema han surgido entornos más modernos, como Spark o Flink, mejorando el rendimiento de Hadoop y ofreciendo APIs más nuevas y am- plias. La mayoría de aplicaciones que se han portado a estas APIs han obtenido grandes mejoras de rendimiento.
Sin embargo, un gran número de aplicaciones aún utiliza Hadoop para el pro- cesamiento de datos, lo que reduce el rendimiento que pueden alcanzar. Adaptarlas para usar Spark o Flink no siempre es asumible debido al excesivo esfuerzo de pro- gramación y testeo que se requiere. Así mismo, la mejora de rendimiento que se puede obtener es a priori desconocida, ya que depende de las características de la aplicación. Esto puede provocar que el rendimiento sea igual o incluso peor cuando se ejecuta con Spark o Flink, lo que supondría un gran gasto de tiempo y recursos humanos que podrían haberse empleado mejor en otras tareas. En algunos casos, el código fuente ni siquiera estaría disponible, lo que impediría su modificación.
El propósito de esta Tesis es paliar algunas de las principales dificultades de evaluar y optimizar aplicaciones Big Data, proporcionando nuevas herramientas pa- ra ayudar a los usuarios a obtener información acerca del comportamiento de los entornos Big Data y optimizar aplicaciones ya existentes sin comprometer la com- patibilidad. Por un lado, la evaluación del rendimiento de los entornos se ha abordado desarrollando una nueva herramienta de evaluación, Big Data Evaluator (BDEv), que permite evaluar de manera automática los entornos de procesamiento Big Data más populares. Por otro lado, se ha propuesto el entorno Flame-MR para permi- tir la optimización transparente de aplicaciones Hadoop, utilizando computación en memoria para rediseñar la manera en la que se procesan los datos.