Cómo proporciona impala una respuesta de consulta más rápida en comparación con hive


Recientemente he comenzado a buscar en la consulta de grandes conjuntos de datos CSV que se encuentran en HDFS utilizando Hive e Impala. Como esperaba, obtengo un mejor tiempo de respuesta con Impala en comparación con Hive para las consultas que he utilizado hasta ahora.

Me pregunto si hay algunos tipos de consultas/casos de uso que todavía necesitan Hive y donde Impala no es una buena opción.

¿Cómo proporciona Impala una respuesta de consulta más rápida en comparación con Hive para los mismos datos en HDFS?

Author: Matthew Murdoch, 2013-05-26

3 answers

Debería ver Impala como "SQL en HDFS", mientras que Hive es más "SQL en Hadoop".

En otras palabras, Impala ni siquiera usa Hadoop. Simplemente tiene demonios que se ejecutan en todos sus nodos que almacenan en caché algunos de los datos que están en HDFS, de modo que estos demonios pueden devolver datos rápidamente sin tener que pasar por todo un trabajo de mapa/Reducción.

La razón de esto es que hay una cierta sobrecarga involucrada en ejecutar un trabajo de Map / Reduce, por lo que al cortocircuitar Map/Reduce por completo, puede obtener una ganancia bastante grande en tiempo de ejecución.

Dicho esto, Impala no reemplaza a Hive, es bueno para casos de uso muy diferentes. Impala no proporciona tolerancia a errores en comparación con Hive, por lo que si hay un problema durante su consulta, entonces se ha ido. Definitivamente para el tipo de trabajos ETL donde el fracaso de un trabajo sería costoso, recomendaría Hive, pero Impala puede ser increíble para pequeñas consultas ad-hoc, por ejemplo, para científicos de datos o analistas de negocios que solo quieren echar un vistazo y analice algunos datos sin crear trabajos robustos. También desde mi experiencia personal, Impala todavía no es muy maduro, y he visto algunos accidentes a veces cuando la cantidad de datos es mayor que la memoria disponible.

 98
Author: Charles Menguy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-05-26 03:34:07

En MI humilde opinión, SQL en HDFS y SQL en Hadoop son lo mismo. Después de todo Hadoop es HDFS (y también MapReduce). Así que cuando decimos SQL en HDFS, se entiende que es SQL en Hadoop (podría ser con o sin MapReduce).

Volviendo a la pregunta real, Impala proporciona una respuesta más rápida, ya que utiliza MPP (procesamiento paralelo masivo) a diferencia de Hive que utiliza MapReduce bajo el capó, que implica algunos gastos generales iniciales (como Charles sir ha especificado). El procesamiento paralelo masivo es un tipo de computación que utiliza muchas CPU separadas que se ejecutan en paralelo para ejecutar un solo programa donde cada CPU tiene su propia memoria dedicada. El hecho mismo de que Impala, al estar basado en MPP, no implica los gastos generales de un MapReduce jobs a saber. configuración y creación de trabajos, asignación de ranuras, creación de divisiones, generación de mapas, etc., lo hace increíblemente rápido.

Pero eso no significa que Impala sea la solución a todos tus problemas. Al ser altamente intensivo en memoria (MPP), no es una buena opción para tareas que requieren operaciones de datos pesados como joins, etc., como no puedes encajar todo en la memoria. Aquí es donde Hive encaja mejor.

Por lo tanto, si necesita tiempo real, las consultas ad-hoc sobre un subconjunto de sus datos van para Impala. Y si tiene necesidades de procesamiento por lotes sobre su Big Data, vaya a Hive.

HTH

 29
Author: Tariq,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-04-26 13:49:45

Hay algunas características clave en impala que hace que sea rápido.

  1. No utiliza mapa / reducir que son muy caros para bifurcar en jvm separados. Ejecuta un demonio Impala separado que divide la consulta y los ejecuta en paralelo y combinar el conjunto de resultados al final.

  2. Hace la mayor parte de su operación en memoria.

  3. Utiliza hdfs para su almacenamiento, que es rápido para archivos grandes. Se almacena en caché tanto como sea posible desde consultas hasta resultados y datos.

  4. Es compatible con un nuevo formato de archivo como parquet, que es un archivo columnar formato. Así que si utilizas este formato será más rápido para consultas donde está accediendo a solo unas pocas columnas la mayoría del tiempo.

 6
Author: Animesh Raj Jha,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-09-27 19:34:06