O que é o Hive? Arquitetura e Modos

Neste tutorial, você aprenderá-

O que é o Hive?

Hive é uma ferramenta de armazenamento de dados e ETL 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, as tabelas e bancos de dados são criados primeiro e, em seguida, os dados são carregados nessas tabelas.
  • O 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 tem recursos de otimização e usabilidade como UDFs, mas o framework Hive tem. Otimização de consulta refere-se a uma forma eficaz de execução de consulta em termos de desempenho.
  • A linguagem inspirada em SQL do Hive separa o usuário da complexidade da programação 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 certas consultas.
  • Um novo e importante componente 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
    • Interface Java Database Connectivity (JDBC)
  • A maioria das interações tende a ocorrer em uma interface de linha de comando (CLI). Hive fornece uma CLI para escrever consultas Hive usando Hive Query Language (HQL)
  • Geralmente, a sintaxe HQL é semelhante à sintaxe SQL com a qual a maioria dos analistas de dados está familiarizada. A consulta de amostra abaixo exibe todos os registros presentes no nome da tabela mencionada.
    • Consulta de amostra : Selecione de
  • O Hive suporta quatro formatos de arquivo que são TEXTFILE, SEQUENCEFILE, ORC e ​​RCFILE (Arquivo Colunar de Registro).
  • Para armazenamento de metadados de um único usuário, o Hive usa o banco de dados derby e para vários metadados de usuário ou caso de metadados compartilhados, o Hive usa MYSQL.

Para configurar o MySQL como banco de dados e armazenar informações de Meta-dados, verifique o 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 do 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 jobs de redução de mapa gerados automaticamente.
  • O Hive oferece suporte aos conceitos de partição e buckets para fácil recuperação de dados quando o cliente executa a consulta.
  • O Hive oferece suporte a UDF (funções definidas pelo usuário) específicas para limpeza de dados, filtragem, etc. De acordo com os requisitos dos programadores, é possível definir UDFs do Hive.

Bancos de dados relacionais Hive Vs: -

Ao usar o Hive, podemos executar 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, ele 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 Gravação '. Primeiro criando uma tabela e depois inserindo dados na tabela específica. Em tabelas de banco de dados relacional, funções como inserções, atualizações e modificações podem ser executadas.

Hive é ' Esquema somente 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, ESCREVA uma vez ' padronizar. 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 as opções Atualizar e Excluir como novos recursos

Arquitetura Hive

A imagem acima explica o Apache Arquitetura Hive em detalhes

Hive consiste principalmente em 3 partes principais

  1. Clientes Hive
  2. Serviços Hive
  3. Armazenamento e computação Hive

Clientes Hive:

O Hive fornece drivers diferentes para comunicação com diferentes tipos de aplicativos. Para aplicativos baseados em Thrift, ele fornecerá o cliente Thrift para comunicação.

Para aplicativos relacionados a Java, ele fornece drivers JDBC. Diferente de qualquer tipo de aplicativo fornecido com drivers ODBC. Esses clientes e drivers, por sua vez, se comunicam novamente com o servidor Hive nos serviços Hive.

Serviços Hive:

As interações do cliente com o Hive podem ser realizadas por meio dos Serviços do Hive. Se o cliente deseja realizar qualquer operação relacionada a consultas no Hive, ele deve se comunicar por meio dos Serviços do Hive.

CLI é a interface de linha de comando que atua como serviço Hive para operações DDL (Data definition Language). 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 meta-armazenamento 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 de tabelas criadas no Hive são armazenadas no 'banco de dados de armazenamento Meta' 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:

A partir da captura de tela acima, podemos entender o fluxo de execução do trabalho no Hive com Hadoop

O fluxo de dados no Hive se comporta no seguinte padrão;

  1. Execução de consulta a partir da IU (interface do usuário)
  2. O driver está interagindo com o Compiler para obter o plano. (Aqui plano refere-se à execução da consulta) processo e sua coleta de informações de metadados relacionada
  3. O compilador cria o plano para um trabalho a ser executado. Compilador se comunicando com Meta store para obter solicitação de metadados
  4. Meta store envia informações de metadados de volta ao compilador
  5. Compilador se comunicando com o Driver com o plano proposto para executar a consulta
  6. Driver enviando planos de execução para o mecanismo de execução
  7. 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 contatar o Nó de Nome e, em seguida, os nós de Dados para obter os valores armazenados nas tabelas.
  • EE vai buscar os registros desejados dos nós de dados. Os dados reais das tabelas residem apenas no nó de dados. Enquanto a partir do Nó de Nome, 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 feitas operações DDL como tabelas e bancos de dados CREATE, DROP e ALTERING. Meta store armazenará informações sobre o nome do banco de dados, nomes de tabelas e nomes de colunas apenas. Ele irá buscar dados relacionados à consulta mencionada.
  • O Execution Engine (EE), por sua vez, se comunica com daemons do Hadoop, como o nó de nome, os nós de dados e o rastreador de trabalho para executar a consulta no sistema de arquivos Hadoop
  1. Buscando resultados do motorista
  2. Enviando resultados para o mecanismo de execução. Uma vez que os resultados obtidos dos nós de dados para o EE, ele enviará os resultados de volta para o driver e para a IU (front end)

Hive 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 daemons 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 no pseudo modo com um nó de dados, usamos 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, usamos o Hive neste modo
  • Ele funcionará em uma grande quantidade de conjuntos de dados e a consulta será executada de forma paralela
  • O processamento de grandes conjuntos de dados com melhor desempenho pode ser alcançado através deste modo

No Hive, podemos definir essa propriedade para mencionar qual modo o Hive pode funcionar? Por padrão, ele funciona no modo Reduzir Mapa 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 oferece suporte a 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
  • Recupere os resultados das consultas mencionadas

A partir da versão mais recente tem alguns recursos avançados, como o baseado em Thrift RPC;

  • Concorrência multi-cliente
  • Autenticação

Resumo:

Hive é uma ferramenta de ETL e data warehouse no topo do ecossistema Hadoop e usada para processar dados estruturados e semiestruturados.

  • Hive é um banco de dados presente no ecossistema Hadoop que executa operações DDL e DML e fornece linguagem de consulta flexível, como HQL, para melhor consulta e processamento de dados.
  • Ele oferece muitos recursos em comparação ao RDMS, que possui 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 definidos de forma personalizada e funções definidas pelo usuário.
  • Além disso, ele fornece partições e depósitos para lógicas específicas de armazenamento.