Arquitectura y comandos de Apache Hive: modos, características y aplicaciones

Publicado: 2021-06-30

Tabla de contenido

¿Qué es la colmena?

Apache Hive es una herramienta de almacenamiento de datos de código abierto desarrollada por Facebook para el procesamiento distribuido y el análisis de datos. Está desarrollado sobre el sistema de archivos distribuidos de Hadoop (HDFS). Hive proporciona un mecanismo para proyectar la estructura en los datos de Hadoop. Se utiliza un lenguaje similar a SQL llamado HiveQL (HQL) para consultar esos datos. Existe una similitud entre las tablas de Hive y las tablas de una base de datos relacional. Las consultas de Hive pueden escribirse fácilmente por cualquier persona que esté familiarizada con SQL.

Algunas características de Hive son:

  • Almacenamiento de la información del esquema en una base de datos y los datos procesados ​​en HDFS.
  • Diseñado para OLAP.
  • El lenguaje de consulta es HiveQL o HQL, que es similar a SQL.
  • Es rápido, familiar, escalable y extensible.

Usos de la colmena

  • Es el almacenamiento distribuido de Apache Hive.
  • Se proporcionan herramientas que permiten a los usuarios extraer, transformar y cargar datos fácilmente.
  • Se ofrece una variedad de formatos de datos para proporcionar la estructura.
  • Hive puede acceder a los archivos almacenados en Hadoop Distributed File System (HDFS).

Comandos de la colmena

Los comandos de la colmena son:

  1. Lenguaje de definición de datos (DDL): las tablas y otros objetos en la base de datos se construyen y modifican a través de estos comandos.
  • CREAR: Se utiliza para crear una tabla o Base de Datos.
  • MOSTRAR: Se utiliza para mostrar Base de Datos, Tabla, Propiedades, etc.
  • ALTER: Se utiliza para realizar cambios en la tabla existente.
  • DESCRIBE: Describe las columnas de la tabla.
  • TRUNCATE: se utiliza para truncar y eliminar permanentemente las filas de las tablas.
  • ELIMINAR: Elimina los datos de la tabla, pero se pueden restaurar.
  1. Lenguaje de manipulación de datos (DML): se utiliza para recuperar, almacenar, modificar, eliminar, insertar y actualizar datos en la base de datos.
  • Sintaxis para declaraciones LOAD, INSERT

CARGAR datos <LOCAL> ruta de entrada <ruta del archivo> en la tabla [nombre de la tabla]

  • Después de cargar los datos, los comandos de manipulación de datos se utilizan para recuperar los datos.
  • La función de conteo agregado se usa para contar el número total de registros en una tabla.
  • La palabra clave "crear externo" se usa para crear una tabla y proporciona una ubicación donde se creará la tabla. Una tabla EXTERNA apunta a cualquier ubicación HDFS para su almacenamiento.
  • Los comandos de inserción se utilizan para cargar la tabla Hive de datos. "insertar sobrescribir" se usa para sobrescribir los datos existentes y "insertar en" se usa para agregar los datos a datos existentes.
  • Una tabla se divide en particiones mediante el comando "particionado por" y se divide en cubos mediante el comando "agrupado por".
  • La inserción de datos arroja errores ya que la partición dinámica no está habilitada. Por lo tanto, los siguientes parámetros deben configurarse en el shell de Hive.

establecer colmena.exec.dynamic.partition=true;

Para habilitar particiones dinámicas, por defecto, es falso

establezca hive.exec.dynamic.partition.mode=nonstrict;

  • El comando 'Soltar tabla' elimina los datos y metadatos de una tabla
  • Agregación: Sintaxis:

Seleccione el recuento (categoría DISTINCT) del nombre de la tabla;

El comando contará diferentes categorías de tablas 'cate'.

  • Agrupación: Sintaxis:

Seleccione categoría, suma (cantidad) del grupo de registros txt por categoría

El conjunto de resultados se agrupará en una o más columnas.

  • Operación de combinación: realice para combinar campos de dos tablas utilizando valores comunes a cada columna.
  • Combinación externa izquierda: para las tablas A y B, la combinación externa izquierda debe contener todos los registros de la tabla "izquierda" (A), incluso si la condición de combinación no encuentra ningún registro coincidente en la tabla "derecha" (B).
  • Unión exterior derecha: cada fila de la tabla "derecha" (B) aparecerá en la tabla unida al menos una vez.
  • Unión completa: la tabla unida contendrá todos los registros de ambas tablas. La tabla unida contendrá todos los registros de ambas tablas.

Arquitectura colmena

La arquitectura de la colmena apache se muestra en la Figura 1 .

Lista de componentes principales

Los principales componentes de la arquitectura de la colmena son:

1. Cliente colmena

Las diferentes aplicaciones escritas en lenguajes como Java, Python, C++, etc. se comunican mediante el uso de diferentes controladores proporcionados por Hive. Se puede escribir en cualquier idioma a elección. Los Clientes y servidores a su vez se comunican con el servidor de Hive en los servicios de Hive.

En su mayoría se clasifican en tres tipos:

  • Cliente Thrift: se basa en Apache Thrift para atender una solicitud de un cliente Thrift. El cliente Thrift se utilizará para la comunicación de las aplicaciones basadas en Thrift.
  • Cliente JDBC: JDBC se proporciona para aplicaciones relacionadas con Java. Las aplicaciones Java se conectan a Hive mediante el controlador JDBC. Además, utiliza Thrift para comunicarse con el servidor Hive.
  • Cliente ODBC: Las aplicaciones basadas en el protocolo ODBC pueden conectarse a Hive a través de los controladores ODBC. Similar a JDBC, utiliza Thrift para comunicarse con el servidor Hive.

2. Servicios de colmena

Los servicios de Hive proporcionan medios para las interacciones de Hive con los Clientes. Las operaciones de consulta que deban ser realizadas por el Cliente deberán ser comunicadas a través de los servicios de Contratación. Para las operaciones del Lenguaje de definición de datos (DDL), la CLI actúa como el servicio de Hive.

Todos los controladores deben comunicarse con el servidor de Hive y luego con el controlador principal en los servicios de Hive. Los controladores en los servicios de Hive representan el controlador principal que se comunica con las aplicaciones específicas del Cliente y todos los tipos de JDBC, ODBC, etc. El controlador procesa las solicitudes de diferentes aplicaciones a los sistemas de metastore y de campo que se procesarán posteriormente.

Los servicios que ofrece Hive son:

  • Beeline: Beeline es un shell de comandos donde un usuario puede enviar sus consultas al sistema. Es compatible con HiveServer2. Es un cliente JDBC que se basa en SQLLINE CLI.
  • Hive Server 2: los clientes pueden ejecutar las consultas en la colmena. Sucesor de HiveServer1, permite la ejecución de múltiples consultas desde múltiples clientes. Proporciona el mejor soporte para clientes API abiertos como JDBC y ODBC.
  • Controlador de Hive: el usuario envía las declaraciones de HiveQL al controlador de Hive a través del shell de comandos. Envía la consulta al compilador y crea identificadores de sesión para la consulta.
  • Compilador de Hive: el compilador de Hive se utiliza para pasar la consulta. Utilizando los metadatos almacenados en el metastore, el compilador de Hive realiza análisis semánticos y verificación de tipos en los diferentes bloques de consulta y expresiones. Luego, el compilador genera un plan de ejecución, que es el DAG (Gráfico acíclico dirigido). Cada etapa del DAG es una operación de metadatos, una operación en HDFS o es un trabajo de asignación/reducción.
  • Optimizador: La función principal del optimizador es realizar operaciones de transformación en el plan de ejecución. Aumenta la eficiencia y la escalabilidad al dividir las tareas.
  • Motor de ejecución : después de completar los pasos de compilación y optimización, es el rol del motor de ejecución el que ejecuta el plan de ejecución creado por el compilador. El plan se ejecuta utilizando Hadoop en el orden de sus dependencias.
  • Metastore : Metastore es generalmente una base de datos relacional que almacena la información de metadatos relacionada con la estructura de las tablas y particiones. Es un repositorio central que también incluye el almacenamiento de información de columnas y tipos de columnas. La información relacionada con el serializador y el deserializador también se almacena en Metastore, que se requiere para operaciones de lectura/escritura junto con archivos HDFS que almacenan datos. Metastore proporciona una interfaz Thrift para consultar y manipular los metadatos de Hive.

Metastore se puede configurar en dos modos:

  • Remoto: este modo es útil para aplicaciones que no son de Java y, en el modo remoto, MetaStore es un servicio Thrift.
  • Embebido: en este modo, el cliente puede interactuar directamente con el metastore a través de JDBC.
  • HCatalog: la capa de administración de tablas y almacenamiento para Hadoop es HCatalog. Hay disponibles diferentes herramientas de procesamiento de datos para leer y escribir datos en la cuadrícula, como Pig, MapReduce, etc. Construido sobre la parte superior de Hive metastore, los datos tabulares de Hive metastore están expuestos a otras herramientas de procesamiento de datos.
  • WebHCat: WebHCat es una interfaz HTTP y una API REST para HCatalog. Realiza operaciones de metadatos de Hive y ofrece un servicio de ejecución de trabajos Hadoop MapReduce (o YARN), Pig, Hive.

3. Procesamiento y Gestión de Recursos

La ejecución de las consultas se lleva a cabo mediante un framework interno de MapReduce.

El marco MapReduce es un marco de software para procesar grandes cantidades de datos en grandes grupos de hardware básico. Los datos se dividen en fragmentos y luego se procesan mediante tareas de reducción de mapas.

4. Almacenamiento Distribuido

Los servicios de Hive se comunican con el almacenamiento de Hive para realizar las siguientes acciones:

  • La "base de datos de metaalmacenamiento" de Hive contiene la información de metadatos de las tablas creadas en Hive.
  • El clúster de Hadoop en HDFS almacenará los resultados de Query y los datos cargados en las tablas.

Diferentes modos de colmena

Dependiendo del tamaño de los datos, Hive puede operar en dos modos.

  1. Modo local

El modo local de Hive se utiliza cuando

  • El Hadoop instalado tiene un nodo de datos y se instala en modo pseudo.
  • El tamaño de los datos de una sola máquina local es menor.
  • Procesamiento rápido en máquinas locales debido a los conjuntos de datos más pequeños presentes.
  1. Modo de reducción de mapa

El modo Map reduce de Hive se usa cuando

  • Hadoop tiene varios nodos de datos con datos distribuidos en los diferentes nodos.
  • El tamaño de los datos es mayor y se requiere la ejecución paralela de la consulta.
  • Los grandes conjuntos de datos se pueden procesar con un mejor rendimiento.

Características de la colmena

  • Los datos se cargan en las tablas después de crear las tablas y las bases de datos.
  • Hive solo puede administrar y consultar los datos estructurados almacenados en tablas.
  • El marco Hive tiene características de optimización y usabilidad al tratar con datos estructurados que no están presentes en Map Reduce.
  • Para facilitar su uso, el lenguaje inspirado en Hive SQL es un enfoque más simple en comparación con el complejo lenguaje de programación de Map Reduce. En Hive se utilizan conceptos familiares de tablas, filas, columnas, etc.
  • Para aumentar el rendimiento de las consultas, Hive puede particionar los datos mediante una estructura de directorios.
  • Hive contiene un componente importante llamado "Metastore" que reside en una base de datos relacional y almacena información de esquema. Se pueden usar dos métodos para interactuar con Hive: la GUI web y la interfaz de conectividad de base de datos Java (JDBC).
  • Se utiliza una interfaz de línea de comandos (CLI) para la mayoría de las interacciones. La CLI se utiliza para escribir las consultas de Hive mediante Hive Query Language (HQL).
  • La sintaxis HQL es similar a la sintaxis SQL.
  • Hive admite cuatro formatos de archivo; TEXTFILE, SEQUENCEFILE, ORC y RCFILE (Registro de archivos en columnas).

Conclusión

Apache Hive es una herramienta de almacenamiento de datos de código abierto que consta de componentes principales como clientes de Hive, servicios de Hive, marco de procesamiento y gestión de recursos, y almacenamiento distribuido.

Está construido sobre el ecosistema Hadoop para el procesamiento de estructuras y datos semiestructurados. La interfaz de usuario proporcionada por Hive permite al usuario enviar sus consultas en Hive Query Language (HQL). Esto se pasa al compilador para generar un plan de ejecución. El plan es finalmente ejecutado por el motor de ejecución.

Si está interesado en saber más sobre Big Data, consulte nuestro programa PG Diploma in Software Development Specialization in Big Data, que está diseñado para profesionales que trabajan y proporciona más de 7 estudios de casos y proyectos, cubre 14 lenguajes y herramientas de programación, prácticas talleres, más de 400 horas de aprendizaje riguroso y asistencia para la colocación laboral con las mejores empresas.

Consulte nuestros otros cursos de ingeniería de software en upGrad.

Liderar la revolución tecnológica basada en datos

7 ESTUDIOS DE CASOS Y PROYECTOS. ASISTENCIA LABORAL CON LAS PRINCIPALES FIRMAS. MENTOR DE ESTUDIANTE DEDICADO.
Programa de Certificado Avanzado en Big Data de IIIT Bangalore