¿Qué es Hive? ArchiTecnología y modos

⚡ Resumen inteligente

Hive es la capa SQL del ecosistema Hadoop, que convierte las sentencias HiveQL en trabajos distribuidos que leen datos estructurados que ya se encuentran en HDFS, de modo que los analistas pueden consultar tablas de petabytes sin tener que escribir ellos mismos el código MapReduce.

  • ???? Qué es: Una herramienta ETL y de almacenamiento de datos que añade tablas, filas y columnas a los archivos almacenados en HDFS.
  • 🗂️ Metatienda: La información del esquema reside en un metastore relacional, respaldado por Derby para un usuario y por MySQL para acceso compartido.
  • 🆚 Contra un RDBMS: Hive valida el esquema al leerlo, se escala horizontalmente y da preferencia a los escaneos grandes sobre las actualizaciones a nivel de fila que maneja una base de datos.
  • ???? ️ Tres capas: Los clientes, los servicios y el almacenamiento conforman la arquitectura, con el controlador coordinando el compilador, el metastore y el motor de ejecución.
  • 🔀 Dos modos: El modo local es adecuado para un único nodo de datos y archivos pequeños, mientras que el modo MapReduce distribuye la ejecución entre un clúster de varios nodos.
  • ???? HiveServer2: La interfaz HS2 basada en Thrift añade concurrencia multicliente y autenticación para sesiones remotas.

Arquitectura y modos de Hive

¿Qué es Hive?

Hive es una herramienta ETL y de almacenamiento de datos desarrollada sobre el sistema de archivos distribuidos de Hadoop (HDFS). Hive facilita la realización de operaciones como

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

Características importantes de Hive

Los puntos que se describen a continuación explican qué diferencia a Hive de un programa MapReduce convencional.

  • En Hive, primero se crean tablas y bases de datos y luego se cargan los datos en estas tablas.
  • Hive es un almacén de datos diseñado para gestionar y consultar únicamente datos estructurados almacenados en tablas.
  • Al trabajar con datos estructurados, MapReduce no cuenta con funciones de optimización y usabilidad como las UDF, a diferencia del framework Hive. La optimización de consultas se refiere a una forma eficaz de ejecutar consultas en términos de rendimiento.
  • El lenguaje de Hive, inspirado en SQL, aleja al usuario de la complejidad de la programación MapReduce. Reutiliza conceptos familiares del mundo de las bases de datos relacionales, como tablas, filas, columnas y esquemas, para facilitar el aprendizaje.
  • La programación de Hadoop funciona con archivos planos. Por lo tanto, Hive puede usar estructuras de directorios para "dividir" datos para mejorar el rendimiento en determinadas consultas.
  • Un componente importante de Hive es el metastore, utilizado para almacenar información de esquema. Este metastore normalmente reside en una base de datos relacional. Podemos interactuar con Hive utilizando métodos como
    • GUI web
    • Java Interfaz de conectividad de base de datos (JDBC)
  • La mayoría de las interacciones suelen realizarse a través de una interfaz de línea de comandos (CLI). Hive proporciona una CLI para escribir consultas de Hive utilizando el lenguaje de consulta de Hive (HQL).
  • Generalmente, la sintaxis HQL es similar a la SQL Sintaxis con la que la mayoría de los analistas de datos están familiarizados. La siguiente consulta de ejemplo muestra todos los registros presentes en la tabla mencionada.
    • Consulta de muestra : Seleccione * de
  • Hive admite cuatro formatos de archivo, que son: ARCHIVO DE TEXTO, ARCHIVO DE SECUENCIA, ORC y ARCHIVO RC (Registro de archivo en columnas).
  • Para el almacenamiento de metadatos de un solo usuario, Hive utiliza la base de datos Derby, y para metadatos compartidos o de varios usuarios, Hive utiliza MySQL.

para configurar MySQL como base de datos y para almacenar información de metadatos, consulte el tutorial en configurar el metastore de Hive con MySQL, que sigue a la Guía de instalación de Hive.

Algunos de los puntos clave sobre Hive:

  • La principal diferencia entre HQL y SQL es que una consulta de Hive se ejecuta en la infraestructura de Hadoop en lugar de en una base de datos tradicional.
  • La ejecución de consultas de Hive es una serie de procesos generados automáticamente. MapReduce puestos de trabajo.
  • Hive admite conceptos de partición y de cubeta para facilitar la recuperación de datos cuando el cliente ejecuta la consulta.
  • Hive admite personalización UDF (funciones definidas por el usuario) Para la limpieza, el filtrado y otras tareas similares de datos. Según los requisitos de los programadores, se pueden definir funciones definidas por el usuario (UDF) de Hive.

Hive versus bases de datos relacionales

Hive realiza funciones que las bases de datos relacionales no pueden. Cuando los datos alcanzan el nivel de petabytes, devolver resultados en segundos es crucial, y Hive lo hace de manera eficiente. Las principales diferencias son las siguientes.

Las bases de datos relacionales son de “esquema de lectura y esquema de escritura”Primero se crea una tabla y luego se insertan datos en ella. En las tablas de bases de datos relacionales, se pueden realizar funciones como inserciones, actualizaciones y modificaciones.

Hive es “esquema de solo lectura”Por lo tanto, funciones como la actualización y la modificación no funcionaban en las primeras versiones, porque una consulta de Hive en un clúster típico se ejecuta en varios DataNodes, lo que hacía imposible actualizar y modificar datos en varios nodos (versiones de Hive inferiores a la 0.13).

Hive también es compatible con “Lee mucho, escribe una vez” patrón, por lo que en versiones recientes una tabla se puede actualizar después de la inserción.

NOTA: Las versiones más recientes de Hive incluyen funciones actualizadas. Hive 0.14 introdujo las funciones UPDATE y DELETE, y las versiones posteriores añadieron compatibilidad total con transacciones ACID.

La tabla que aparece a continuación resume la comparación.

Aspecto Base de datos relacional Colmena Apache
Validación de esquemas En escribir En lectura
Volumen de datos típico Gigabytes a terabytes De terabytes a petabytes
carga de trabajo Lecturas y escrituras OLTP a nivel de fila Análisis de lotes de escaneo completo
Lenguaje de consulta SQL HQL, un dialecto inspirado en SQL
Ejecución Motor de base de datos trabajos en clúster distribuido

Colmena Architectura

El diagrama a continuación explica el APACHE Arquitectura de la colmena en detalle.

Diagrama de arquitectura de Apache Hive que muestra clientes, servicios, almacenamiento y computación.

Hive se compone principalmente de 3 partes principales:

  1. Clientes de Hive
  2. Servicios de Hive
  3. Almacenamiento y computación de Hive

Clientes de colmena

Hive proporciona diferentes controladores para la comunicación con distintos tipos de aplicaciones. Para las aplicaciones basadas en Thrift, proporciona un cliente Thrift para la comunicación.

Para Java Para aplicaciones relacionadas, proporciona controladores JDBC. Para cualquier otro tipo de aplicación, proporciona controladores ODBC. Estos clientes y controladores, a su vez, se comunican con el servidor Hive en los servicios Hive.

Servicios de colmena

Las interacciones del cliente con Hive se realizan a través de los servicios de Hive. Si el cliente desea realizar alguna operación relacionada con consultas en Hive, debe comunicarse a través de los servicios de Hive.

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

El controlador en los servicios de Hive es el controlador principal: se comunica con JDBC, ODBC y otras aplicaciones específicas del cliente, y luego pasa sus solicitudes al metastore y al sistema de archivos para su posterior procesamiento.

Almacenamiento y computación de Hive

Los servicios de Hive, como el metastore, el sistema de archivos y el cliente de trabajos, se comunican a su vez con el almacenamiento de Hive y realizan las siguientes acciones:

  • La información de metadatos sobre las tablas creadas en Hive se almacena en Hive. base de datos metastore.
  • Los resultados de las consultas y los datos cargados en las tablas se almacenan en el clúster de Hadoop en HDFS.

Flujo de ejecución de trabajos

El diagrama a continuación traces una consulta desde la interfaz de usuario a los DataNodes y viceversa.

Diagrama de flujo de ejecución de trabajos de Hive tracenviar una consulta desde la interfaz de usuario a los DataNodes

A partir del diagrama anterior podemos comprender el flujo de ejecución de trabajos en Hive con Hadoop. El flujo de datos en Hive se comporta según el siguiente patrón.

  1. Ejecutar una consulta desde la interfaz de usuario (UI)
  2. El controlador interactúa con el compilador para obtener el plan. (Aquí, plan se refiere al proceso de ejecución de la consulta y a la recopilación de la información de metadatos relacionada).
  3. El compilador crea el plan para la tarea que se va a ejecutar. El compilador se comunica con el metastore para obtener la solicitud de metadatos.
  4. El metastore envía información de metadatos de vuelta al compilador.
  5. El compilador se comunica con el controlador con el plan propuesto para ejecutar la consulta.
  6. El controlador envía planes de ejecución al motor de ejecución.
  7. El motor de ejecución (EE) actúa como un puente entre Hive y Hadoop para procesar la consulta, incluidas las operaciones DFS:
    • El EE primero se comunica con el NameNode y luego con los DataNodes para obtener los valores almacenados en las tablas.
    • El EE obtiene los registros deseados de los DataNodes. Los datos reales de la tabla residen únicamente en los nodos de datos; del NameNode solo obtiene los metadatos para la consulta.
    • Recopila datos reales de los nodos de datos relacionados con la consulta mencionada.
    • El EE se comunica bidireccionalmente con el metastore para realizar operaciones DDL (lenguaje de definición de datos) tales como: CREAR, ARRASTRAR y MODIFICAR en tablas y bases de datos. El metastore almacena únicamente los nombres de las bases de datos, las tablas y las columnas.
    • El EE, a su vez, se comunica con demonios de Hadoop como NameNode, DataNodes y job. tracker para ejecutar la consulta sobre el sistema de archivos Hadoop
  1. Obteniendo resultados del controlador
  2. Envío de resultados al motor de ejecución. Una vez que los resultados se obtienen de los nodos de datos al EE, este los envía de vuelta al controlador y a la interfaz de usuario (front-end).

Hive se mantiene 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 muestra dicha comunicación.

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 MapReduce

Cuándo usar el modo local

  • Si Hadoop está instalado en modo pseudo-distribuido con un nodo de datos, utilizamos Hive en este modo.
  • Si el tamaño de los datos es lo suficientemente pequeño como para limitarse 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 MapReduce

  • Si Hadoop tiene varios nodos de datos y los datos se distribuyen entre los diferentes nodos, utilizamos Hive en este modo.
  • Realiza operaciones con grandes cantidades de datos y la consulta se ejecuta en paralelo.
  • A través de este modo se puede lograr el procesamiento de grandes conjuntos de datos con mejor rendimiento.

En Hive podemos establecer una propiedad para indicar en qué modo debe funcionar Hive. Por defecto funciona en modo MapReduce, y para el modo local puede utilizar la siguiente configuración:

SET mapred.job.tracker=local;

A partir de la versión 0.7 de Hive, se admite un modo que ejecuta automáticamente los trabajos de MapReduce en modo local. En Hive 4.x, el motor predeterminado es Apache Tez, por lo que esta propiedad se aplica a la ruta de MapReduce heredada.

¿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
  • Recupera los resultados de esas consultas.

Las versiones actuales añaden funciones avanzadas basadas en Thrift RPC, tales como:

  • Concurrencia multicliente
  • Autenticación

HS2 se encuentra detrás de Beeline y de cada sesión JDBC u ODBC, razón por la cual reemplazó la CLI de Hive de un solo usuario. Operadores y funciones integradas de HiveQL La referencia es el siguiente paso natural.

Preguntas Frecuentes

Hive es una capa de consulta por lotes que escanea tablas grandes mediante trabajos distribuidos. HBase es una base de datos NoSQL diseñada para lecturas y escrituras aleatorias en milisegundos sobre filas individuales. Resuelven patrones de acceso opuestos y a menudo se ejecutan en paralelo.

Hive se ejecuta en MapReduce, Apache Tez o Apache SparkMapReduce está obsoleto y Hive 4.x utiliza Tez por defecto, que mantiene los resultados intermedios en memoria en lugar de escribirlos en el disco entre las etapas.

Una tabla administrada le da a Hive la propiedad de los metadatos y archivos, por lo que eliminarping elimina los datos del directorio del almacén. Una tabla externa almacena solo metadatos y los elimina.ping Deja los archivos subyacentes intactos.

Los modelos de costos aprendidos retroalimentan las estadísticas de ejecución al planificador para predecir el volumen de escaneo, el orden de unión y la poda de particiones con mayor precisión que las estimaciones estáticas. Las plataformas en la nube muestran las mismas señales como recomendaciones de compactación y diseño de particiones.

Copilot elabora uniones HiveQL, funciones de ventana y Java Esqueletos de UDF a partir de un comentario, lo que reduce el trabajo repetitivo. Los nombres de las columnas, las claves de partición y los tipos de datos aún deben verificarse primero con el metastore real.

Sí. Hive 0.14 añadió las funciones UPDATE y DELETE, y las versiones posteriores ofrecieron compatibilidad total con ACID para tablas transaccionales. Hive 4.x amplía esta funcionalidad mediante tablas Apache Iceberg con aislamiento de instantáneas y evolución de esquemas.

Los tres exponen SQL sobre los mismos archivos. Hive favorece los trabajos por lotes largos y es propietario del metastore que leen los demás. Spark SQL se adapta a flujos de trabajo mixtos; Trino está diseñado para consultas interactivas entre varias fuentes.

Sí, principalmente a través de Hive Metastore, que sigue siendo el estándar de catálogo. SparkTrino, Presto y Flink leen todos. Hive sigue realizando transformaciones por lotes programadas y cargas de almacén.

Resumir este post con: