Partilhar via


Migrar clusters Apache Hadoop locais para o Azure HDInsight - práticas recomendadas de migração de dados

Este artigo fornece recomendações para a migração de dados para o Azure HDInsight. Faz parte de uma série que fornece práticas recomendadas para ajudar na migração de sistemas Apache Hadoop locais para o Azure HDInsight.

Migrar dados locais para o Azure

Há duas opções principais para migrar dados do ambiente local para o Azure:

  • Transfira dados pela rede com TLS

    • Pela Internet - Pode transferir dados para o armazenamento do Azure através de uma ligação normal à Internet utilizando qualquer uma das várias ferramentas, tais como: Azure Storage Explorer, AzCopy, Azure PowerShell e Azure CLI. Para obter mais informações, consulte Movendo dados de e para o Armazenamento do Azure.

    • Rota Expressa - A Rota Expressa é um serviço do Azure que permite criar conexões privadas entre datacenters da Microsoft e a infraestrutura que está em suas instalações ou em um recurso de colocation. As conexões ExpressRoute não passam pela Internet pública e oferecem maior segurança, confiabilidade e velocidades com latências mais baixas do que as conexões típicas pela Internet. Para obter mais informações, consulte Criar e modificar um circuito de Rota Expressa.

    • Transferência de dados online do Data Box - Data Box Edge e Data Box Gateway são produtos de transferência de dados online que atuam como gateways de armazenamento de rede para gerenciar dados entre seu site e o Azure. O Data Box Edge, um dispositivo de rede no local, transfere dados de e para o Azure e utiliza computação edge ativada por inteligência artificial (AI) para processar dados. O Data Box Gateway é uma aplicação virtual com capacidades de gateway de armazenamento. Para obter mais informações, consulte Documentação do Azure Data Box - Transferência Online.

  • Envio de dados Offline

    Transferência de dados offline do Data Box - Os dispositivos Data Box, Data Box Disk e Data Box Heavy ajudam-no a transferir grandes quantidades de dados para o Azure quando a rede não é uma opção. Estes dispositivos de transferência de dados offline são enviados entre a organização e o centro de dados do Azure. Utilizam encriptação AES para ajudar a proteger os dados em trânsito e são submetidos a um processo de limpeza pós-carregamento para eliminar dados do dispositivo. Para obter mais informações sobre os dispositivos de transferência offline do Data Box, consulte Documentação do Azure Data Box - Transferência offline. Para obter mais informações sobre a migração de clusters Hadoop, consulte Usar o Azure Data Box para migrar de um repositório HDFS local para o Armazenamento do Azure.

A tabela a seguir tem a duração aproximada da transferência de dados com base no volume de dados e na largura de banda da rede. Use uma caixa Dados se a migração de dados estiver prevista para levar mais de três semanas.

Qtd de dados Largura de banda da rede
de
45 Mbps (T3)
Largura de banda da rede
de
100 Mbps
Largura de banda da rede
de
1 Gbps
Largura de banda da rede
de
10 Gbps
1 TB 2 dias 1 dia Duas horas 14 minutos
10 TB 22 dias 10 dias 1 dia Duas horas
35 TB 76 dias 34 dias 3 dias 8 horas
80 TB 173 dias 78 dias 8 dias 19 horas
100 TB 216 dias 97 dias 10 dias 1 dia
200 TB 1 ano 194 dias 19 dias 2 dias
500 TB 3 anos 1 ano 49 dias 5 dias
1 PB 6 anos 3 anos 97 dias 10 dias
2 PB 12 anos 5 anos 194 dias 19 dias

Ferramentas nativas do Azure, como Apache Hadoop DistCp, Azure Data Factory e AzureCp, podem ser usadas para transferir dados pela rede. A ferramenta de terceiros WANDisco também pode ser usada para o mesmo fim. O Apache Kafka Mirrormaker e o Apache Sqoop podem ser usados para transferência contínua de dados do local para os sistemas de armazenamento do Azure.

Considerações de desempenho ao usar o Apache Hadoop DistCp

DistCp é um projeto Apache que usa um trabalho MapReduce Map para transferir dados, manipular erros e recuperar desses erros. Ele atribui uma lista de arquivos de origem para cada tarefa de mapa. Em seguida, a tarefa Mapa copia todos os arquivos atribuídos para o destino. Existem várias técnicas que podem melhorar o desempenho do DistCp.

Aumentar o número de Mapeadores

O DistCp tenta criar tarefas de mapa para que cada uma copie aproximadamente o mesmo número de bytes. Por padrão, os trabalhos DistCp usam 20 mapeadores. Usar mais mapeadores para Distcp (com o parâmetro 'm' na linha de comando) aumenta o paralelismo durante o processo de transferência de dados e diminui o comprimento da transferência de dados. No entanto, há duas coisas a considerar ao aumentar o número de mapeadores:

  • A menor granularidade do DistCp é um único arquivo. Especificar um número de mapeadores mais do que o número de arquivos de origem não ajuda e desperdiçará os recursos de cluster disponíveis.

  • Considere a memória Yarn disponível no cluster para determinar o número de mapeadores. Cada tarefa Mapa é iniciada como um contêiner Yarn. Supondo que nenhuma outra carga de trabalho pesada esteja em execução no cluster, o número de mapeadores pode ser determinado pela seguinte fórmula: m = (número de nós de trabalho * memórias YARN para cada nó de trabalho) / tamanho do contêiner YARN. No entanto, se outros aplicativos estiverem usando memória, opte por usar apenas uma parte da memória YARN para trabalhos DistCp.

Usar mais de um trabalho DistCp

Quando o tamanho do conjunto de dados a ser movido for maior que 1 TB, use mais de um trabalho DistCp. O uso de mais de um trabalho limita o impacto de falhas. Se algum trabalho falhar, você só precisará reiniciar esse trabalho específico, em vez de todos os trabalhos.

Considere dividir arquivos

Se houver um pequeno número de arquivos grandes, considere dividi-los em blocos de arquivo de 256 MB para obter mais simultaneidade potencial com mais mapeadores.

Use o parâmetro de linha de comando 'strategy'

Considere o uso strategy = dynamic de parâmetro na linha de comando. O valor padrão do strategy parâmetro é uniform size, caso em que cada mapa copia aproximadamente o mesmo número de bytes. Quando esse parâmetro é alterado para dynamic, o arquivo de listagem é dividido em vários "chunk-files". O número de arquivos de bloco é um múltiplo do número de mapas. A cada tarefa de mapa é atribuído um dos arquivos de bloco. Depois que todos os caminhos em um bloco são processados, o bloco atual é excluído e um novo bloco é adquirido. O processo continua até que não haja mais partes disponíveis. Essa abordagem "dinâmica" permite que tarefas de mapa mais rápidas consumam mais caminhos do que as mais lentas, acelerando assim o trabalho do DistCp em geral.

Aumentar o número de threads

Veja se aumentar o parâmetro melhora o -numListstatusThreads desempenho. Este parâmetro controla o número de threads a serem usados para criar listagem de arquivos e 40 é o valor máximo.

Usar o algoritmo de confirmação de saída

Veja se passar o parâmetro -Dmapreduce.fileoutputcommitter.algorithm.version=2 melhora o desempenho do DistCp. Esse algoritmo de confirmação de saída tem otimizações em torno da gravação de arquivos de saída no destino. O comando a seguir é um exemplo que mostra o uso de diferentes parâmetros:

hadoop distcp -Dmapreduce.fileoutputcommitter.algorithm.version=2 -numListstatusThreads 30 -m 100 -strategy dynamic hdfs://nn1:8020/foo/bar wasb://<container_name>@<storage_account_name>.blob.core.windows.net/foo/

Migração de metadados

Apache Hive

O metastore hive pode ser migrado usando os scripts ou usando a Replicação de Banco de Dados.

Migração do metastore do Hive usando scripts

  1. Gere as DDLs do Hive a partir do metastore local do Hive. Esta etapa pode ser feita usando um script bash wrapper.
  2. Edite o DDL gerado para substituir o URL do HDFS por URLs WASB/ADLS/ABFS.
  3. Execute a DDL atualizada no metastore a partir do cluster HDInsight.
  4. Verifique se a versão do metastore do Hive é compatível entre o local e a nuvem.

Migração de metastore do Hive usando replicação de banco de dados

  • Configure a replicação de banco de dados entre o banco de dados de metastore do Hive local e o banco de dados de metastore do HDInsight.

  • Use a "Hive MetaTool" para substituir a url HDFS por urls WASB/ADLS/ABFS, por exemplo:

    ./hive --service metatool -updateLocation hdfs://nn1:8020/ wasb://<container_name>@<storage_account_name>.blob.core.windows.net/
    

Apache Ranger

  • Exporte políticas de Ranger locais para arquivos xml.
  • Transforme caminhos baseados em HDFS específicos do local para WASB/ADLS usando uma ferramenta como XSLT.
  • Importe as políticas para a Ranger em execução no HDInsight.

Próximos passos

Leia o próximo artigo desta série: