¿Qué es Hive? Arquitectura & Modos

Tabla de contenido:

Anonim

En este tutorial, aprenderá:

  • ¿Qué es Hive?
  • Arquitectura de la colmena
  • Diferentes modos de Hive
  • ¿Qué es Hive Server2 (HS2)?

¿Qué es Hive?

Hive es una herramienta de almacenamiento de datos y ETL desarrollada sobre Hadoop Distributed File System (HDFS). Hive facilita el trabajo para realizar operaciones como

  • Encapsulación de datos
  • Consultas ad-hoc
  • Análisis de grandes conjuntos de datos

Características importantes de Hive

  • En Hive, las tablas y bases de datos se crean primero y luego los datos se cargan en estas tablas.
  • Hive como almacén de datos diseñado para administrar y consultar solo datos estructurados que se almacenan en tablas.
  • Al tratar con datos estructurados, Map Reduce no tiene funciones de optimización y usabilidad como las UDF, pero el marco de Hive sí las tiene. La optimización de consultas se refiere a una forma eficaz de ejecución de consultas en términos de rendimiento.
  • El lenguaje inspirado en SQL de Hive separa al usuario de la complejidad de la programación de Map Reduce. Reutiliza conceptos familiares del mundo de las bases de datos relacionales, como tablas, filas, columnas y esquemas, etc. para facilitar el aprendizaje.
  • La programación de Hadoop funciona en archivos planos. Por lo tanto, Hive puede usar estructuras de directorio para "particionar" datos para mejorar el rendimiento en determinadas consultas.
  • Un componente nuevo e importante de Hive, es decir, Metastore que se utiliza para almacenar información de esquema. Este Metastore normalmente reside en una base de datos relacional. Podemos interactuar con Hive usando métodos como
    • GUI web
    • Interfaz de conectividad de base de datos Java (JDBC)
  • La mayoría de las interacciones tienden a tener lugar a través de una interfaz de línea de comandos (CLI). Hive proporciona una CLI para escribir consultas de Hive utilizando Hive Query Language (HQL)
  • Generalmente, la sintaxis de HQL es similar a la sintaxis de SQL con la que están familiarizados la mayoría de los analistas de datos. La consulta de muestra a continuación muestra todos los registros presentes en el nombre de la tabla mencionado.
    • Consulta de muestra : seleccione * de
  • Hive admite cuatro formatos de archivo que son TEXTFILE, SEQUENCEFILE, ORC y RCFILE (Record Columnar File).
  • Para el almacenamiento de metadatos de un solo usuario, Hive usa la base de datos Derby y para el caso de Metadatos de múltiples usuarios o Metadatos compartidos, Hive usa MYSQL.

Para configurar MySQL como base de datos y almacenar información de metadatos, consulte el Tutorial "Instalación y configuración de HIVE y MYSQL"

Algunos de los puntos clave sobre Hive:

  • La principal diferencia entre HQL y SQL es que la consulta de Hive se ejecuta en la infraestructura de Hadoop en lugar de en la base de datos tradicional.
  • La ejecución de la consulta de Hive será como una serie de trabajos de reducción de mapas generados automáticamente.
  • Hive admite conceptos de partición y depósitos para una fácil recuperación de datos cuando el cliente ejecuta la consulta.
  • Hive admite UDF (funciones definidas por el usuario) específicas y personalizadas para la limpieza, el filtrado, etc. de datos. De acuerdo con los requisitos de los programadores, se pueden definir UDF de Hive.

Bases de datos relacionales de Hive Vs: -

Al usar Hive, podemos realizar alguna funcionalidad peculiar que no se logra en las bases de datos relacionales. Para una gran cantidad de datos en peta-bytes, es importante consultarlos y obtener resultados en segundos. Y Hive hace esto de manera bastante eficiente, procesa las consultas rápidamente y produce resultados en un segundo.

Veamos ahora qué hace que Hive sea tan rápido.

Algunas diferencias clave entre Hive y las bases de datos relacionales son las siguientes;

Las bases de datos relacionales son de " Schema on READ y Schema on Write ". Primero creando una tabla y luego insertando datos en la tabla en particular. En tablas de bases de datos relacionales, se pueden realizar funciones como inserciones, actualizaciones y modificaciones.

Hive es " Schema en READ solamente ". Entonces, funciones como la actualización, modificaciones, etc.no funcionan con esto. Porque la consulta de Hive en un clúster típico se ejecuta en varios nodos de datos. Por lo tanto, no es posible actualizar y modificar datos en varios nodos (versiones de Hive por debajo de 0.13).

Además, Hive admite el patrón " READ Many WRITE Once ". Lo que significa que después de insertar la tabla podemos actualizar la tabla en las últimas versiones de Hive.

NOTA : Sin embargo, la nueva versión de Hive viene con características actualizadas. Las versiones de Hive (Hive 0.14) presentan las opciones Actualizar y Eliminar como nuevas características

Arquitectura de la colmena

La captura de pantalla anterior explica la arquitectura de Apache Hive en detalle

La colmena consta principalmente de 3 partes principales

  1. Clientes de Hive
  2. Servicios de Hive
  3. Computación y almacenamiento de Hive

Clientes de Hive:

Hive proporciona diferentes controladores para la comunicación con un tipo diferente de aplicaciones. Para las aplicaciones basadas en Thrift, proporcionará un cliente Thrift para la comunicación.

Para aplicaciones relacionadas con Java, proporciona controladores JDBC. Aparte de cualquier tipo de aplicaciones, se proporcionan controladores ODBC. Estos Clientes y controladores, a su vez, se comunican nuevamente con el servidor de Hive en los servicios de Hive.

Servicios de la colmena:

Las interacciones del cliente con Hive se pueden realizar a través de Hive Services. Si el cliente desea realizar operaciones relacionadas con consultas en Hive, debe comunicarse a través de Hive Services.

CLI es la interfaz de línea de comandos que actúa como servicio de Hive para las operaciones de DDL (lenguaje de definición de datos). Todos los controladores se comunican con el servidor de Hive y con el controlador principal en los servicios de Hive, como se muestra en el diagrama de arquitectura anterior.

El controlador presente en los servicios de Hive representa el controlador principal y comunica todo tipo de JDBC, ODBC y otras aplicaciones específicas del cliente. El controlador procesará esas solicitudes de diferentes aplicaciones a los sistemas de metaalmacén y campo para su posterior procesamiento.

Computación y almacenamiento de Hive:

Los servicios de Hive, como Meta store, File system y Job Client, a su vez, se comunican con el almacenamiento de Hive y realizan las siguientes acciones

  • La información de metadatos de las tablas creadas en Hive se almacena en la "Base de datos de meta almacenamiento" de Hive.
  • Los resultados de las consultas y los datos cargados en las tablas se almacenarán en el clúster de Hadoop en HDFS.

Flujo de ejecución del trabajo:

De la captura de pantalla anterior, podemos comprender el flujo de ejecución del trabajo en Hive con Hadoop.

El flujo de datos en Hive se comporta con el siguiente patrón;

  1. Ejecución de consultas desde la interfaz de usuario (interfaz de usuario)
  2. El controlador está interactuando con el compilador para obtener el plan. (En este caso, el plan se refiere al proceso de ejecución de consultas) y la recopilación de información de metadatos relacionada
  3. El compilador crea el plan para ejecutar un trabajo. El compilador se comunica con Meta store para obtener una solicitud de metadatos
  4. Meta store envía información de metadatos al compilador
  5. El compilador se comunica con el controlador con el plan propuesto para ejecutar la consulta
  6. Controlador que envía planes de ejecución al motor de ejecución
  7. Execution Engine (EE) actúa como un puente entre Hive y Hadoop para procesar la consulta. Para operaciones DFS.
  • EE debe contactar primero con el nodo de nombre y luego con los nodos de datos para obtener los valores almacenados en las tablas.
  • EE va a buscar los registros deseados de los nodos de datos. Los datos reales de las tablas residen solo en el nodo de datos. Mientras que desde Name Node solo obtiene la información de metadatos para la consulta.
  • Recopila datos reales de los nodos de datos relacionados con la consulta mencionada.
  • Execution Engine (EE) se comunica bidireccionalmente con Meta store presente en Hive para realizar operaciones DDL (Data Definition Language). Aquí se realizan operaciones DDL como CREATE, DROP y ALTERING tablas y bases de datos. El meta store almacenará información sobre el nombre de la base de datos, los nombres de las tablas y los nombres de las columnas únicamente. Obtendrá datos relacionados con la consulta mencionada.
  • El motor de ejecución (EE) a su vez se comunica con los demonios de Hadoop, como el nodo de nombre, los nodos de datos y el rastreador de trabajos para ejecutar la consulta en la parte superior del sistema de archivos de Hadoop.
  1. Obteniendo resultados del conductor
  2. Envío de resultados al motor de ejecución. Una vez que los resultados se obtienen de los nodos de datos al EE, enviará los resultados al controlador y a la interfaz de usuario (interfaz)

Hive Continuamente en contacto con el sistema de archivos Hadoop y sus demonios a través del motor de ejecución. La flecha punteada en el diagrama de flujo de trabajo muestra la comunicación del motor de ejecución con los demonios de Hadoop.

Diferentes modos de Hive

Hive puede operar en dos modos dependiendo del tamaño de los nodos de datos en Hadoop.

Estos modos son,

  • Modo local
  • Modo de reducción de mapa

Cuándo usar el modo local:

  • Si Hadoop se instaló en pseudo modo con un nodo de datos, usamos Hive en este modo
  • Si el tamaño de los datos es menor en términos de limitado a una sola máquina local, podemos usar este modo
  • El procesamiento será muy rápido en conjuntos de datos más pequeños presentes en la máquina local.

Cuándo usar el modo de reducción de mapa:

  • Si Hadoop tiene varios nodos de datos y los datos se distribuyen en diferentes nodos, usamos Hive en este modo.
  • Funcionará en una gran cantidad de conjuntos de datos y la consulta se ejecutará en forma paralela.
  • El procesamiento de grandes conjuntos de datos con un mejor rendimiento se puede lograr a través de este modo.

En Hive, podemos establecer esta propiedad para mencionar en qué modo puede funcionar Hive. De forma predeterminada, funciona en el modo Reducir mapa y para el modo local puede tener la siguiente configuración.

Hive para trabajar en modo local establecido

SET mapred.job.tracker = local;

Desde la versión 0.7 de Hive, admite un modo para ejecutar tareas de reducción de mapas en modo local automáticamente.

¿Qué es Hive Server2 (HS2)?

HiveServer2 (HS2) es una interfaz de servidor que realiza las siguientes funciones:

  • Permite a los clientes remotos ejecutar consultas en Hive
  • Recuperar los resultados de las consultas mencionadas

Desde la última versión tiene algunas características avanzadas basadas en Thrift RPC como;

  • Simultaneidad multicliente
  • Autenticación

Resumen:

Hive es una herramienta de almacenamiento de datos y ETL sobre el ecosistema de Hadoop y se utiliza para procesar datos estructurados y semiestructurados.

  • Hive es una base de datos presente en el ecosistema Hadoop que realiza operaciones DDL y DML, y proporciona un lenguaje de consulta flexible como HQL para una mejor consulta y procesamiento de datos.
  • Proporciona tantas funciones en comparación con RDMS que tiene ciertas limitaciones.

Para que la lógica específica del usuario cumpla con los requisitos del cliente.

  • Proporciona la opción de escribir e implementar scripts definidos personalizados y funciones definidas por el usuario.
  • Además, proporciona particiones y depósitos para lógicas específicas de almacenamiento.