O que é o Hive? Architextura e modos
O que é o Hive?
Hive é uma ferramenta de ETL e armazenamento de dados desenvolvida com base no Hadoop Distributed File System (HDFS). O Hive facilita o trabalho para realizar operações como
- Encapsulamento de dados
- Consultas ad hoc
- Análise de enormes conjuntos de dados
Características importantes do Hive
- No Hive, tabelas e bancos de dados são criados primeiro e depois os dados são carregados nessas tabelas.
- Hive como data warehouse projetado para gerenciar e consultar apenas dados estruturados armazenados em tabelas.
- Ao lidar com dados estruturados, o Map Reduce não possui recursos de otimização e usabilidade como UDFs, mas a estrutura Hive possui. A otimização de consultas refere-se a uma forma eficaz de execução de consultas em termos de desempenho.
- A linguagem inspirada em SQL do Hive separa o usuário da complexidade da programação do Map Reduce. Ele reutiliza conceitos familiares do mundo do banco de dados relacional, como tabelas, linhas, colunas e esquema, etc., para facilitar o aprendizado.
- A programação do Hadoop funciona em arquivos simples. Portanto, o Hive pode usar estruturas de diretório para “particionar” dados para melhorar o desempenho em determinadas consultas.
- Um componente novo e importante do Hive, ou seja, Metastore usado para armazenar informações de esquema. Este 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 do Hive usando Hive Query Language (HQL)
- Geralmente, a sintaxe HQL é semelhante à SQL sintaxe com a qual a maioria dos analistas de dados está familiarizada. O exemplo de consulta abaixo exibe todos os registros presentes no nome da tabela mencionada.
- Consulta de amostra : Selecione de
- O Hive suporta quatro formatos de arquivo: TEXTFILE, SEQUENCEFILE, ORC e RCFILE (Registrar arquivo colunar).
- Para armazenamento de metadados de usuário único, o Hive usa o banco de dados derby e para metadados de vários usuários ou caso de metadados compartilhados, o Hive usa MYSQL.
Para configurar MySQL como banco de dados e para armazenar informações de metadados, verifique Tutorial “Instalação e Configuração de HIVE e MYSQL”
Alguns dos pontos principais sobre o Hive:
- A principal diferença entre HQL e SQL é que a consulta Hive é executada na infraestrutura do Hadoop, e não no banco de dados tradicional.
- A execução da consulta do Hive será como uma série de trabalhos de redução de mapa gerados automaticamente.
- O Hive oferece suporte a conceitos de partição e buckets para fácil recuperação de dados quando o cliente executa a consulta.
- O Hive suporta UDF (funções definidas pelo usuário) específicas personalizadas para limpeza de dados, filtragem, etc. De acordo com os requisitos dos programadores, pode-se definir UDFs do Hive.
Bancos de dados Hive versus bancos de dados relacionais
Ao utilizar o Hive, podemos realizar algumas funcionalidades peculiares que não são alcançadas em Bancos de Dados Relacionais. Para uma grande quantidade de dados em peta-bytes, é importante consultá-los e obter resultados em segundos. E o Hive faz isso com bastante eficiência, processa as consultas rapidamente e produz resultados em segundos.
Vamos ver agora o que torna o Hive tão rápido.
Algumas diferenças importantes entre o Hive e os bancos de dados relacionais são as seguintes;
Bancos de dados relacionais são de “Esquema em READ e Esquema em Write“. Primeiro criando uma tabela e depois inserindo dados na tabela específica. Em tabelas de bancos de dados relacionais, funções como Inserções, Atualizações e Modificações podem ser executadas.
Colmeia é “Esquema apenas em READ“. Portanto, funções como atualização, modificações, etc. não funcionam com isso. Porque a consulta do Hive em um cluster típico é executada em vários nós de dados. Portanto, não é possível atualizar e modificar dados em vários nós. (Versões do Hive abaixo de 0.13)
Além disso, o Hive suporta “LEIA Muitos ESCREVE UMA VEZ" padrão. O que significa que após inserir a tabela podemos atualizá-la nas versões mais recentes do Hive.
NOTA: No entanto, a nova versão do Hive vem com recursos atualizados. As versões do Hive (Hive 0.14) vêm com opções de atualização e exclusão como novos recursos
Colméia Archiarquitetura
A captura de tela acima explica o apache Arquitetura da colmeia em detalhes
Hive consiste principalmente em 3 partes principais
- Clientes Hive
- Serviços de colmeia
- Armazenamento e computação de colmeia
Clientes da Colmeia:
O Hive fornece diferentes drivers para comunicação com diferentes tipos de aplicativos. Para aplicativos baseados em Thrift, ele fornecerá o cliente Thrift para comunicação.
Para a Java aplicativos relacionados, ele fornece drivers JDBC. Além de qualquer tipo de aplicativo, são fornecidos drivers ODBC. Esses clientes e drivers, por sua vez, se comunicam novamente com o servidor Hive nos serviços Hive.
Serviços de colmeia:
As interações do cliente com o Hive podem ser realizadas por meio dos Serviços Hive. Se o cliente quiser realizar qualquer operação relacionada a consultas no Hive, ele deverá se comunicar por meio dos Serviços Hive.
CLI é a interface de linha de comando que atua como serviço Hive para operações DDL (linguagem de definição de dados). Todos os drivers se comunicam com o servidor Hive e com o driver principal nos serviços Hive, conforme mostrado no diagrama de arquitetura acima.
O driver presente nos serviços Hive representa o driver principal e comunica todos os tipos de JDBC, ODBC e outros aplicativos específicos do cliente. O Driver processará essas solicitações de diferentes aplicativos para metastore e sistemas de campo para processamento posterior.
Armazenamento e computação do Hive:
Os serviços Hive, como Meta store, File system e Job Client, por sua vez, se comunicam com o armazenamento Hive e executam as seguintes ações
- As informações de metadados das tabelas criadas no Hive são armazenadas no “Meta storage database” do Hive.
- Os resultados da consulta e os dados carregados nas tabelas serão armazenados no cluster Hadoop no HDFS.
Fluxo de execução do trabalho:
Na captura de tela acima podemos entender o fluxo de execução do Job no Hive com Hadoop
O fluxo de dados no Hive se comporta no seguinte padrão;
- Executando consulta a partir da UI (interface do usuário)
- O driver está interagindo com o Compilador para obter o plano. (Aqui o plano refere-se ao processo de execução da consulta) e sua coleta de informações de metadados relacionada
- O compilador cria o plano para que um trabalho seja executado. Compilador se comunicando com o Meta Store para obter solicitação de metadados
- Meta store envia informações de metadados de volta ao compilador
- Compilador se comunicando com o Driver com o plano proposto para executar a consulta
- Driver Enviando planos de execução para o mecanismo de execução
- O Execution Engine (EE) atua como uma ponte entre o Hive e o Hadoop para processar a consulta. Para operações DFS.
- EE deve primeiro entrar em contato com o nó de nome e depois com os nós de dados para obter os valores armazenados nas tabelas.
- EE irá buscar os registros desejados dos nós de dados. Os dados reais das tabelas residem apenas no nó de dados. Já no Name Node ele busca apenas as informações de metadados para a consulta.
- Ele coleta dados reais de nós de dados relacionados à consulta mencionada
- O Execution Engine (EE) se comunica bidirecionalmente com o Meta store presente no Hive para realizar operações DDL (Data Definition Language). Aqui são realizadas operações DDL como tabelas e bancos de dados CREATE, DROP e ALTERING. O meta store armazenará informações apenas sobre o nome do banco de dados, nomes de tabelas e nomes de colunas. Ele irá buscar dados relacionados à consulta mencionada.
- O Execution Engine (EE), por sua vez, se comunica com daemons Hadoop, como nó Name, nós Data e rastreador de trabalho, para executar a consulta no sistema de arquivos Hadoop
- Buscando resultados do driver
- Enviando resultados para o mecanismo de execução. Uma vez que os resultados sejam obtidos dos nós de dados para o EE, ele enviará os resultados de volta ao driver e à UI (front end)
Hive Está continuamente em contato com o sistema de arquivos Hadoop e seus daemons por meio do mecanismo de execução. A seta pontilhada no diagrama de fluxo de trabalho mostra a comunicação do mecanismo de execução com os daemons do Hadoop.
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 de redução de mapa
Quando usar o modo Local:
- Se o Hadoop for instalado em pseudo modo com um nó de dados, usaremos o Hive neste modo
- Se o tamanho dos dados for menor em termos de limitação 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 de redução de mapa:
- Se o Hadoop tiver vários nós de dados e os dados forem distribuídos em nós diferentes, usaremos o Hive neste modo
- Ele funcionará em uma grande quantidade de conjuntos de dados e consultas serão executadas de maneira paralela
- O processamento de grandes conjuntos de dados com melhor desempenho pode ser alcançado através deste modo
No Hive, podemos definir esta propriedade para mencionar qual modo o Hive pode funcionar? Por padrão, funciona no modo Map Reduce e para o modo local você pode ter a seguinte configuração.
Hive para trabalhar no modo local definido
SET mapred.job.tracker=local;
A partir da versão 0.7 do Hive, ele suporta um modo para executar tarefas de redução de mapa no modo local automaticamente.
O que é Hive Server2 (HS2)?
HiveServer2 (HS2) é uma interface de servidor que executa as seguintes funções:
- Permite que clientes remotos executem consultas no Hive
- Recuperar os resultados das consultas mencionadas
A partir da versão mais recente, ele possui alguns recursos avançados baseados em Thrift RPC, como;
- Simultaneidade multicliente
- Autenticação
Resumo
Hive é uma ferramenta de ETL e data warehouse baseada no ecossistema Hadoop e usada para processar dados estruturados e semiestruturados.
- Hive é um banco de dados presente no ecossistema Hadoop que realiza operações DDL e DML e fornece linguagem de consulta flexível como HQL para melhor consulta e processamento de dados.
- Ele fornece muitos recursos em comparação com o RDMS que tem certas limitações.
Para que a lógica específica do usuário atenda aos requisitos do cliente.
- Ele fornece a opção de escrever e implantar scripts personalizados e funções definidas pelo usuário.
- Além disso, fornece partições e buckets para lógicas específicas de armazenamento.