Um data warehouse baseado em Hadoop, adequado para alguns aplicativos de alta latência (desenvolvimento offline), pode mapear arquivos de dados estruturados e semiestruturados armazenados em arquivos Hadoop em uma tabela de banco de dados e fornecer dados semelhantes a SQL com base na tabela. modelo, chamado Hive Query Language (HQL), para acessar e analisar grandes conjuntos de dados armazenados em arquivos Hadoop;
O núcleo do Hive é converter HQL em um programa MapReduce e, em seguida, enviar o programa ao cluster Hadoop para execução;
O próprio Hive não armazena nem calcula dados. Ele depende totalmente de HDFS e MapReduce. As tabelas no Hive são tabelas puramente lógicas.
O que é um armazém de dados?
O data warehouse em si não “produz” nenhum dado e seus dados vêm de diferentes sistemas externos;
Ao mesmo tempo, o próprio data warehouse não precisa “consumir” nenhum dado e os resultados estão abertos a diversas aplicações externas;
É por isso que é chamado de “armazém” e não de “fábrica”;
Arquitetura e componentes do Hive
Loja Meta: Geralmente armazenados em bancos de dados relacionais como Mysql/derby, os metadados no Hive incluem o nome da tabela, as colunas e partições da tabela e seus atributos, os atributos da tabela (seja uma tabela externa, etc.), o diretório onde estão localizados os dados da tabela, etc.;
Motorista : Driver, incluindo analisador de sintaxe, compilador de plano, otimizador e executor. Instruções completas de consulta HQL de análise lexical, análise de sintaxe, compilação, otimização e geração de plano de consulta. O plano de consulta gerado é armazenado no HDFS e posteriormente executado pela chamada do mecanismo de execução;
Analisador (Analisador SQL): Converta strings SQL em árvore de sintaxe abstrata AST e execute análise de sintaxe no AST, como se a semântica SQL está correta, se a tabela existe e se os campos existem;
Compilador (plano físico): Compilar AST para gerar plano de execução lógica (DAG);
Otimizador (Otimizador de Consulta): Otimizar o plano de execução lógica;
Execução: Converta o plano de execução lógico em um plano físico executável, que é um programa MapReduce/Spark;
Processo de execução HQL
Faça um pedido: Iniciar uma solicitação de execução da UI para o Driver;
Obtenha o plano de execução: Driver envia solicitação do usuário ao compilador para obter plano de execução;
Obtenha metadados: O compilador obtém metadados relevantes do armazenamento Meta com base na tabela relevante e nas informações de partição na instrução SQL;
Metadados de retorno: O meta store retorna os metadados correspondentes ao compilador;
Plano de execução de retorno: Analise e otimize SQL com base em metadados de tabelas e partições para gerar planos de execução lógica. O plano é um gráfico DAG e cada estágio corresponde a um mapa MapReduce ou operação de redução;
Execute o plano de execução: Enviar o plano de execução para o Execution Engine, que enviará o plano lógico de execução ao Hadoop para execução na forma de MapReduce;
Os resultados de execução são obtidos: O Driver coleta os resultados da execução e os envia para a UI;