Optimización de consultas en Hive-MapReduce



Optimización de consultas en Hive-MapReduce

Alexis de la Cruz Toledo
 

Texto completo de la Tesis     

 



Resumen

 

MapReduce es un modelo y ambiente de programación desarrollado por Google para procesar grandes volúmenes de datos (Exabytes) en paralelo en un cluster compuesto de computadoras de uso general. MapReduce no requiere programación paralela del usuario, es tolerante a fallas y capaz de balancear la carga de trabajo de manera transparente al usuario. Las aplicaciones Mapreduce consisten de pares de funciones map y reduce secuenciales. Hive es un Datawarehouse, desarrollado por Facebook, que brinda una infraestructura de base de datos sobre Hadoop(una versión libre y abierta de MapReduce) y un compilador de SQL (con algunas diferencias menores) que compila consultas SQL a trabajos Mapreduce. A pesar de que el compilador de Hive tiene un módulo de optimización, consultas complejas del tipo OLAP (On-Line Analytical Processing) no se optimizan adecuadamente. Esta tesis presenta un análisis de posibles optimizaciones adicionales para mejorar el desempeño de tales consultas, y el diseño de dos optimizaciones espec íficas para el compilador de Hive. Estas dos optimizaciones se enfocan a consultas SQL que involucran subconsultas, y/o funciones de agregación y agrupación. En las consultas que involucran subconsultas que son similares, o iguales, se busca eliminar tantas subconsultas como sean posibles y, consecuentemente, reducir el número total de trabajos Mapreduce a ejecutar. En las consultas que involucran funciones de agregación y agrupación se busca eliminar trabajos Mapreduce innecesarios que crea Hive actualmente. Ambas optimizaciones tienden a reducir el número de operaciones de entrada/salida y la cantidad de datos a enviar por la red.Extendimos el compilador de Hive versión 0.8 con nuestras optimizaciones y las evaluamos con varias consultas OLAP típicas, algunas del benchmark TPCH, ejecutándose en un cluster de 20 nodos. Nuestras optimizaciones mejoran el desempeño de Hive hasta en un 30 %. Todavía es posible mejorar al compilador de Hive.

 

Abstract

MapReduce is a programming model and execution environment developed by Google to process very large amounts of data (Exabytes) in parallel in clusters con gured with o f-the-shelf computer hardware. MapReduce does not require parallel programming, is fault tolerant and balances the workload transparently to the programmer. Mapreduce applications consist of pairs of sequential map and reduce functions. Hive is a Datawarehouse, developed by Facebook, that provides a database infrastructure atop MapReduce, and a compiler of SQL (with a few minor di fferences)that compiles SQL queries to Mapreduce jobs. Although Hive's compiler has an optimization module, complex queries such as OLAP (On Line Analytical Processing) queries are not optimized properly. This thesis presents an analysis of other possible optimizations to improve the performance of such queries, and the design of two speci c optimizations for the Hive compiler. These two optimizations are targeted at SQL queries involving subqueries and/or aggregate functions. For queries that involve subqueries that are similar or identical, our optimization seeks to eliminate as many instances of such subqueries as possible, thereby reducing the total number of mapreduce jobs to run. For queries that involve aggregate functions, our optimization seeks to remove unnecessary mapreduce jobs that Hive currently generates. Both optimizations tend to reduce the number of input/output operations and the amount of data send over the network. We extended the compiler of Hive version 0.8 with our optimizations and evaluate them with several typical OLAP queries, some of the TPC-H benchmark, running on a cluster of 20 nodes. Our optimizations improve performance by up to 30 %. It is still possible to improve the Hive compiler.