Apache Hive vs Apache Impala: principais diferenças

Se você é novo na análise de big data, o host de ferramentas apache pode estar no seu radar; no entanto, a simples quantidade de ferramentas diferentes pode se tornar confusa e, às vezes, esmagadora.

Este post resolverá essa confusão e explicará o que são Apache Hive e Impala e o que os torna diferentes um do outro!

Apache HiveName

Apache Hive é uma interface de acesso a dados SQL para a plataforma Apache Hadoop. O Hive permite consultar, agregar e analisar dados usando a sintaxe SQL.

Um esquema de acesso de leitura é usado para dados no sistema de arquivos HDFS, permitindo que você trate os dados como se fossem uma tabela comum ou um DBMS relacional. As consultas HiveQL são traduzidas em código Java para tarefas MapReduce.

As consultas do Hive são escritas na linguagem de consulta HiveQL, que é baseada na linguagem SQL, mas não tem suporte total para o padrão SQL-92.

No entanto, essa linguagem permite que os programadores usem suas consultas quando for inconveniente ou ineficiente usar os recursos do HiveQL. O HiveQL pode ser estendido com funções escalares definidas pelo usuário (UDFs), agregações (códigos UDAF) e funções de tabela (UDTFs).

Como funciona o Apache Hive

O Apache Hive traduz programas escritos na linguagem HiveQL (próxima ao SQL) em uma ou mais tarefas MapReduce, Apache Tez ou Apache Spark. Esses são três mecanismos de execução que podem ser executados no Hadoop. Em seguida, o Apache Hive organiza os dados em uma matriz para o arquivo Hadoop Distributed File System (HDFS) para executar as tarefas em um cluster para produzir uma resposta.

As tabelas do Apache Hive são semelhantes aos bancos de dados relacionais e as unidades de dados são organizadas da unidade mais significativa para a mais granular. Bancos de dados são matrizes compostas por partições, que podem ser novamente divididas em “baldes”.

Os dados são acessíveis via HiveQL. Dentro de cada banco de dados, os dados são numerados e cada tabela corresponde a um diretório HDFS.

Várias interfaces estão disponíveis na arquitetura Apache Hive, como interface da Web, CLI ou clientes externos.

De fato, o servidor “Apache Hive Thrift” permite que clientes remotos enviem comandos e solicitações ao Apache Hive usando várias linguagens de programação. O diretório central do Apache Hive é um “metastore” contendo todas as informações.

O mecanismo que faz o Hive funcionar é chamado de “o driver”. Ele agrupa um compilador e um otimizador para determinar o plano de execução ideal.

Finalmente, a segurança é fornecida pelo Hadoop. Ele, portanto, depende do Kerberos para autenticação mútua entre o cliente e o servidor. A permissão para arquivos recém-criados no Apache Hive é ditada pelo HDFS, permitindo usuário, grupo ou outra autorização.

Características do Hive

  • Suporta o mecanismo de computação do Hadoop e do Spark
  • Usa HDFS e funciona como um data warehouse.
  • Usa MapReduce e suporta ETL
  • Devido ao HDFS, possui tolerância a falhas semelhante ao Hadoop
  Como baixar vídeos IGTV?

Apache Hive: Benefícios

O Apache Hive é uma solução ideal para consultas e análise de dados. Possibilita a obtenção de insights qualitativos, proporcionando uma vantagem competitiva e facilitando a capacidade de resposta à demanda do mercado.

Entre as principais vantagens do Apache Hive, podemos citar a facilidade de uso ligada à sua linguagem “amigável ao SQL”. Além disso, agiliza a inserção inicial dos dados, pois os dados não precisam ser lidos ou numerados de um disco no formato de banco de dados interno.

Sabendo que os dados são armazenados em HDFS, é possível armazenar grandes conjuntos de dados de até centenas de petabytes de dados no Apache Hive. Esta solução é muito mais escalável do que um banco de dados tradicional. Sabendo que é um serviço em nuvem, o Apache Hive permite que os usuários iniciem servidores virtuais rapidamente com base nas flutuações nas cargas de trabalho (ou seja, tarefas).

A segurança também é um aspecto em que o Hive tem melhor desempenho, com sua capacidade de replicar cargas de trabalho críticas para a recuperação em caso de problema. Por fim, a capacidade de trabalho é incomparável, pois pode realizar até 100.000 solicitações por hora.

Apache Impala

O Apache Impala é um mecanismo de consulta SQL massivamente paralelo para a execução interativa de consultas SQL em dados armazenados no Apache Hadoop, escrito em C++ e distribuído sob a licença Apache 2.0.

O Impala também é chamado de mecanismo MPP (processamento massivamente paralelo), um DBMS distribuído e até mesmo um banco de dados de pilha SQL-on-Hadoop.

O Impala opera em modo distribuído, onde as instâncias do processo são executadas em diferentes nós do cluster, recebendo, agendando e coordenando as solicitações dos clientes. Nesse caso, é possível a execução paralela de fragmentos da consulta SQL.

Clientes são usuários e aplicativos que enviam consultas SQL contra dados armazenados no Apache Hadoop (HBase e HDFS) ou Amazon S3. A interação com o Impala ocorre por meio da interface da Web HUE (Hadoop User Experience), ODBC, JDBC e o shell de linha de comando do Impala Shell.

A Impala depende de infraestrutura de outra ferramenta SQL-on-Hadoop popular, o Apache Hive, usando seu armazenamento de metadados. Em particular, o Hive Metastore permite que a Impala saiba sobre a disponibilidade e estrutura dos bancos de dados.

Ao criar, modificar e excluir objetos de esquema ou carregar dados em tabelas por meio de instruções SQL, as alterações de metadados correspondentes são propagadas automaticamente para todos os nós do Impala usando um serviço de diretório especializado.

Os principais componentes do Impala são os seguintes executáveis:

  • Impalad ou Impala daemon é um serviço de sistema que agenda e executa consultas em dados HDFS, HBase e Amazon S3. Um processo impalad é executado em cada nó do cluster.
  • Statestore é um serviço de nomenclatura que rastreia a localização e o status de todas as instâncias impalad no cluster. Uma instância desse serviço do sistema é executada em cada nó e no servidor principal (Nó de Nome).
  • O Catálogo é um serviço de coordenação de metadados que propaga as alterações das instruções Impala DDL e DML para todos os nós Impala afetados, para que novas tabelas ou dados recém-carregados fiquem imediatamente visíveis para qualquer nó no cluster. Recomenda-se que uma instância do Catálogo esteja em execução no mesmo host de cluster que o daemon Statestored.
  Vale a pena comprar complementos de lente de câmera para smartphones?

Como funciona o Apache Impala

O Impala, como o Apache Hive, usa uma linguagem de consulta declarativa semelhante, Hive Query Language (HiveQL), que é um subconjunto do SQL92, em vez do SQL.

A execução real da solicitação no Impala é a seguinte:

O aplicativo cliente envia uma consulta SQL conectando-se a qualquer impalad por meio de interfaces de driver ODBC ou JDBC padronizadas. O impalad conectado torna-se o coordenador da solicitação atual.

A consulta SQL é analisada para determinar as tarefas para as instâncias impalad no cluster; em seguida, o plano de execução de consulta ideal é construído.

O Impalad acessa diretamente o HDFS e o HBase usando instâncias locais de serviços do sistema para fornecer dados. Ao contrário do Apache Hive, essa interação direta economiza significativamente o tempo de execução da consulta, pois os resultados intermediários não são salvos.

Em resposta, cada daemon retorna dados ao impalad coordenador, enviando os resultados de volta ao cliente.

Características do Impala

  • Suporte para processamento em memória em tempo real
  • compatível com SQL
  • Suporta sistemas de armazenamento como HDFS, Apache HBase e Amazon S3
  • Suporta integração com ferramentas de BI como Pentaho e Tableau
  • Usa a sintaxe HiveQL

Apache Impala: Benefícios

O Impala evita possíveis sobrecargas de inicialização porque todos os processos daemon do sistema são iniciados diretamente no momento da inicialização. Ele economiza significativamente o tempo de execução da consulta. Um aumento adicional na velocidade do Impala é porque esta ferramenta SQL para Hadoop, ao contrário do Hive, não armazena resultados intermediários e acessa diretamente o HDFS ou HBase.

Além disso, o Impala gera o código do programa em tempo de execução e não na compilação, como faz o Hive. No entanto, um efeito colateral do desempenho de alta velocidade do Impala é a confiabilidade reduzida.

Em particular, se o nó de dados cair durante a execução de uma consulta SQL, a instância do Impala será reiniciada e o Hive continuará a manter uma conexão com a fonte de dados, fornecendo tolerância a falhas.

Outros benefícios do Impala incluem suporte integrado para um protocolo de autenticação de rede seguro Kerberos, priorização e capacidade de gerenciar a fila de solicitações e suporte para formatos populares de Big Data, como LZO, Avro, RCFile, Parquet e Sequence.

Hive Vs Impala: Semelhanças

Hive e Impala são distribuídos gratuitamente sob a licença Apache Software Foundation e referem-se a ferramentas SQL para trabalhar com dados armazenados em um cluster Hadoop. Além disso, eles também usam o sistema de arquivos distribuído HDFS.

Impala e Hive implementam diferentes tarefas com foco comum no processamento SQL de big data armazenado em um cluster Apache Hadoop. O Impala fornece uma interface semelhante a SQL, permitindo que você leia e escreva tabelas Hive, facilitando assim a troca de dados.

Ao mesmo tempo, o Impala torna as operações SQL no Hadoop bastante rápidas e eficientes, permitindo o uso deste DBMS em projetos de pesquisa de análise de Big Data. Sempre que possível, a Impala trabalha com uma infraestrutura existente do Apache Hive já usada para executar consultas em lote SQL de longa duração.

Além disso, o Impala armazena suas definições de tabela em um metastore, um banco de dados MySQL ou PostgreSQL tradicional, ou seja, no mesmo local onde o Hive armazena dados semelhantes. Ele permite que o Impala acesse as tabelas do Hive, desde que todas as colunas usem os tipos de dados, formatos de arquivo e codecs de compactação suportados pelo Impala.

  Como discar discretamente um número de emergência do seu iPhone

Hive Vs Impala: Diferenças

Linguagem de programação

O Hive é escrito em Java, enquanto o Impala é escrito em C++. No entanto, o Impala também usa alguns Hive UDFs baseados em Java.

Casos de uso

Os engenheiros de dados usam o Hive em processos ETL (extrair, transformar, carregar), por exemplo, para trabalhos em lote de longa duração em grandes conjuntos de dados, por exemplo, em agregadores de viagens e sistemas de informações de aeroportos. Por sua vez, o Impala destina-se principalmente a analistas e cientistas de dados e é usado principalmente em tarefas como inteligência de negócios.

atuação

O Impala executa consultas SQL em tempo real, enquanto o Hive é caracterizado por baixa velocidade de processamento de dados. Com consultas SQL simples, o Impala pode ser executado de 6 a 69 vezes mais rápido que o Hive. No entanto, o Hive lida melhor com consultas complexas.

Latência/taxa de transferência

O rendimento do Hive é significativamente maior do que o do Impala. O recurso LLAP (Live Long and Process), que permite o cache de consulta na memória, oferece ao Hive um bom desempenho de baixo nível.

LLAP inclui serviços de sistema de longo prazo (daemons), que permitem que você interaja diretamente com nós de dados HDFS e substitua a estrutura de consulta DAG totalmente integrada (gráfico acíclico direcionado) – um modelo de gráfico usado ativamente na computação de Big Data.

Tolerância ao erro

O Hive é um sistema tolerante a falhas que preserva todos os resultados intermediários. Também afeta positivamente a escalabilidade, mas leva a uma diminuição na velocidade de processamento de dados. Por sua vez, o Impala não pode ser chamado de plataforma tolerante a falhas porque é mais limitado pela memória.

conversão de código

O Hive gera expressões de consulta em tempo de compilação, enquanto o Impala as gera em tempo de execução. O Hive é caracterizado por um problema de “inicialização a frio” na primeira vez que o aplicativo é iniciado; as consultas são convertidas lentamente devido à necessidade de estabelecer uma conexão com a fonte de dados.

O Impala não tem esse tipo de sobrecarga de inicialização. Os serviços de sistema necessários (daemons) para processar consultas SQL são iniciados no momento da inicialização, o que acelera o trabalho.

Suporte de armazenamento

O Impala suporta os formatos LZO, Avro e Parquet, enquanto o Hive trabalha com Texto Simples e ORC. No entanto, ambos suportam os formatos RCFIle e Sequence.

Apache HiveApache ImpalaLanguage JavaC++ Use CasesData EngineeringAnálise and analyticsDesempenho alto para consultas simples Comparativamente baixa LatênciaMais latência devido ao armazenamento em cacheMenos latente Tolerância a falhasMais tolerante devido a MapReduceMenos tolerante devido a MPPConversãoLento devido a inicialização a frioConversão mais rápidaSuporte de armazenamentoTexto simples e ORCLZO, Avro, Parquet

Palavras Finais

Hive e Impala não competem, mas se complementam efetivamente. Embora existam diferenças significativas entre os dois, também há muito em comum e a escolha de um em detrimento do outro depende dos dados e requisitos específicos do projeto.

Você também pode explorar comparações diretas entre o Hadoop e o Spark.

.