Impala - Descripción general
¿Qué es Impala?
Impala es un motor de consultas SQL MPP (Massive Parallel Processing) para procesar grandes volúmenes de datos que se almacenan en el clúster de Hadoop. Es un software de código abierto que está escrito en C ++ y Java. Proporciona alto rendimiento y baja latencia en comparación con otros motores SQL para Hadoop.
En otras palabras, Impala es el motor SQL de mayor rendimiento (brinda una experiencia similar a RDBMS) que proporciona la forma más rápida de acceder a los datos almacenados en el sistema de archivos distribuido Hadoop.
¿Por qué Impala?
Impala combina la compatibilidad con SQL y el rendimiento multiusuario de una base de datos analítica tradicional con la escalabilidad y flexibilidad de Apache Hadoop, utilizando componentes estándar como HDFS, HBase, Metastore, YARN y Sentry.
Con Impala, los usuarios pueden comunicarse con HDFS o HBase utilizando consultas SQL de una manera más rápida en comparación con otros motores SQL como Hive.
Impala puede leer casi todos los formatos de archivo como Parquet, Avro, RCFile utilizados por Hadoop.
Impala utiliza los mismos metadatos, sintaxis SQL (Hive SQL), controlador ODBC e interfaz de usuario (Hue Beeswax) que Apache Hive, lo que proporciona una plataforma familiar y unificada para consultas orientadas por lotes o en tiempo real.
A diferencia de Apache Hive, Impala is not based on MapReduce algorithms. Implementa una arquitectura distribuida basada endaemon processes que son responsables de todos los aspectos de la ejecución de consultas que se ejecutan en las mismas máquinas.
Por lo tanto, reduce la latencia de utilizar MapReduce y esto hace que Impala sea más rápido que Apache Hive.
Ventajas de Impala
Aquí hay una lista de algunas de las ventajas destacadas de Cloudera Impala.
Con impala, puede procesar datos almacenados en HDFS a una velocidad increíblemente rápida con el conocimiento tradicional de SQL.
Dado que el procesamiento de datos se lleva a cabo donde residen los datos (en el clúster de Hadoop), la transformación y el movimiento de datos no son necesarios para los datos almacenados en Hadoop mientras se trabaja con Impala.
Con Impala, puede acceder a los datos almacenados en HDFS, HBase y Amazon s3 sin el conocimiento de Java (trabajos de MapReduce). Puede acceder a ellos con una idea básica de las consultas SQL.
Para escribir consultas en herramientas comerciales, los datos deben pasar por un complicado ciclo de extracción-transformación-carga (ETL). Pero, con Impala, este procedimiento se acorta. Las etapas de carga y reorganización que requieren mucho tiempo se superan con las nuevas técnicas comoexploratory data analysis & data discovery haciendo el proceso más rápido.
Impala es pionera en el uso del formato de archivo Parquet, un diseño de almacenamiento en columnas optimizado para consultas a gran escala típicas en escenarios de almacenamiento de datos.
Características de Impala
A continuación se presentan las características de cloudera Impala:
Impala está disponible gratuitamente como código abierto bajo la licencia Apache.
Impala admite el procesamiento de datos en memoria, es decir, accede / analiza los datos almacenados en los nodos de datos de Hadoop sin movimiento de datos.
Puede acceder a los datos mediante Impala mediante consultas similares a SQL.
Impala proporciona un acceso más rápido a los datos en HDFS en comparación con otros motores SQL.
Con Impala, puede almacenar datos en sistemas de almacenamiento como HDFS, Apache HBase y Amazon s3.
Puede integrar Impala con herramientas de inteligencia empresarial como Tableau, Pentaho, Micro Strategy y Zoom Data.
Impala admite varios formatos de archivo, como LZO, Sequence File, Avro, RCFile y Parquet.
Impala utiliza metadatos, controlador ODBC y sintaxis SQL de Apache Hive.
Bases de datos relacionales e Impala
Impala utiliza un lenguaje de consulta similar a SQL y HiveQL. La siguiente tabla describe algunas de las diferencias clave entre SQL e Impala Query Language.
Impala | Bases de datos relacionales |
---|---|
Impala utiliza un lenguaje de consulta similar a SQL que es similar a HiveQL. | Las bases de datos relacionales utilizan lenguaje SQL. |
En Impala, no puede actualizar ni eliminar registros individuales. | En las bases de datos relacionales, es posible actualizar o eliminar registros individuales. |
Impala no admite transacciones. | Las bases de datos relacionales soportan transacciones. |
Impala no admite la indexación. | Las bases de datos relacionales admiten la indexación. |
Impala almacena y gestiona grandes cantidades de datos (petabytes). | Las bases de datos relacionales manejan cantidades más pequeñas de datos (terabytes) en comparación con Impala. |
Hive, Hbase e Impala
Aunque Cloudera Impala usa el mismo lenguaje de consulta, metastore y la misma interfaz de usuario que Hive, difiere de Hive y HBase en ciertos aspectos. La siguiente tabla presenta un análisis comparativo entre HBase, Hive e Impala.
HBase | Colmena | Impala |
---|---|---|
HBase es una base de datos de almacenamiento de columna ancha basada en Apache Hadoop. Utiliza los conceptos de BigTable. | Hive es un software de almacenamiento de datos. Con esto, podemos acceder y administrar grandes conjuntos de datos distribuidos, creados en Hadoop. | Impala es una herramienta para administrar y analizar datos almacenados en Hadoop. |
El modelo de datos de HBase es un almacén de columnas amplias. | Hive sigue el modelo relacional. | Impala sigue el modelo relacional. |
HBase está desarrollado utilizando lenguaje Java. | Hive se desarrolla utilizando lenguaje Java. | Impala se desarrolla utilizando C ++. |
El modelo de datos de HBase no tiene esquemas. | El modelo de datos de Hive está basado en esquemas. | El modelo de datos de Impala está basado en esquemas. |
HBase proporciona API de Java, RESTful y Thrift. | Hive proporciona JDBC, ODBC, Thrift API. | Impala proporciona API de JDBC y ODBC. |
Admite lenguajes de programación como C, C #, C ++, Groovy, Java PHP, Python y Scala. | Admite lenguajes de programación como C ++, Java, PHP y Python. | Impala admite todos los idiomas compatibles con JDBC / ODBC. |
HBase proporciona soporte para disparadores. | Hive no proporciona ningún soporte para los desencadenantes. | Impala no proporciona ningún soporte para los desencadenantes. |
Todas estas tres bases de datos:
Son bases de datos NOSQL.
Disponible como código abierto.
Admite secuencias de comandos del lado del servidor.
Siga las propiedades de ACID como Durabilidad y Concurrencia.
Utilizar sharding para partitioning.
Inconvenientes de Impala
Algunos de los inconvenientes de usar Impala son los siguientes:
- Impala no proporciona ningún soporte para serialización y deserialización.
- Impala solo puede leer archivos de texto, no archivos binarios personalizados.
- Siempre que se agreguen nuevos registros / archivos al directorio de datos en HDFS, la tabla debe actualizarse.