Impala - Arquitectura
Impala es un motor de ejecución de consultas MPP (Massive Parallel Processing) que se ejecuta en varios sistemas del clúster de Hadoop. A diferencia de los sistemas de almacenamiento tradicionales, impala está desacoplado de su motor de almacenamiento. Tiene tres componentes principales, a saber, el demonio Impala (Impalad) , el Impala Statestore y los metadatos o metastore de Impala.
Demonio de Impala ( Impalad )
Impala daemon (también conocido como impalad) se ejecuta en cada nodo donde está instalado Impala. Acepta las consultas de varias interfaces como impala shell, navegador hue, etc.… y las procesa.
Siempre que se envía una consulta a un impalad en un nodo en particular, ese nodo sirve como "coordinator node”Para esa consulta. Impalad también atiende varias consultas que se ejecutan en otros nodos. Después de aceptar la consulta, Impalad lee y escribe en archivos de datos y paraleliza las consultas distribuyendo el trabajo a los otros nodos de Impala en el clúster de Impala. Cuando las consultas se procesan en varias instancias de Impalad , todas devuelven el resultado al nodo de coordinación central.
Dependiendo del requisito, las consultas se pueden enviar a un Impalad dedicado o de manera equilibrada a otro Impalad en su clúster.
Tienda estatal Impala
Impala tiene otro componente importante llamado Impala State store, que es responsable de verificar el estado de cada Impalad y luego transmitir el estado de cada demonio Impala a los otros demonios con frecuencia. Esto puede ejecutarse en el mismo nodo donde se ejecuta el servidor Impala u otro nodo dentro del clúster.
El nombre del proceso del demonio de la tienda Impala State se almacena en el estado . Impalad informa su estado de salud al demonio de la tienda Impala State, es decir, el estado almacenado .
En caso de falla de un nodo debido a cualquier motivo, Statestore actualiza todos los demás nodos sobre esta falla y, una vez que dicha notificación está disponible para el otro impalad , ningún otro demonio de Impala asigna más consultas al nodo afectado.
Impala Metadata & Meta Store
Impala metadata & meta store es otro componente importante. Impala utiliza bases de datos tradicionales MySQL o PostgreSQL para almacenar definiciones de tablas. Los detalles importantes, como la información de la tabla y la columna, y las definiciones de la tabla, se almacenan en una base de datos centralizada conocida como meta tienda.
Cada nodo de Impala almacena en caché todos los metadatos localmente. Cuando se trata de una cantidad extremadamente grande de datos y / o muchas particiones, obtener metadatos específicos de la tabla puede llevar una cantidad de tiempo significativa. Por lo tanto, una caché de metadatos almacenada localmente ayuda a proporcionar dicha información al instante.
Cuando se actualiza una definición de tabla o datos de tabla, otros demonios de Impala deben actualizar su caché de metadatos recuperando los últimos metadatos antes de emitir una nueva consulta en la tabla en cuestión.
Interfaces de procesamiento de consultas
Para procesar consultas, Impala proporciona tres interfaces que se enumeran a continuación.
Impala-shell - Después de configurar Impala usando Cloudera VM, puede iniciar el shell de Impala escribiendo el comando impala-shellen el editor. Discutiremos más sobre el shell Impala en los próximos capítulos.
Hue interface- Puede procesar consultas de Impala utilizando el navegador Hue. En el navegador Hue, tiene el editor de consultas de Impala, donde puede escribir y ejecutar las consultas de Impala. Para acceder a este editor, en primer lugar, debe iniciar sesión en el navegador Hue.
ODBC/JDBC drivers- Al igual que otras bases de datos, Impala proporciona controladores ODBC / JDBC. Con estos controladores, puede conectarse a impala a través de lenguajes de programación que admitan estos controladores y crear aplicaciones que procesen consultas en impala utilizando esos lenguajes de programación.
Procedimiento de ejecución de consultas
Siempre que los usuarios pasen una consulta utilizando cualquiera de las interfaces proporcionadas, esto es aceptado por uno de los Impalads en el clúster. Este Impalad se trata como un coordinador para esa consulta en particular.
Después de recibir la consulta, el coordinador de consultas verifica si la consulta es apropiada, usando el Table Schemade la meta tienda de Hive. Posteriormente, recopila la información sobre la ubicación de los datos que se requieren para ejecutar la consulta, desde el nodo de nombre de HDFS y envía esta información a otros empalados para ejecutar la consulta.
Todos los demás demonios de Impala leen el bloque de datos especificado y procesan la consulta. Tan pronto como todos los demonios completan sus tareas, el coordinador de consultas recopila el resultado y se lo entrega al usuario.