Impala

Publicado por

Impala ofrece una tecnología de base de datos escalable y paralela sobre Hadoop permitiendo a los usuarios realizar consultas SQL con baja latencia sobre los datos guardados en el HDFS o en HBase sin necesidad de moverlos o transformarlos. Impala esta integrado con Hadoop para que utilice los mismos ficheros, formatos, metadatos, seguridad y frameworks de administración de recursos utilizados por MapReduce, Apache Hive, Apache Pig, etc.

Índice

  1. Introducción
  2. Arquitectura
  3. Aplicaciones

1. Introducción

Cloudera Impala es un motor de consultas que se ejecuta sobre Hadoop. El proyecto fue anunciado en Octubre de 2012 como beta y empezó a estar disponible en Mayo del 2013.

Impala esta dirigido a analista y científicos de datos para realizar análisis de datos guardados en Hadoop vía SQL o con herramientas de inteligencia de negocios. El resultado es que el procesamiento a gran escala y las consultas interactivas son posibles en el mismo sistema sin necesidad de migrar datos o utilizar formatos propietarios.

Características

  • Soporta almacenamiento en HDFS o en HBase
  • Soporte para ficheros LZO, SequenceFile, Avro, RCFile y parquet.
  • Se puede habilitar seguridad Kerberos
  • Autorización basado en roles con Sentry
  • Utiliza metadatos, driver ODBC y sintaxis SQL de Hive.

2. Arquitectura

El servidor de Impala es un motor de bases de datos distribuido y procesamiento paralelo masivo. Consiste en un conjunto de demonios que corren sobre unos servidores específicos dentro del cluster CDH.

El Demonio Impala

Uno de los componentes core de Impala es un demonio que corre en cada DataNode del cluster, fisicamente representado por el proceso impalad. Lee y escribe los archivos de datos; acepta consultas y distribuye el trabajo sobre el cluster; transmite de vuelta los resultados de las consultas intermedias al nodo coordinador.

Es posible enviar una consulta al demonio Impala de cualquier DataNode, y ese nodo será el coordinador para esa consulta. Los otros nodos transmiten los resultados parciales al coordinador, que construye el resultado final. Cuando conectas la impala-shell siempre conectaras con el mismo DataNode por conveniencia si vas a explorar y repartirás la carga entre varios DataNode cuando estés en producción.

Los demonios Impala están en constante comunicación con el statestore para verificar que nodos se encuentran en estado correcto y pueden aceptar nuevos trabajos.

También reciben mensajes desde el demonio catalogd (desde Hive 0.12). Cuando alguno de los nodos del cluster de Impala crea, modifica o elimina cualquier tipo de objeto o cuando se insertan datos con INSERT o LOAD, el demonio Impala transmite todas las acciones al resto de nodos. Esta comunicación de fondo permite minimizar la necesidad deREFRESH o INVALIDATE METADATA.

El Statestore

Este verifica que los demonios Impala están corriendo correctamente en todos los DataNodes del cluster, y retransmite continuamente sus estados a cada uno de ellos. Físicamente esta representado por el proceso Statestore y solo se necesita un proceso en un servidor por cluster. Si el demonio Impala queda fuera de línea por un fallo de hardware, un error en la red, un problema de software o cualquier otra razón, el Statestore informa a los otros demonios Impala para que en las consultas futuras eviten preguntar al nodo que esta caído.

Como el propósito del Statestore es ayudar cuando las cosas van mal, no es un punto crítico para el funcionamiento normal de un clúster Impala. Si el Statestore no esta corriendo o no es alcanzable, los demonios Impala continuan corriendo y distribuyendo el trabajo como siempre. El clúster es menos robusto si otros demonios Impala fallan mientras el Statestore está fuera de línea. Cuando se recupera, reestablece las comunicaciones con los demonios Impala.

El Catalog Service

El Catalog Service retransmite los cambios en los metadatos que se hacen con las sentencias SQL de todos los DataNode del clúster. Esta representado por el proceso catalogd, solo es necesario un demonio en ejecucción en un servidor del clúster. Como las peticiones son enviadas al Statestore es recomendable que los dos demonios estén corriendo sobre la misma máquina.

Este servicio evita tener que refrescar o invalidar los metadatos cuando se produce un cambio a través de Impala. Si los cambios se producen a través de Hive o directamente en HDFS, los datos deberán ser refrescados.

3. Aplicaciones

El lenguaje core en Impala es SQL. También se pueden utilizar Java y otros lenguajes para interactuar con Impala a través de los conectores estándar JDBC y ODBC, utilizados por muchas herramientas de inteligencia de negocios. Para tipos de análisis especiales se puede complementar las funciones incorporadas en SQL escribiendo funciones definidas por el usuario (UDF) en C++ o Java.

El dialecto Impala SQL es compatible con la sintaxis SQL usada en el componente HiveQL. Por lo que es fácil para quien sabe SQL ponerse a consultar datos en Hadoop.

Normalmente la construcción de tablas y archivos de datos se realizan con otros sistemas, y después se pone Impala para obtener consultas en tiempo real.

>impala-shell

Al estar enfocado al rendimiento de consultas Impala puede leer mas tipos de los que puede escribir, por eso la carga de ficheros debe hacerse con Hive par .avro, RCFile o SequenceFile.

Enlaces

Cloudera Impala

Wikipedia Cloudera Impala

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión /  Cambiar )

Google photo

Estás comentando usando tu cuenta de Google. Cerrar sesión /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión /  Cambiar )

Conectando a %s