Un almacén de datos basado en Hadoop, adecuado para algunas aplicaciones de alta latencia (desarrollo fuera de línea), puede asignar archivos de datos estructurados y semiestructurados almacenados en archivos Hadoop en una tabla de base de datos y proporcionar datos similares a SQL basados en la tabla. modelo, llamado Hive Query Language (HQL), para acceder y analizar grandes conjuntos de datos almacenados en archivos Hadoop;
El núcleo de Hive es convertir HQL en un programa MapReduce y luego enviar el programa al clúster de Hadoop para su ejecución;
Hive en sí no almacena ni calcula datos. Se basa completamente en HDFS y MapReduce. Las tablas de Hive son tablas puramente lógicas.
¿Qué es un almacén de datos?
El almacén de datos en sí no "produce" ningún dato y sus datos provienen de diferentes sistemas externos;
Al mismo tiempo, el almacén de datos en sí no necesita "consumir" ningún dato y los resultados están abiertos a varias aplicaciones externas;
Por eso se le llama "almacén" y no "fábrica";
Arquitectura y componentes de Hive.
Tienda meta: Generalmente se almacena en bases de datos relacionales como Mysql/derby. Los metadatos en Hive incluyen el nombre de la tabla, las columnas y particiones de la tabla y sus atributos, los atributos de la tabla (si es una tabla externa, etc.). el directorio donde se encuentran los datos de la tabla, etc.;
Conductor : Controlador, que incluye analizador de sintaxis, compilador de planes, optimizador y ejecutor. Complete las declaraciones de consulta HQL a partir de análisis léxico, análisis de sintaxis, compilación, optimización y generación de planes de consulta. El plan de consulta generado se almacena en HDFS y posteriormente se ejecuta mediante la llamada del motor de ejecución;
Analizador (analizador SQL): Convierta cadenas SQL en un árbol de sintaxis abstracta AST y realice análisis de sintaxis en el AST, como si la semántica de SQL es correcta, si la tabla existe y si los campos existen;
Compilador (Plan físico): Compile AST para generar un plan de ejecución lógico (DAG);
Optimizador (Optimizador de consultas): Optimice el plan de ejecución lógico;
Ejecución: Convierta el plan de ejecución lógico en un plan físico ejecutable, que es un programa MapReduce/Spark;
Proceso de ejecución HQL
Haga una solicitud: Iniciar una solicitud de ejecución desde la interfaz de usuario al controlador;
Obtener plan de ejecución: El controlador envía la solicitud del usuario al compilador para obtener el plan de ejecución;
Obtener metadatos: El compilador obtiene metadatos relevantes del Meta store en función de la tabla relevante y la información de partición en la declaración SQL;
Metadatos de devolución: Meta store devuelve los metadatos correspondientes al compilador;
Plan de ejecución de devolución: Analice y optimice SQL basándose en metadatos de tablas y particiones para generar planes de ejecución lógicos. El plan es un gráfico DAG y cada etapa corresponde a un mapa MapReduce o operación de reducción;
Ejecute el plan de ejecución: Envíe el plan de ejecución al motor de ejecución, que enviará el plan de ejecución lógico a Hadoop para su ejecución en forma de MapReduce;
Los resultados de ejecución se obtienen: El controlador recopila los resultados de la ejecución y los envía a la interfaz de usuario;