UNIDAD ZACATENCO DEPARTAMENTO DE ... - Cinvestav
UNIDAD ZACATENCO DEPARTAMENTO DE ... - Cinvestav
UNIDAD ZACATENCO DEPARTAMENTO DE ... - Cinvestav
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
Introducción 5<br />
iguales, el compilador de Hive no se da cuenta y genera trabajos mapreduce similares<br />
o repetidos reduciendo el rendimiento de Hive. Además, en ocasiones el compilador<br />
está generando trabajos mapreduce innecesarios para otro tipo de consultas, por lo que<br />
se plantea el problema de ¿Cómo identificar y eliminar trabajos mapreduce<br />
innecesarios y repetidos generados para una consulta HiveQL?, con el<br />
objetivo de mejorar el desempeño de consultas OLAP en Hive.<br />
Una consulta HiveQL pasa por 4 fases para compilarse en una serie de trabajos<br />
mapreduce: Un análisis léxico donde se crea un<br />
Árbol Sintáctico Abstracto (AST)<br />
como representación gráfica de la sentencia HiveQL; después pasa por un análisis<br />
sintáctico y semántico donde se crea un DAG 2 como representación interna de la<br />
consulta HiveQL en Hive; después pasa por una fase de optimización del DAG; y por<br />
último se contruyen los trabajos mapreduce a partir del DAG optimizado.<br />
Esta tesis tuvó como objetivo mejorar el optimizador de consultas de Hive, para<br />
esto se hizó un análisis de los DAG’s que generaron un grupo de consultas OLAP<br />
utilizadas ampliamente en estudios de Datawarehouse y bases de datos. En base<br />
al análisis se llegó a la conclusión que las optimizaciones actuales de Hive están<br />
pensadas para optimizar la ejecución de una consulta en cada trabajo mapreduce<br />
que se construye, tomando en cuenta las condiciones del ambiente MapReduce. Sin<br />
embargo, cuando las consultas involucran subconsultas similares o iguales, Hive no se<br />
da cuenta de ello y duplica operaciones en el DAG de tal modo, que al transformarse el<br />
DAG a trabajos mapreduce se duplican trabajos mapreduce optimizados. Por supuesto,<br />
esto no es conveniente debido a que cada trabajos mapreduce implica un costo de<br />
lectura/escritura, un costo de red y un costo de procesamiento en cada nodo del<br />
clúster. Así mismo, nos dimos cuenta que en consultas que involucran funciones de<br />
agregación y agrupación (sum(), avg(), max(), entre otras), en algunas ocasiones están<br />
creando un trabajo mapreduce innecesario por cada función de agregación y agrupación<br />
implicada. Se realizó un análisis de como realiza las optimizaciones internamente<br />
Hive y se agregó dos optimizaciones al compilador de Hive que buscan solucionar<br />
2 Un DAG es un grafo dirigido que no contiene ciclos.<br />
<strong>Cinvestav</strong> Departamento de Computación