Arquitetura e comandos do Apache Hive: modos, características e aplicativos

Publicados: 2021-06-30

Índice

O que é Hive?

O Apache hive é uma ferramenta de armazenamento de dados de código aberto desenvolvida pelo Facebook para processamento distribuído e análise de dados. Ele é desenvolvido em cima do Hadoop Distributed File System (HDFS). Um mecanismo para projetar estrutura nos dados no Hadoop é fornecido pelo Hive. Uma linguagem semelhante a SQL chamada HiveQL (HQL) é usada para consultar esses dados. Há uma semelhança entre as tabelas no Hive e as tabelas em um banco de dados relacional. As consultas do Hive podem ser facilmente escritas por quem está familiarizado com SQL.

Alguns recursos do Hive são:

  • Armazenamento de informações de esquema em um banco de dados e os dados processados ​​em HDFS.
  • Projetado para OLAP.
  • A linguagem de consulta é HiveQL ou HQL, que é semelhante ao SQL.
  • É rápido, familiar, escalável e extensível.

Usos do Hive

  • É o armazenamento distribuído Apache Hive.
  • São fornecidas ferramentas que permitem aos usuários extrair, transformar e carregar dados com facilidade.
  • Uma variedade de formatos de dados são oferecidos para fornecer a estrutura.
  • Os arquivos armazenados no Hadoop Distributed File System (HDFS) podem ser acessados ​​pelo Hive.

Comandos da Colmeia

Os comandos do hive são:

  1. Linguagem de definição de dados (DDL): As tabelas e outros objetos no banco de dados são construídos e modificados por meio desses comandos.
  • CREATE: É usado para criar uma tabela ou banco de dados.
  • SHOW: É usado para mostrar Banco de Dados, Tabela, Propriedades, etc.
  • ALTER: É usado para fazer alterações na tabela existente.
  • DESCRIBE: Descreve as colunas da tabela.
  • TRUNCATE: Usado para truncar e excluir permanentemente as linhas das tabelas.
  • DELETE: Exclui os dados da tabela, mas pode ser restaurado.
  1. Data Manipulation Language (DML): usado para recuperar, armazenar, modificar, excluir, inserir e atualizar dados no banco de dados.
  • Sintaxe para instruções LOAD, INSERT

LOAD dados <LOCAL> no caminho <caminho do arquivo> na tabela [nome da tabela]

  • Após o carregamento dos dados, os comandos de manipulação de dados são usados ​​para recuperar os dados.
  • A função de agregação de contagem é usada para contar o número total de registros em uma tabela.
  • A palavra-chave “create external” é usada para criar uma tabela e fornece um local onde a tabela será criada. Uma tabela EXTERNAL aponta para qualquer local do HDFS para seu armazenamento.
  • Os comandos de inserção são usados ​​para carregar a tabela Hive de dados. O “insert overwrite” é usado para substituir os dados existentes e o “insert into” é usado para anexar os dados em um dado existente.
  • Uma tabela é dividida em partições pelo comando “partitioned by” e dividida em buckets pelo comando “clustered by”.
  • A inserção de dados gera erros, pois a partição dinâmica não está habilitada. Portanto, os parâmetros a seguir devem ser definidos no shell do Hive.

definir hive.exec.dynamic.partition=true;

Para habilitar partições dinâmicas, por padrão, é falso

definir hive.exec.dynamic.partition.mode=nonstrict;

  • O comando 'Drop Table' exclui os dados e metadados de uma tabela
  • Agregação: Sintaxe:

Selecione contagem (categoria DISTINCT) de tablename;

O comando contará diferentes categorias de tabelas 'cate'.

  • Agrupamento: Sintaxe:

Selecione categoria, soma (quantidade) do grupo de registros txt por categoria

O conjunto de resultados será agrupado em uma ou mais colunas.

  • Operação de junção: execute para combinar campos de duas tabelas usando valores comuns a cada coluna.
  • Junção externa esquerda: Para as tabelas A e B, a junção externa esquerda deve conter todos os registros da tabela “esquerda” (A), mesmo que a condição de junção não encontre nenhum registro correspondente na tabela “direita” (B).
  • Right Outer Join: Cada linha da tabela “direita” (B) aparecerá na tabela unida pelo menos uma vez.
  • Junção completa: A tabela unida conterá todos os registros de ambas as tabelas A tabela unida conterá todos os registros de ambas as tabelas.

Arquitetura de colmeia

A arquitetura do apache hive é mostrada na Figura 1 .

Lista dos principais componentes

Os principais componentes da arquitetura de colmeia são:

1. Cliente Hive

Diferentes aplicativos escritos em linguagens como Java, Python, C++, etc. são comunicados através do uso de diferentes drivers fornecidos pelo Hive. Pode ser escrito em qualquer idioma conforme sua escolha. Os Clientes e servidores, por sua vez, comunicam-se com o servidor Hive nos serviços Hive.

Principalmente eles são classificados em três tipos:

  • Thrift Client: É baseado no Apache Thrift para atender a uma solicitação de um cliente Thrift. O cliente Thrift será usado para comunicação para os aplicativos baseados em Thrift.
  • Cliente JDBC: JDBC é fornecido para aplicativos relacionados a Java. Os aplicativos Java são conectados ao Hive usando o driver JDBC. Ele ainda usa o Thrift para se comunicar com o servidor Hive.
  • Cliente ODBC: Os aplicativos baseados no protocolo ODBC podem se conectar ao Hive por meio dos drivers ODBC. Semelhante ao JDBC, ele usa o Thrift para se comunicar com o servidor Hive.

2. Serviços de Colmeia

Os serviços da Hive fornecem meios para as interações da Hive com os Clientes. Quaisquer operações relacionadas com consultas que tenham de ser realizadas pelo Cliente terão de ser comunicadas através dos serviços de Aluguer. Para operações de linguagem de definição de dados (DDL), a CLI atua como o serviço Hive.

Todos os drivers precisam se comunicar com o servidor Hive e depois com o driver principal nos serviços Hive. Os drivers nos serviços do Hive representam o driver principal que se comunica com os aplicativos específicos do Cliente e todos os tipos de JDBC, ODBC, etc. As solicitações de diferentes aplicativos são processadas pelo driver para o metastore e sistemas de campo que serão processados ​​posteriormente.

Os serviços oferecidos pela Hive são:

  • Beeline: O Beeline é um shell de comando onde um usuário pode enviar suas consultas ao sistema. É suportado pelo HiveServer2. É um cliente JDBC baseado em SQLLINE CLI.
  • Hive Server 2: Os clientes têm permissão para executar as consultas no hive. Um sucessor do HiveServer1, permite a execução de várias consultas de vários clientes. Ele fornece o melhor suporte para clientes de API aberta como JDBC e ODBC.
  • Driver Hive: O usuário envia as instruções HiveQL para o driver Hive por meio do shell de comando. Ele envia a consulta ao compilador e cria identificadores de sessão para a consulta.
  • Compilador Hive: O compilador Hive é usado para passar a consulta. Usando os metadados armazenados no metastore, o compilador Hive realiza análise semântica e verificação de tipo nos diferentes blocos e expressões de consulta. Um plano de execução é então gerado pelo compilador que é o DAG (Directed Acyclic Graph). Cada estágio do DAG é uma operação de metadados, operação no HDFS ou é um trabalho de mapeamento/redução.
  • Otimizador: O principal papel do otimizador é realizar operações de transformação no plano de execução. Aumenta a eficiência e a escalabilidade dividindo as tarefas.
  • Execution Engine : Após a conclusão das etapas de compilação e otimização, é o papel do mecanismo de execução que executa o plano de execução criado pelo compilador. O plano é executado usando o Hadoop na ordem de suas dependências.
  • Metastore : Metastore é geralmente um banco de dados relacional que armazena as informações de metadados relacionadas à estrutura das tabelas e partições. É um repositório central que também inclui o armazenamento de informações de colunas e tipos de colunas. As informações relacionadas ao serializador e desserializador também são armazenadas no Metastore, necessárias para operações de leitura/gravação junto com arquivos HDFS que armazenam dados. Uma interface Thrift é fornecida pelo Metastore para consultar e manipular metadados do Hive.

O metastore pode ser configurado em dois modos:

  • Remoto: Este modo é útil para aplicativos não Java e no modo remoto o metastore é um serviço Thrift.
  • Embutido: neste modo, o cliente pode interagir diretamente com o metastore por meio do JDBC.
  • HCatalog: A camada de gerenciamento de tabela e armazenamento do Hadoop é o HCatalog. Diferentes ferramentas de processamento de dados para leitura e gravação de dados na grade estão disponíveis, como Pig, MapReduce, etc. Construído no topo do metastore Hive, os dados tabulares do metastore Hive são expostos a outras ferramentas de processamento de dados.
  • WebHCat: WebHCat é uma interface HTTP e API REST para HCatalog. Ele executa operações de metadados do Hive e oferece um serviço de execução de tarefas Hadoop MapReduce (ou YARN), Pig, Hive.

3. Processamento e Gerenciamento de Recursos

A execução das consultas é realizada por um framework MapReduce interno.

A estrutura MapReduce é uma estrutura de software para processar grandes quantidades de dados em grandes clusters de hardware comum. Os dados são divididos em partes e, em seguida, processados ​​por tarefas de redução de mapa.

4. Armazenamento Distribuído

Os serviços do Hive se comunicam com o armazenamento do Hive para realizar as seguintes ações:

  • O “Meta storage database” do Hive contém as informações de metadados das tabelas criadas no Hive.
  • O cluster do Hadoop no HDFS armazenará os resultados da consulta e os dados carregados nas tabelas.

Diferentes modos de colmeia

Dependendo do tamanho dos dados, o Hive pode operar em dois modos.

  1. Modo local

O modo local do Hive é usado quando

  • O Hadoop instalado possui um nó de dados e é instalado em pseudomodo.
  • O tamanho dos dados de uma única máquina local é menor.
  • Processamento rápido em máquinas locais devido aos conjuntos de dados menores presentes.
  1. Modo de redução de mapa

O modo de redução de mapa do Hive é usado quando

  • O Hadoop tem vários nós de dados com dados distribuídos entre os diferentes nós.
  • O tamanho dos dados é maior e a execução paralela da consulta é necessária.
  • Grandes conjuntos de dados podem ser processados ​​com melhor desempenho.

Características da colmeia

  • Os dados são carregados nas tabelas depois que as tabelas e os bancos de dados são criados.
  • Somente dados estruturados armazenados em tabelas podem ser gerenciados e consultados pelo Hive.
  • O framework Hive possui recursos de otimização e usabilidade ao lidar com os dados estruturados que não estão presentes no Map Reduce.
  • Para facilidade de uso, a linguagem inspirada no Hive SQL é uma abordagem mais simples em comparação com a linguagem de programação complexa do Map Reduce. Conceitos familiares de tabelas, linhas, colunas etc. são usados ​​no Hive.
  • Para aumentar o desempenho das consultas, o Hive pode particionar os dados usando uma estrutura de diretórios.
  • O Hive contém um componente importante chamado “Metastore”, que reside em um banco de dados relacional e armazena informações de esquema. Dois métodos podem ser usados ​​para interagir com o Hive: interface Web GUI e Java Database Connectivity (JDBC).
  • Uma interface de linha de comando (CLI) é usada para a maioria das interações. A CLI é usada para escrever as consultas do Hive usando o Hive Query Language (HQL).
  • A sintaxe HQL é semelhante à sintaxe SQL.
  • Quatro formatos de arquivo são suportados pelo Hive; TEXTFILE, SEQUENCEFILE, ORC e ​​RCFILE (Gravar Arquivo Colunar).

Conclusão

O Apache Hive é uma ferramenta de armazenamento de dados de código aberto que consiste em componentes principais, como clientes Hive, serviços Hive, estrutura de processamento e gerenciamento de recursos e armazenamento distribuído.

Ele é construído sobre o ecossistema Hadoop para o processamento de estruturas e dados semiestruturados. A interface do usuário fornecida pelo Hive permite que o usuário envie suas consultas em Hive Query Language (HQL). Isso é passado para o compilador para gerar um plano de execução. O plano é finalmente executado pelo mecanismo de execução.

Se você estiver interessado em saber mais sobre Big Data, confira nosso programa PG Diploma in Software Development Specialization in Big Data, projetado para profissionais que trabalham e fornece mais de 7 estudos de caso e projetos, abrange 14 linguagens e ferramentas de programação, práticas práticas workshops, mais de 400 horas de aprendizado rigoroso e assistência para colocação de emprego com as principais empresas.

Confira nossos outros Cursos de Engenharia de Software no upGrad.

Lidere a revolução tecnológica orientada a dados

7 ESTUDOS DE CASO E PROJETOS. ASSISTÊNCIA NO TRABALHO COM EMPRESAS SUPERIORES. MENTOR ALUNO DEDICADO.
Programa Avançado de Certificação em Big Data do ITT Bangalore