Abstract:
A nivel de programación sobre una determinada plataforma, siempre hay dos aspectos importantes a evaluar, la eficiencia del código generado y la facilidad de lectura y escritura sobre un determinado lenguaje. Pig y Hive son dos lenguajes que nos ayudan a ver desde una perspectiva más fácil la programación sobre Hadoop, plataforma para procesamiento masivo de datos. Por el contrario, el lenguaje Java, nativo en Hadoop, permite que la ejecución de los programas sea más optimo pero a costa de su dificultad de programación. Nuestra investigación demuestra mediante un análisis experimental comparativo, la eficiencia (en términos de tiempo) de tres programas escritos sobre estas plataformas para dar a conocer cuál de ellos es el más óptimo para diferentes tareas. El objetivo de nuestro proyecto es el de evaluar el rendimiento del framework Hadoop y de herramientas implementadas sobre el mismo como lo son Hive y Pig, todo esto con el propósito de determinar cuál de las herramientas anteriormente mencionadas es más adecuada para el procesamiento masivo de datos.
vi
Para lograr dicho objetivo, se han elaborado tres consultas sobre logs obtenidos de Web servers (Apache), con el propósito de trabajar con información real: 1) conteo de direcciones IP, 2) identificar fechas de eventos de advertencia o error, y 3) identificación de la pagina que más veces no ha sido hallada, y la hora a la que más veces no se la halló. Dichas consultas fueron elaboradas para cada una de las herramientas a evaluar. Con el fin de que el proceso de consultas sea eficiente y no consuma recursos propios, se usó los servicios computacionales que provee Amazon Web Services, para el desarrollo de este caso de estudio. Cada una de las consultas anteriormente descrita, ha sido analizada y comparada por rendimiento en las tres herramientas, para clústeres de varios tamaños (2, 4, 6, 10, 15 y 20 nodos). Además, fueron comparadas sobre como respondían en términos de tiempo al variar la cantidad de MB de los Apache Logs, todo esto para alcanzar nuestro objetivo planteado. Finalmente se hace una conclusión sobre qué aspectos considerar a la hora de elegir una herramienta para el procesamiento masivo de los datos.