Red de conocimiento informático - Aprendizaje de programación - ¿Cuál es la diferencia entre Impala y Hive?

¿Cuál es la diferencia entre Impala y Hive?

Las principales diferencias entre Impala y Hive son las siguientes:

1. Diferentes planes de ejecución:

Impala: representa el plan de ejecución como un árbol de planes de ejecución completo, que puede ser más natural. El plan de ejecución se asigna a cada consulta de ejecución de Impala en lugar de combinarse en un modo de reducción de mapa de canalización como Hive, lo que garantiza una mejor concurrencia de Impala y evita la clasificación y barajado intermedios innecesarios.

El plan de ejecución de Hive se divide en el modelo map-shuffle-reduce-map-shuffle-reduce.... Si una consulta se compila en varias rondas de MapReduce, habrá más resultados intermedios. Debido a las características del propio marco de ejecución de MapReduce, demasiados procesos intermedios aumentarán el tiempo de ejecución de toda la consulta.

2. Diferentes flujos de datos:

Impala: a través de todos, los nodos posteriores solicitan activamente datos del nodo anterior a través de getNext, de modo que los datos puedan fluir de regreso al cliente, siempre y cuando a medida que se procesa, un dato se puede mostrar inmediatamente en lugar de esperar todo el procesamiento, lo que está más en línea con el uso de consultas interactivas SQL.

Hive: a través de la inserción, cada nodo informático envía activamente datos a los nodos posteriores una vez completado el cálculo.

3. La memoria utilizada es diferente:

Impala: Cuando la memoria no puede almacenar datos, se devolverá un error directamente sin usar memoria externa. El uso de Impala será limitado en la actualidad y es mejor usarlo junto con Hive. Impala usa la red para transferir datos entre múltiples niveles y no habrá operaciones de escritura en disco durante la ejecución (excepto inserción).

Hive: si todos los datos no caben en la memoria durante la ejecución, se utilizará memoria externa para garantizar que la consulta se pueda ejecutar en orden. Después de cada ronda de MapReduce, los resultados intermedios también se escribirán en HDFS. De manera similar, debido a las características de la arquitectura de ejecución de MapReduce, el proceso de reproducción aleatoria también escribirá en el disco local.

4. Diferentes horarios:

Impala: La programación es nuestra. Actualmente solo existe un programador, el de programación simple, que intentará satisfacer la localidad de los datos, y el proceso de escaneo de los datos será lo más cercano posible a la máquina física donde se encuentran los datos.

Hive: La programación de tareas depende de la política de programación de Hadoop.