O que é o Hive? Architextura e modos
⚡ Resumo Inteligente
O Hive é a camada SQL do ecossistema Hadoop, transformando instruções HiveQL em tarefas distribuídas que leem dados estruturados já presentes no HDFS, permitindo que os analistas consultem tabelas de petabytes sem precisar escrever código MapReduce.

O que é o Hive?
O Hive é uma ferramenta de ETL e armazenamento de dados desenvolvida sobre o Hadoop Distributed File System (HDFS). O Hive facilita a execução de operações como
- Encapsulamento de dados
- Consultas ad hoc
- Análise de enormes conjuntos de dados
Características importantes do Hive
Os pontos abaixo explicam o que diferencia o Hive de um programa MapReduce comum.
- No Hive, tabelas e bancos de dados são criados primeiro e depois os dados são carregados nessas tabelas.
- O Hive é um data warehouse projetado para gerenciar e consultar apenas dados estruturados armazenados em tabelas.
- Ao lidar com dados estruturados, o MapReduce não possui recursos de otimização e usabilidade como as UDFs (Funções Definidas pelo Usuário), mas o framework Hive sim. A otimização de consultas refere-se a uma maneira eficiente de executar consultas em termos de desempenho.
- A linguagem do Hive, inspirada em SQL, separa o usuário da complexidade da programação MapReduce. Ela reutiliza conceitos familiares do mundo dos bancos de dados relacionais, como tabelas, linhas, colunas e esquema, para facilitar o aprendizado.
- A programação do Hadoop funciona com arquivos planos. Portanto, o Hive pode usar estruturas de diretórios para “partição” Dados para melhorar o desempenho em determinadas consultas.
- Um componente importante do Hive é o metastore, usado para armazenar informações de esquema. Esse metastore normalmente reside em um banco de dados relacional. Podemos interagir com o Hive usando métodos como
- GUI da Web
- Java Interface de conectividade de banco de dados (JDBC)
- A maioria das interações tende a ocorrer por meio de uma interface de linha de comando (CLI). O Hive fornece uma CLI para escrever consultas Hive usando a Linguagem de Consulta Hive (HQL).
- Geralmente, a sintaxe HQL é semelhante à SQL sintaxe com a qual a maioria dos analistas de dados está familiarizada. A consulta de exemplo abaixo exibe todos os registros presentes na tabela mencionada.
- Consulta de amostra : Selecione de
- O Hive suporta quatro formatos de arquivo, que são: TEXTFILE, SEQUENCEFILE, ORC e RCFILE (Registrar arquivo colunar).
- Para armazenamento de metadados de usuário único, o Hive utiliza o banco de dados Derby, e para metadados compartilhados ou de múltiplos usuários, o Hive utiliza... MySQL.
Para configurar MySQL Para armazenar informações de metadados e usar o banco de dados, consulte o tutorial em Configurando o metastore do Hive com MySQL, que dá sequência ao Guia de instalação do Hive.
Alguns dos pontos principais sobre o Hive:
- A principal diferença entre HQL e SQL é que uma consulta Hive é executada na infraestrutura do Hadoop, em vez de em um banco de dados tradicional.
- A execução de consultas Hive é uma série de comandos gerados automaticamente. MapaReduzir empregos.
- O Hive suporta os conceitos de particionamento e bucket para facilitar a recuperação de dados quando o cliente executa a consulta.
- O Hive suporta personalização. UDFs (funções definidas pelo usuário) Para limpeza de dados, filtragem e tarefas similares. De acordo com as necessidades dos programadores, é possível definir UDFs (Funções Definidas pelo Usuário) no Hive.
Bancos de dados Hive versus bancos de dados relacionais
O Hive executa funções que os bancos de dados relacionais não conseguem. Quando os dados atingem petabytes, retornar resultados em segundos é crucial, e o Hive faz isso com eficiência. As principais diferenças são as seguintes.
Bancos de dados relacionais são de “esquema de leitura e esquema de escrita”Primeiro, cria-se uma tabela e, em seguida, os dados são inseridos nela. Em tabelas de bancos de dados relacionais, funções como inserções, atualizações e modificações podem ser executadas.
Colmeia é “esquema em modo somente leitura”Assim, funções como atualização e modificação não funcionavam nas primeiras versões, porque uma consulta Hive em um cluster típico é executada em vários DataNodes, o que impossibilitava a atualização e modificação de dados em vários nós (versões do Hive anteriores à 0.13).
O Hive também oferece suporte ao “Leia muito, escreva uma vez” padrão, portanto, em versões recentes, uma tabela pode ser atualizada após a inserção.
OBSERVAÇÃO: As versões mais recentes do Hive vêm com recursos atualizados. O Hive 0.14 introduziu os comandos UPDATE e DELETE como novos recursos, e versões posteriores adicionaram suporte completo a transações ACID.
A tabela abaixo resume a comparação.
| Aspecto | Banco de dados relacional | Colmeia Apache |
|---|---|---|
| Validação de esquema | Ao escrever | Ao ler |
| Volume de dados típico | Gigabytes a terabytes | Terabytes a petabytes |
| Carga de trabalho | Leituras e gravações OLTP em nível de linha | análise de lote de varredura completa |
| Linguagem de consulta | SQL | HQL, um dialeto inspirado em SQL |
| Execução | Mecanismo de banco de dados | trabalhos de cluster distribuídos |
Colméia Archiarquitetura
O diagrama abaixo explica o apache Arquitetura do Hive em detalhes.
O Hive consiste principalmente em 3 partes principais:
- Clientes do Hive
- Serviços Hive
- Armazenamento e computação do Hive
Clientes Hive
O Hive fornece diferentes drivers para comunicação com diferentes tipos de aplicações. Para aplicações baseadas em Thrift, ele fornece um cliente Thrift para comunicação.
Para Java Para aplicações relacionadas, fornece drivers JDBC. Para qualquer outro tipo de aplicação, fornece drivers ODBC. Esses clientes e drivers, por sua vez, comunicam-se com o servidor Hive nos serviços do Hive.
Serviços de colmeia
As interações do cliente com o Hive são realizadas por meio dos serviços do Hive. Se o cliente deseja executar qualquer operação relacionada a consultas no Hive, ele precisa se comunicar por meio dos serviços do Hive.
A CLI atua como o serviço Hive para operações DDL. Todos os drivers se comunicam com o servidor Hive e o driver principal nos serviços Hive, conforme mostrado no diagrama de arquitetura acima.
O driver nos serviços do Hive é o driver principal: ele se comunica com JDBC, ODBC e outros aplicativos específicos do cliente, e então passa suas solicitações para o metastore e o sistema de arquivos para processamento posterior.
Armazenamento e computação de colmeia
Os serviços do Hive, como o metastore, o sistema de arquivos e o cliente de tarefas, por sua vez, comunicam-se com o armazenamento do Hive e executam as seguintes ações:
- As informações de metadados sobre as tabelas criadas no Hive são armazenadas no Hive. banco de dados metastore.
- Os resultados das consultas e os dados carregados nas tabelas são armazenados no cluster Hadoop em HDFS.
Fluxo de execução de tarefas
O diagrama abaixo tracé uma consulta da interface do usuário para os DataNodes e vice-versa.
A partir do diagrama acima, podemos entender o fluxo de execução de tarefas no Hive com Hadoop. O fluxo de dados no Hive se comporta segundo o seguinte padrão.
- Executar uma consulta a partir da interface do usuário (UI)
- O driver interage com o compilador para obter o plano. (Aqui, plano se refere ao processo de execução da consulta e à coleta de informações de metadados relacionadas.)
- O compilador cria o plano para a execução da tarefa. O compilador se comunica com o metastore para obter a solicitação de metadados.
- O metastore envia informações de metadados de volta para o compilador.
- O compilador comunica-se com o driver, apresentando o plano proposto para executar a consulta.
- O driver envia planos de execução para o mecanismo de execução.
- O mecanismo de execução (EE) atua como uma ponte entre o Hive e o Hadoop para processar a consulta, incluindo operações DFS:
- O EE primeiro contata o NameNode e depois os DataNodes para obter os valores armazenados nas tabelas.
- O EE busca os registros desejados nos DataNodes. Os dados da tabela propriamente ditos residem apenas nos nós de dados; do NameNode, ele busca apenas os metadados para a consulta.
- Ele coleta dados reais dos nós de dados relacionados à consulta mencionada.
- O EE comunica-se bidirecionalmente com o metastore para executar operações DDL (linguagem de definição de dados), tais como: CRIAR, SOLTAR e ALTERAR em tabelas e bancos de dados. O metastore armazena apenas nomes de bancos de dados, tabelas e colunas.
- O EE, por sua vez, comunica-se com os daemons do Hadoop, como o NameNode, os DataNodes e os jobs. tracker para executar a consulta sobre o sistema de arquivos Hadoop
- Obtendo resultados do driver
- Envio dos resultados para o mecanismo de execução. Assim que os resultados são obtidos dos nós de dados para o mecanismo de execução, este os envia de volta para o driver e para a interface do usuário (front-end).
O Hive mantém contato com o sistema de arquivos Hadoop e seus daemons por meio do mecanismo de execução. A seta pontilhada no diagrama mostra essa comunicação.
Diferentes modos de Hive
O Hive pode operar em dois modos, dependendo do tamanho dos nós de dados no Hadoop. Esses modos são:
- Modo local
- Modo MapReduce
Quando usar o modo local
- Se o Hadoop estiver instalado em modo pseudo-distribuído com um único nó de dados, usaremos o Hive nesse modo.
- Se o tamanho dos dados for pequeno o suficiente para ser limitado a uma única máquina local, podemos usar este modo.
- O processamento será muito rápido em conjuntos de dados menores presentes na máquina local
Quando usar o modo MapReduce
- Se o Hadoop tiver vários nós de dados e os dados estiverem distribuídos entre os diferentes nós, usamos o Hive neste modo.
- Ele processa grandes quantidades de dados e a consulta é executada em paralelo.
- O processamento de grandes conjuntos de dados com melhor desempenho pode ser alcançado através deste modo
No Hive, podemos definir uma propriedade para indicar em qual modo o Hive deve operar. Por padrão, ele opera no modo MapReduce e, para o modo local, você pode usar a seguinte configuração:
SET mapred.job.tracker=local;
A partir da versão 0.7, o Hive oferece suporte a um modo que executa tarefas MapReduce localmente de forma automática. No Hive 4.x, o mecanismo padrão é o Apache Tez, portanto, essa propriedade se aplica ao caminho MapReduce legado.
O que é Hive Server2 (HS2)?
O HiveServer2 (HS2) é uma interface de servidor que executa as seguintes funções:
- Permite que clientes remotos executem consultas no Hive
- Recupera os resultados dessas consultas.
As versões atuais adicionam recursos avançados baseados em Thrift RPC, tais como:
- Simultaneidade multicliente
- Autenticação
O HS2 fica por trás do Beeline e de todas as sessões JDBC ou ODBC, razão pela qual substituiu a CLI do Hive para usuário único. Operadores e funções integradas do HiveQL A consulta é o próximo passo natural.


