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
- Azure Data Studio
- azdata versão 20.3.8 ou superior
- Dois clusters de Big Data da CU13 do SQL Server ou superior
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:
Crie um certificado raiz no cluster de origem usando o notebook
cer001-create-root-ca.ipynb
Baixe o novo certificado raiz do cluster no computador usando
cer002-download-existing-root-ca.ipynb
Instale o novo certificado raiz no cluster de origem usando
cer005-install-existing-root-ca.ipynb
. Esta etapa levará de 10 a 15 minutos.Gere um novo certificado knox no cluster de origem com
cer021-create-knox-cert.ipynb
Assine o novo certificado knox com o novo certificado raiz usando
cer031-sign-knox-generated-cert.ipynb
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.
- 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
Exporte a variável de ambiente necessária,
DISTCP_KRB5KEYTAB
:export DISTCP_KRB5KEYTAB=/user/$DOMAIN_SERVICE_ACCOUNT_USERNAME/$DOMAIN_SERVICE_ACCOUNT_USERNAME.keytab
Defina ou substitua as variáveis
CLUSTER_CONTROLLER
,DESTINATION_CLUSTER_NAMESPACE
ePRINCIPAL
pelos valores corretos. Em seguida, useazdata
para autenticar-se no cluster de destino:azdata login --auth ad --endpoint $CLUSTER_CONTROLLER --namespace $DESTINATION_CLUSTER_NAMESPACE --principal $PRINCIPAL
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
Exporte as variáveis de ambiente necessárias,
DISTCP_KRB5KEYTAB
,DISTCP_AZDATA_USERNAME
eDISTCP_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>
Defina ou substitua as variáveis
CLUSTER_CONTROLLER
,DESTINATION_CLUSTER_NAMESPACE
ePRINCIPAL
pelos valores corretos. Em seguida, useazdata
para autenticar-se no cluster de destino:azdata login --auth ad --endpoint $CLUSTER_CONTROLLER --namespace $DESTINATION_CLUSTER_NAMESPACE --principal $PRINCIPAL
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
Exporte as variáveis de ambiente necessárias,
DISTCP_AZDATA_USERNAME
eDISTCP_AZDATA_PASSWORD
:export DISTCP_AZDATA_USERNAME=<your basic security bdc username> export DISTCP_AZDATA_PASSWORD=<your basic security bdc password>
Use
azdata
para autenticar-se no cluster de destinoExecute 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
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 /
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.