Principios básicos de Hive
Hive es una infraestructura de almacenamiento de datos basada en Hadoop. Proporciona una serie de herramientas para extraer, transformar y cargar (ETL) datos. Hive es un mecanismo que puede almacenar, consultar y analizar datos masivos almacenados en Hadoop. Hive define un lenguaje de consulta simple similar a SQL, que se conoce como HiveQL. Permite a los usuarios familiarizados con SQL consultar datos. El cálculo de datos de Hive depende de MapReduce, Spark, y Tez.
El nuevo motor de ejecución Tez se utiliza para reemplazar el MapReduce original, mejorando significativamente el rendimiento. Tez puede convertir varios trabajos dependientes en un trabajo, por lo que solo una vez que se requiere la escritura HDFS y se necesitan menos nodos de tránsito, lo que mejora enormemente el rendimiento de los trabajos DAG.
Hive proporciona las siguientes funciones:
- Analiza datos estructurados masivos y resume los resultados del análisis.
- Permite compilar trabajos complejos de MapReduce en lenguajes SQL.
- Soporta formatos flexibles de almacenamiento de datos, incluidos JavaScript object notation (JSON), comma separated values (CSV), TextFile, RCFile, SequenceFile, y ORC (Optimized Row Columnar).
Estructura del sistema de Hive:
- Interfaz de usuario: Hay tres interfaces de usuario disponibles, es decir, CLI, Client y WUI. CLI es la interfaz de usuario más utilizada. Se inicia una transcripción de Hive cuando se inicia CLI. Client hace referencia a un cliente de Hive y un usuario de cliente se conecta a Hive Server. Al entrar en el modo cliente, debe especificar el nodo donde reside el servidor Hive e iniciar el servidor Hive en este nodo. La web UI se utiliza para acceder a Hive a través de un navegador. MRS solo puede acceder a Hive en modo cliente. Para obtener más información, consulte Uso de Hive desde ScratchPara obtener más información sobre cómo desarrollar aplicaciones Hive, consulte Desarrollo de aplicaciones de Hive.
- Almacenamiento de metadatos: Hive almacena metadatos en bases de datos, por ejemplo, MySQL y Derby. Los metadatos de Hive incluyen un nombre de tabla, columnas y particiones de tabla y sus propiedades, propiedades de tabla (que indican si una tabla es una tabla externa) y el directorio donde se almacenan los datos de la tabla.
Marco de Hive
Hive es un proceso de servicio de instancia única que proporciona servicios al traducir HQL en trabajos de MapReduce u operaciones HDFS relacionadas. Figura 1 muestra cómo Hive está conectado a otros componentes.
Módulo |
Descripción |
---|---|
HiveServer |
Se pueden implementar varias HiveServers en un clúster para compartir cargas. HiveServer proporciona servicios de base de datos Hive externamente, traduce sentencias HQL en tareas YARN u operaciones HDFS relacionadas para completar la extracción, conversión y análisis de datos. |
MetaStore |
|
WebHCat |
Se pueden desplegar varios WebHCats en un clúster para compartir cargas. WebHCat proporciona las API de REST y ejecuta los comandos Hive a través de las API de REST para enviar trabajos de MapReduce. |
Hive client |
El cliente de Hive incluye la interfaz de línea de comandos de hombre-máquina (CLI) Beeline, controlador JDBC para aplicaciones de JDBC, controlador Python para aplicaciones de Python y archivos de HCatalog JAR para MapReduce. |
ZooKeeper cluster |
Como nodo temporal, ZooKeeper registra la lista de direcciones IP de cada instancia de HiveServer. El controlador de cliente se conecta a ZooKeeper para obtener la lista y selecciona las instancias de HiveServer correspondientes en función del mecanismo de enrutamiento. |
HDFS/HBase cluster |
El clúster de HDFS almacena los datos de la tabla Hive. |
MapReduce/YARN cluster |
Proporciona servicios informáticos distribuidos. La mayoría de las operaciones de datos de Hive dependen de MapReduce. La función principal de HiveServer es traducir declaraciones HQL en trabajos MapReduce para procesar datos masivos. |
HCatalog se basa en Hive Metastore e incorpora la capacidad de DDL de Hive. HCatalog también es una capa de gestión de almacenamiento y tablas basada en Hadoop que permite la lectura y escritura de datos convenientes en tablas de HDFS mediante el uso de diferentes herramientas de procesamiento de datos como Pig y MapReduce. Además, HCatalog también proporciona API de lectura/escritura para estas herramientas y utiliza una CLI de Hive para publicar comandos para definir datos y consultar metadatos. Después de encapsular estos comandos, WebHCat Server puede proporcionar las API de RESTful, como se muestra en Figura 2.
Principios
Hive funciona como un almacén de datos basado en la arquitectura de HDFS y MapReduce y traduce las sentencias HQL en trabajos de MapReduce u operaciones de HDFS. Para obtener más información sobre Hive y HQL, consulte Manual de lenguaje de HiveQL.
Figura 3 muestra la estructura de Hive.
- Metastore: lee, escribe y actualiza metadatos como tablas, columnas y particiones. Su capa inferior son las bases de datos relacionales.
- Driver: gestiona el ciclo de vida de la ejecución de HiveQL y participa en toda la ejecución del trabajo de Hive.
- Compiler: traduce sentencias HQL en una serie de trabajos de Map o Reduce interdependientes.
- Optimizer: se clasifica en optimizador lógico y optimizador físico para optimizar los planes de ejecución de HQL y los trabajos de MapReduce respectivamente.
- Executor: ejecuta trabajajos de Map o Reduce en función de las dependencias del trabajo.
- ThriftServer: funciona como los servidores de JDBC, proporciona API de Thrift y se integra con Hive y otras aplicaciones.
- Clients: incluyen las API de WebUI y JDBC y proporciona API para el acceso de los usuarios.