07.05.2013 Views

UNIDAD ZACATENCO DEPARTAMENTO DE ... - Cinvestav

UNIDAD ZACATENCO DEPARTAMENTO DE ... - Cinvestav

UNIDAD ZACATENCO DEPARTAMENTO DE ... - Cinvestav

SHOW MORE
SHOW LESS

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!