Share via


Alterações significativas de versão no HDInsight 4.0 e vantagens

O Microsoft Azure HDInsight 4.0 tem diversas vantagens sobre o Microsoft Azure HDInsight 3.6. A seguir, é apresentada uma visão geral das novidades no Azure HDInsight 4.0.

# Componente de software de código aberto HDInsight Versão 4.0 HDInsight Versão 3.6
1 Apache Hadoop 3.1.1 2.7.3
2 HBase no Apache 2.1.6 1.1.2
3 Apache Hive 3.1.0 1.2.1, 2.1 (LLAP)
4 Apache Kafka 2.1.1, 2.4(GA) 1,1
5 Apache Phoenix 5 4.7.0
6 Apache Spark 2.4.4, 3.0.0 (Versão prévia) 2.2
7 Apache TEZ 0.9.1 0.7.0
8 Apache ZooKeeper 3.4.6 3.4.6
9 Apache Kafka 2.1.1, 2.4.1 (Versão prévia) 1,1
10 Apache Ranger 1.1.0 0.7.0

Cargas de trabalho e recursos

Hive

  • Recursos avançados
    • Gerenciamento de carga de trabalho LLAP.
    • Suporte de LLAP para conectores JDBC, Druid e Kafka.
    • Melhores recursos do SQL – Restrições e valores padrão.
    • Chaves substitutas
    • Esquema de informações.
  • Vantagem de desempenho
    • Armazenamento em cache dos resultados – O armazenamento em cache dos resultados de consulta permite que um resultado de consulta computado anteriormente seja reutilizado.
    • Exibições materializadas dinâmicas – pré-preenchimento de resumos
    • Melhorias de desempenho do ACID V2 tanto em formato de armazenamento como em mecanismo de execução.
  • Segurança
    • Conformidade com GDPR habilitada em transações do Apache Hive.
    • Autorização de execução de UDF do Hive no intervalo.

HBase

  • Recursos avançados
    • Procedure 2. Procedure V2, ou procv2, é uma estrutura atualizada para executar operações administrativas do HBase de várias etapas.
    • Caminho de leitura/gravação totalmente fora do heap.
    • Compactações em memória.
    • O cluster HBase dá suporte a ADLS Gen2 Premium
  • Vantagem de desempenho
    • As gravações aceleradas usam discos gerenciados do SSD premium do Azure para melhorar o desempenho do log de gravação antecipada do Apache HBase (WAL).
  • Segurança
    • Proteção de ambos os índices secundários, que incluem Local e Global.

Kafka

  • Recursos avançados
    • Distribuição de partição do Kafka em domínios de falha do Azure
    • Suporte de compressão Zstd.
    • Redistribuição incremental do consumidor Kafka.
    • Suporte de MirrorMaker 2.0.
  • Vantagem de desempenho
    • Desempenho de agregação em janela aprimorado no Kafka Streams.
    • Resiliência aprimorada do agente ao reduzir o consumo de memória da conversão de mensagens.
    • Melhorias no protocolo de replicação para failover de líder rápido.
  • Segurança
    • Controle de acesso para criação de tópicos para prefixo de tópico/tópicos específicos.
    • Verificação de nome do host para evitar ataques man-in-the-middle de configuração de SSL.
    • Suporte de criptografia aprimorado com implementação mais rápida de protocolo TLS e CRC32C.

Spark

  • Recursos avançados
    • Suporte de fluxo estruturado para ORC.
    • Capacidade de integração com o novo recurso de Catálogo do Metastore.
    • Suporte de fluxo estruturado para a biblioteca de Streaming do Hive.
    • Gravação transparente no Hive Warehouse.
    • Spark Cruise – Um sistema de reutilização de computação automática para Spark.
  • Vantagem de desempenho
    • Armazenamento em cache dos resultados – O armazenamento em cache dos resultados de consulta permite que um resultado de consulta computado anteriormente seja reutilizado.
    • Exibições materializadas dinâmicas – pré-preenchimento de resumos
  • Segurança
    • Conformidade com GDPR habilitada para transações do Spark.

Descoberta e reparo de partição do Hive

O Hive descobre e sincroniza automaticamente os metadados da partição no Metastore do Hive. A propriedade da tabela discover.partitions habilita e desabilita a sincronização do sistema de arquivos com partições. Em tabelas particionadas externas, essa propriedade é habilitada (true) por padrão. Quando o HMS (Serviço do Metastore do Hive) inicia em modo de serviço remoto, um thread em segundo plano (PartitionManagementTask) é agendado periodicamente a cada 300 s (configurável por meio de metastore.partition.management.task.frequency config) que procura tabelas com a propriedade de tabela discover.partitions definida como verdadeira e executa o reparo de msck em modo de sincronização.

Se a tabela for uma tabela transacional, o Bloqueio Exclusivo será obtido para essa tabela antes de executar msck repair. Com essa propriedade de tabela, não é mais necessário executar MSCK REPAIR TABLE table_name SYNC PARTITIONS manualmente. Supondo que há uma tabela externa criada usando uma versão do Hive que não dá suporte à descoberta de partição, habilite a descoberta de partição para a tabela.

ALTER TABLE exttbl SET TBLPROPERTIES ('discover.partitions' = 'true');

Defina a sincronização de partições para ocorrer a cada 10 minutos expressos em segundos: em Ambari > Hive > Configs, set metastore.partition.management.task.frequency para 3600 ou mais.

 Screenshot showing Ambari Hive config file with frequency value.

Aviso

Com o management.task executando a cada 10 minutos, haverá pressão sobre a DTU do SQL Server.

Você poderá verificar a saída do portal do Microsoft Azure.

Screenshot showing compute utilization graph.

O Hive removerá os metadados e os dados correspondentes em todas as partições criadas após o período de retenção. Você expressa o tempo de retenção usando um número e o caractere ou caracteres a seguir. O Hive removerá os metadados e os dados correspondentes em todas as partições criadas após o período de retenção. Você expressa o tempo de retenção usando um número e os seguintes caracteres.

ms (milliseconds)
s (seconds)
m (minutes)
d (days)

Para configurar um período de retenção de partição por uma semana.

ALTER TABLE employees SET TBLPROPERTIES ('partition.retention.period'='7d');

Os metadados de partição e os dados reais dos funcionários no Hive serão removidos automaticamente após uma semana.

Hive 3

Otimizações de desempenho disponíveis no Hive 3

Redução de semijunção dinâmica de vetorização OLAP do suporte do Parquet para vetorização com cache de consulta automática de LLAP.

Novos recursos do SQL

Restrições de chaves alternativas de exibições materializadas do Metastore CachedStore.

Vetorização OLAP

A vetorização permite que o Hive processe um lote de linhas, em vez de processar uma linha de cada vez. Cada lote geralmente é uma matriz de tipos primitivos. As operações executam em todo o vetor de coluna, o que melhora os pipelines de instrução e o uso de cache. Execução vetorizada de conjuntos de agrupamento, acúmulo e PTF.

Redução Semijoin dinâmica

Melhora drasticamente o desempenho para junções seletivas. Isso cria um filtro de bloom de um lado da junção e filtra as linhas do outro lado. Ignora a verificação e a avaliação adicional de linhas que não qualificariam a junção.

Suporte de Parquet para vetorização com LLAP

A execução de consulta vetorizada é um recurso que reduz bastante o uso da CPU para operações de consulta típicas como:

  • verificações
  • filtros
  • aggregate
  • junções

A vetorização também é implementada para o formato de ORC. O Spark também usa Geração de Código de Estágio Inteiro e essa vetorização (para Parquet) desde o Spark 2.0. Adicionada coluna de carimbo de data/hora para formato e vetorização de Parquet em LLAP.

Aviso

As gravações do Parquet são lentas durante a conversão para fusos horários de do carimbo de data/hora. Para obter mais informações, consulte aqui.

Cache de consulta automática

  1. Com hive.query.results.cache.enabled=true, cada consulta que executa no Hive 3 armazena o resultado em um cache.
  2. Se a tabela de entrada for alterada, o Hive removerá os dados inválidos do cache. Por exemplo, se você executar a agregação e a tabela base for alterada, as consultas executadas com mais frequência permanecerão no cache, mas as consultas obsoletas serão removidas.
  3. O cache de resultados da consulta funciona apenas com tabelas gerenciadas porque o Hive não pode rastrear as alterações em uma tabela externa.
  4. Se você unir tabelas externas e gerenciadas, o Hive voltará a executar a consulta completa. O cache de resultados da consulta funciona com tabelas ACID. Se você atualizar uma tabela ACID, o Hive executará novamente a consulta automaticamente.
  5. É possível habilitar e desabilitar o cache de resultados da consulta na linha de comando. Convém fazer isso para depurar uma consulta.
  6. Desabilite o cache de resultados da consulta definindo o seguinte parâmetro como falso: hive.query.results.cache.enabled=false
  7. O Hive armazena o cache de resultados da consulta em arquivos /tmp/hive/__resultcache__/. Por padrão, o Hive aloca 2 GB para o cache de resultados da consulta. É possível alterar essa configuração configurando o seguinte parâmetro em bytes: hive.query.results.cache.max.size
  8. Alterações no processamento da consulta: durante a compilação da consulta, verifique o cache de resultados para ver se já tem os resultados da consulta. Se houver um acerto de cache, o plano de consulta será definido como um FetchTask que lê do local armazenado em cache.

Durante a execução da consulta:

O Parquet DataWriteableWriter dependerá do NanoTimeUtils para converter um objeto de carimbo de data/hora em um valor binário. Essa consulta chama toString() no objeto de carimbo de data/hora e, em seguida, analisa a Cadeia de Caracteres.

  1. Se o cache de resultados puder ser usado para essa consulta
    1. A consulta está lendo FetchTask do diretório de resultados armazenados em cache.
    2. Nenhuma tarefa de cluster é necessária.
  2. Se o cache de resultados não puder ser usado, execute as tarefas de cluster normalmente
    1. Verifique se os resultados da consulta que foram computados estão qualificados para serem adicionados ao cache de resultados.
    2. Se os resultados puderem ser armazenados em cache, os resultados temporários gerados para a consulta serão salvos no cache de resultados. Talvez seja necessário executar as etapas aqui para garantir que a limpeza da consulta não exclua o diretório de resultados da consulta.

Recursos de SQL

Exibições materializadas

A implementação inicial introduzida no Apache Hive 3.0.0 se concentra na introdução de exibições materializadas e regravação automática de consultas com base nessas materializações no projeto. As exibições materializadas podem ser armazenadas nativamente no Hive ou em outros manipuladores de armazenamento personalizados (ORC) e podem explorar perfeitamente novos recursos interessantes do Hive, como a aceleração LLAP.

Para obter mais informações, consulte Hive − Exibições materializadas − Microsoft Tech Community

Chaves substitutas

Use a UDF (função definida pelo usuário) SURROGATE_KEY interna para gerar automaticamente IDs numéricas para linhas à medida que você insere os dados em uma tabela. As chaves alternativas geradas poderão substituir várias chaves compostas amplas.

O Hive dá suporte às chaves alternativas apenas nas tabelas ACID. A tabela que você quiser unir usando as chaves alternativas não poderá ter tipos de coluna que precisam de conversão. Esses tipos de dados deverão ser primitivos, como INT ou STRING.

Junções usando as chaves geradas são mais rápidas do que as junções usando as cadeias de caracteres. Usar as chaves geradas não forçará os dados em um nó único por um número de linha. É possível gerar as chaves como abstrações de chaves naturais. As chaves alternativas têm uma vantagem sobre os UUIDs, que são mais lentos e probabilísticos.

A SURROGATE_KEY UDF gera uma ID exclusiva para cada linha inserida em uma tabela. Isso gera chaves com base no ambiente de execução em um sistema distribuído, que inclui muitos fatores como:

  1. Estruturas de dados internas.
  2. Estado de uma tabela.
  3. ID da última transação.

A geração de chave alternativa não exige nenhuma coordenação entre tarefas de computação. A UDF não utiliza argumentos, ou dois argumentos são:

  1. Gravar bits de ID
  2. Bits de ID de tarefa

Restrições

Restrições de SQL para impor a integridade dos dados e aprimorar o desempenho. O otimizador usa as informações de restrição para tomar decisões inteligentes. As restrições podem tornar os dados previsíveis e fáceis de localizar.

Restrições Descrição
Verificação Limita o intervalo de valores que você poderá colocar em uma coluna.
PRIMARY KEY Identifica cada linha em uma tabela usando um identificador exclusivo.
FOREIGN KEY Identifica uma linha em outra tabela usando um identificador exclusivo.
UNIQUE KEY Verifica se os valores armazenados em uma coluna são diferentes.
NOT NULL Garante que uma coluna não possa ser definida como NULL.
ENABLE Garante que todos os dados recebidos estão em conformidade com a restrição.
DISABLE Não garante que todos os dados recebidos estão em conformidade com a restrição.
VALIDATEC Verifica se todos os dados existentes na tabela estão em conformidade com a restrição.
NOVALIDATE Não verifica se todos os dados existentes na tabela estão em conformidade com a restrição.
ENFORCED Mapeia para ENABLE NOVALIDATE.
NOT ENFORCED Mapeia para DISABLE NOVALIDATE.
CONFIAR Especifica o cumprimento de uma restrição; usado pelo otimizador para aplicar otimizações adicionais.
NORELY Especifica o não cumprimento de uma restrição.

Para obter mais informações, consulte https://cwiki.apache.org/confluence/display/Hive/Supported+Features%3A++Apache+Hive+3.1.

CachedStore do Metastore

A operação do metastore do Hive demora muito tempo e, portanto, torna a compilação do Hive mais lenta. Em algum caso extremo, leva mais tempo do que o tempo de execução da consulta real. Especialmente, nós descobrimos que a latência do banco de dados em nuvem é alta e 90% do tempo de execução total da consulta é aguardando as operações do banco de dados SQL do metastore. Com base nessa observação, o desempenho da operação metastore será aprimorado se tivermos uma estrutura de memória que armazene em cache o resultado da consulta de banco de dados.

hive.metastore.rawstore.impl=org.apache.hadoop.hive.metastore.cache.CachedStore

 Screenshot showing Hive metastore property file value against 'hive.metastore.rawstore.impl field.

Guia de Solução de Problemas

O guia de solução de problemas do HDInsight 3.6 para 4.0 para cargas de trabalho do Hive fornece respostas para problemas comuns enfrentados ao migrar cargas de trabalho do Hive do HDInsight 3.6 para o HDInsight 4.0.

Referências

Hive 3.1.0

https://docs.cloudera.com/HDPDocuments/HDP3/HDP-3.1.0/hive-overview/content/hive_whats_new_in_this_release_hive.html

HBase 2.1.6

https://apache.googlesource.com/hbase/+/ba26a3e1fd5bda8a84f99111d9471f62bb29ed1d/RELEASENOTES.md

Hadoop 3.1.1

https://hadoop.apache.org/docs/r3.1.1/hadoop-project-dist/hadoop-common/release/3.1.1/RELEASENOTES.3.1.1.html

Leitura adicional