Use azdata distcp para executar a movimentação de dados entre clusters de Big Data do SQL Server

Aplica-se a: SQL Server 2019 (15.x)

Importante

O complemento Clusters de Big Data do Microsoft SQL Server 2019 será desativado. O suporte para Clusters de Big Data do SQL Server 2019 será encerrado em 28 de fevereiro de 2025. Todos os usuários existentes do SQL Server 2019 com Software Assurance terão suporte total na plataforma e o software continuará a ser mantido por meio de atualizações cumulativas do SQL Server até esse momento. Para obter mais informações, confira a postagem no blog de anúncio e as opções de Big Data na plataforma do Microsoft SQL Server.

Este artigo explica como usar azdata para executar cópias distribuídas de dados de alto desempenho entre Clusters de Big Data do SQL Server.

Pré-requisitos

Introdução às cópias distribuídas de dados em Clusters de Big Data do SQL Server

O DistCP do Hadoop HDFS é uma ferramenta de linha de comando usada para executar cópias paralelas distribuídas de arquivos e pastas entre clusters HDFS. A cópia paralela distribuída permite a transferência rápida de arquivos e pastas na escala de data lake entre dois clusters, permitindo migrações, a criação de ambientes segmentados, cenários de alta disponibilidade e recuperação de desastre.

O DistCP do Hadoop HDFS usa um trabalho MapReduce interno para expandir uma lista de arquivos e diretórios na entrada para várias tarefas de mapa, cada uma das quais copia uma partição dos arquivos especificados da lista de origem para o destino. Vários nós de dados no cluster de origem podem enviar dados diretamente para vários nós de dados nos clusters de destino, criando um cenário de cópia paralela realmente distribuída.

Nos Clusters de Big Data do SQL Server CU13 e acima, a funcionalidade de cópia distribuída é integrada ao produto e exposta por meio do comando azdata bdc hdfs distcp. O comando é uma operação assíncrona, que retorna imediatamente enquanto o trabalho de cópia é executado em segundo plano. Monitore o trabalho de cópia usando azdata ou as interfaces do usuário de monitoramento incluídas.

Há suporte apenas para fontes e destinos de Clusters de Big Data do SQL Server.

Os clusters podem ser implantados no modo habilitado para Active Directory ou nos modos de segurança básicos. É possível fazer cópias entre qualquer combinação de modos de segurança. Os clusters habilitados para Active Directory precisam estar no mesmo domínio.

Neste guia, veremos os seguintes cenários de cópia de dados:

  • Cluster habilitado para Active Directory para cluster habilitado para Active Directory
  • Cluster de segurança básico para cluster habilitado para Active Directory
  • Cluster de segurança básico para cluster de segurança básico

Etapas necessárias em todos os cenários

Certificados são necessários para criar uma relação de confiança entre os clusters de origem e de destino. Estas etapas são necessárias apenas uma vez para cada combinação de cluster de origem/destino.

Importante

Se um cluster de Big Data do SQL Server com autenticação básica (não AD) é atualizado diretamente para CU13 ou superior, a funcionalidade distcp requer ativação. (Isso não afeta novas implantações de cluster CU13+ com autenticação básica.)

Para habilitar a funcionalidade distcp neste cenário, execute uma vez as seguintes etapas adicionais:

kubectl -n $CLUSTER_NAME exec -it nmnode-0-0 -- bash
export HADOOP_USER_NAME=hdfs
hadoop fs -mkdir -p /tmp/hadoop-yarn/staging/history
hadoop fs -chown yarn /tmp/hadoop-yarn
hadoop fs -chown yarn /tmp/hadoop-yarn/staging
hadoop fs -chown yarn /tmp/hadoop-yarn/staging/history
hadoop fs -chmod 733 /tmp/hadoop-yarn
hadoop fs -chmod 733 /tmp/hadoop-yarn/staging
hadoop fs -chmod 733 /tmp/hadoop-yarn/staging/history

Os notebooks necessários nas próximas etapas fazem parte dos notebooks operacionais dos Clusters de Big Data do SQL Server. Para obter mais informações sobre como instalar e usar os notebooks, confira Notebooks operacionais

Etapa 1 – Criação e instalação de certificados

Conecte-se ao cluster de origem usando o Azure Data Studio. Os arquivos que serão copiados estão nesse cluster. Execute as seguintes etapas:

  1. Crie um certificado raiz no cluster de origem usando o notebook cer001-create-root-ca.ipynb

  2. Baixe o novo certificado raiz do cluster no computador usando cer002-download-existing-root-ca.ipynb

  3. Instale o novo certificado raiz no cluster de origem usando cer005-install-existing-root-ca.ipynb. Esta etapa levará de 10 a 15 minutos.

  4. Gere um novo certificado knox no cluster de origem com cer021-create-knox-cert.ipynb

  5. Assine o novo certificado knox com o novo certificado raiz usando cer031-sign-knox-generated-cert.ipynb

  6. Instale o novo certificado knox no cluster de origem usando cer041-install-knox-cert.ipynb

    Importante

    Os comandos de geração de certificado criam o arquivo de AC raiz (cluster-ca-certificate.crt) e o arquivo de certificado Knox (cacert.pem) em "C:\Users\{Username}\AppData\Local\Temp\1\mssql-cluster-root-ca\" no Windows e em "/tmp/mssql-cluster-root-ca/ no Unix.

Etapa 2 – Instalação do certificado no destino

Conecte-se ao cluster de destino usando o Azure Data Studio. Os arquivos serão copiados nesse cluster. Execute as seguintes etapas:

Aviso

Se você está usando o Azure Data Studio em computadores diferentes para executar estas tarefas, copie os arquivos cluster-ca-certificate.crt e cacert.pem gerados na Etapa 1 para os locais certos no outro computador antes de fazer o notebook na próxima etapa.

  1. Instale o novo certificado raiz do cluster de origem para o cluster de destino usando cer005-install-existing-root-ca.ipynb. Esta etapa levará de 10 a 15 minutos.

Etapa 3 – Criação de arquivo de keytab

Você precisará criar um arquivo de keytab se qualquer um dos clusters estiver habilitado para o Active Directory. O arquivo executa a autenticação para habilitar a cópia.

Crie o arquivo de keytab usando ktutil. Há um exemplo a seguir. Defina ou substitua as variáveis de ambiente DOMAIN_SERVICE_ACCOUNT_USERNAME, DOMAIN_SERVICE_ACCOUNT_PASSWORD e REALM pelos valores corretos.

ktutil
> add_entry -password -p $DOMAIN_SERVICE_ACCOUNT_USERNAME@$REALM -k 1 -e arcfour-hmac-md5
$DOMAIN_SERVICE_ACCOUNT_PASSWORD
> add_entry -password -p $DOMAIN_SERVICE_ACCOUNT_USERNAME@$REALM -k 1 -e aes256-cts
$DOMAIN_SERVICE_ACCOUNT_PASSWORD
> add_entry -password -p $DOMAIN_SERVICE_ACCOUNT_USERNAME@$REALM -k 1 -e aes256-cts-hmac-sha1-96
$DOMAIN_SERVICE_ACCOUNT_PASSWORD
> wkt /tmp/$DOMAIN_SERVICE_ACCOUNT_USERNAME.keytab
> exit

Etapa 4 – Copiar o keytab para o local do HDFS

Esta etapa só será necessária se qualquer um dos clusters estiver habilitado para o Active Directory.

Defina ou substitua a variável de ambiente DOMAIN_SERVICE_ACCOUNT_USERNAME pelo valor correto.

Carregue o keytab no destino (cluster seguro):

azdata bdc hdfs mkdir -p /user/$DOMAIN_SERVICE_ACCOUNT_USERNAME
azdata bdc hdfs cp -f /tmp/$DOMAIN_SERVICE_ACCOUNT_USERNAME.keytab -t /user/$DOMAIN_SERVICE_ACCOUNT_USERNAME/$DOMAIN_SERVICE_ACCOUNT_USERNAME.keytab

Cenários de cópia de dados

Cenário 1 – Cluster habilitado para Active Directory para cluster habilitado para Active Directory

  1. Exporte a variável de ambiente necessária, DISTCP_KRB5KEYTAB:

    export DISTCP_KRB5KEYTAB=/user/$DOMAIN_SERVICE_ACCOUNT_USERNAME/$DOMAIN_SERVICE_ACCOUNT_USERNAME.keytab
    
  2. Defina ou substitua as variáveis CLUSTER_CONTROLLER, DESTINATION_CLUSTER_NAMESPACE e PRINCIPAL pelos valores corretos. Em seguida, use azdata para autenticar-se no cluster de destino:

    azdata login --auth ad --endpoint $CLUSTER_CONTROLLER --namespace $DESTINATION_CLUSTER_NAMESPACE --principal $PRINCIPAL
    
  3. Execute a cópia distribuída de dados:

    azdata bdc hdfs distcp submit -f https://knox.$CLUSTER_NAME.$DOMAIN:30443/file.txt -t  /file.txt
    

Cenário 2 – Cluster de segurança básico para cluster habilitado para Active Directory

  1. Exporte as variáveis de ambiente necessárias, DISTCP_KRB5KEYTAB, DISTCP_AZDATA_USERNAME e DISTCP_AZDATA_PASSWORD:

    export DISTCP_KRB5KEYTAB=/user/$DOMAIN_SERVICE_ACCOUNT_USERNAME/$DOMAIN_SERVICE_ACCOUNT_USERNAME.keytab
    export DISTCP_AZDATA_USERNAME=<your basic security bdc username> 
    export DISTCP_AZDATA_PASSWORD=<your basic security bdc password>
    
  2. Defina ou substitua as variáveis CLUSTER_CONTROLLER, DESTINATION_CLUSTER_NAMESPACE e PRINCIPAL pelos valores corretos. Em seguida, use azdata para autenticar-se no cluster de destino:

    azdata login --auth ad --endpoint $CLUSTER_CONTROLLER --namespace $DESTINATION_CLUSTER_NAMESPACE --principal $PRINCIPAL
    
  3. Execute a cópia distribuída de dados

    azdata bdc hdfs distcp submit --from-path https://$SOURCE_CLUSTER_IP:30443/file.txt --to-path /file.txt
    

Cenário 3 – Cluster de segurança básico para cluster de segurança básico

  1. Exporte as variáveis de ambiente necessárias, DISTCP_AZDATA_USERNAME e DISTCP_AZDATA_PASSWORD:

    export DISTCP_AZDATA_USERNAME=<your basic security bdc username> 
    export DISTCP_AZDATA_PASSWORD=<your basic security bdc password>
    
  2. Use azdata para autenticar-se no cluster de destino

  3. Execute a cópia distribuída de dados

    azdata bdc hdfs distcp submit --from-path https://$SOURCE_CLUSTER_IP:30443/file.txt --to-path /file.txt
    

Monitorar o trabalho de cópia distribuída

O comando azdata bdc hdfs distcp submit é uma operação assíncrona, que retorna imediatamente enquanto o trabalho de cópia é executado em segundo plano. Monitore o trabalho de cópia usando azdata ou as interfaces do usuário de monitoramento incluídas.

Listar todos os trabalhos de cópia distribuída

azdata bdc hdfs distcp list

Anote o job-id do trabalho que você quer acompanhar. Todos os outros comandos dependem desse valor.

Obter o estado de um trabalho de cópia distribuída

azdata bdc hdfs distcp state [--job-id | -i] <JOB_ID>

Obter o status completo de um trabalho de cópia distribuída

azdata bdc hdfs distcp status [--job-id | -i] <JOB_ID>

Obter os registros de um trabalho de cópia distribuída

azdata bdc hdfs distcp log [--job-id | -i] <JOB_ID>

Dicas de cópia distribuída

  1. Para copiar diretórios inteiros e seu conteúdo, termine o argumento de caminho com um diretório, sem o caractere “/”. O seguinte exemplo copia todo o diretório sourceDirectories para o destino HDFS raiz:

    azdata bdc hdfs distcp submit --from-path https://$SOURCE_CLUSTER_IP:30443/sourceDirectories --to-path /
    
  2. O comando pode conter opções, dando suporte para os modificadores --overwrite, --preserve, --update e --delete. Coloque o modificador logo após a palavra-chave submit, como abaixo:

    azdata bdc hdfs distcp submit {options} --from-path https://$SOURCE_CLUSTER_IP:30443/sourceDirectories --to-path /
    

Próximas etapas

Para saber mais, confira Introdução a Clusters de Big Data do SQL Server.

Confira a referência completa do novo comando em azdata bdc hdfs distcp.