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
- Gere as DDLs do Hive a partir do metastore local do Hive. Esta etapa pode ser feita usando um script bash wrapper.
- Edite o DDL gerado para substituir o URL do HDFS por URLs WASB/ADLS/ABFS.
- Execute a DDL atualizada no metastore a partir do cluster HDInsight.
- 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: