Usare azdata distcp per eseguire lo spostamento dati tra cluster Big Data di SQL Server
Si applica a: SQL Server 2019 (15.x)
Importante
Il componente aggiuntivo per i cluster Big Data di Microsoft SQL Server 2019 verrà ritirato. Il supporto per i cluster Big Data di SQL Server 2019 terminerà il 28 febbraio 2025. Tutti gli utenti esistenti di SQL Server 2019 con Software Assurance saranno completamente supportati nella piattaforma e fino a quel momento il software continuerà a ricevere aggiornamenti cumulativi di SQL Server. Per altre informazioni, vedere il post di blog relativo all'annuncio e Opzioni per i Big Data nella piattaforma Microsoft SQL Server.
Questo articolo descrive come usare azdata per eseguire copie di dati distribuite ad alte prestazioni tra cluster Big Data di SQL Server.
Prerequisiti
- Azure Data Studio
- azdata 20.3.8 o versioni successive
- Due cluster Big Data di SQL Server CU13 o versioni successive
Introduzione alle copie di dati distribuite in cluster Big Data di SQL Server
Hadoop HDFS DistCP è uno strumento da riga di comando usato per eseguire copie parallele distribuite di file e cartelle da un cluster HDFS a un altro. La copia parallela distribuita favorisce il trasferimento veloce di file e cartelle a livello di data lake tra due cluster diversi, consentendo migrazioni, la creazione di ambienti segmentati, disponibilità elevata e scenari ripristino di emergenza.
Hadoop HDFS DistCP usa un processo MapReduce interno per espandere un elenco di file e directory nell'input a più attività di mapping, ognuna delle quali copia nella destinazione una partizione dei file specificati nell'elenco di origine. In questo modo, più nodi dati nel cluster di origine possono inviare direttamente dati a più nodi dati nei cluster di destinazione, creando uno scenario di copia parallela veramente distribuita.
Nei cluster Big Data di SQL Server CU13 e versioni successive la funzionalità di copia distribuita è integrata nel prodotto e viene esposta tramite il comando azdata bdc hdfs distcp. Il comando è un'operazione asincrona, che viene restituita immediatamente durante l'esecuzione in background del processo di copia. Monitorare il processo di copia usando azdata
o le interfacce utente di monitoraggio fornite.
Come origini e destinazioni sono supportati solo cluster Big Data di SQL Server.
I cluster possono essere distribuiti sia in modalità abilitata per Active Directory sia nelle modalità di sicurezza di base. È possibile eseguire copie tra qualsiasi combinazione di modalità di sicurezza. I cluster abilitati per Active Directory devono trovarsi nello stesso dominio.
In questa guida verranno presentati gli scenari di copia dei dati seguenti:
- Tra due cluster abilitati per Active Directory
- Da un cluster con sicurezza di base a un cluster abilitato per Active Directory
- Tra due cluster con sicurezza di base
Passaggi necessari per tutti gli scenari
Sono necessari certificati per creare una relazione attendibile tra i cluster di origine e di destinazione. Questi passaggi sono necessari una sola volta per ogni combinazione di cluster di origine e di destinazione.
Importante
Se un cluster Big Data di SQL Server con autenticazione di base (non Active Directory) viene aggiornato direttamente alla versione CU13 o successive, la funzionalità distcp richiede l'attivazione. Questo non influisce sulle nuove distribuzioni di cluster CU13+ con autenticazione di base.
Per abilitare la funzionalità distcp in questo scenario, eseguire i passaggi aggiuntivi seguenti una volta:
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
I notebook necessari nei passaggi successivi fanno parte dei notebook operativi per cluster Big Data di SQL Server. Per altre informazioni su come installare e usare i notebook, vedere Notebook operativi
Passaggio 1 - Creazione e installazione dei certificati
Connettersi al cluster di origine usando Azure Data Studio. È da qui che verranno copiati i dati. Procedi come segue:
Creare un nuovo certificato radice nel cluster di origine usando il notebook
cer001-create-root-ca.ipynb
Scaricare il nuovo certificato radice del cluster nel computer usando
cer002-download-existing-root-ca.ipynb
Installare il nuovo certificato radice nel cluster di origine usando
cer005-install-existing-root-ca.ipynb
. Questo passaggio richiederà 10-15 minuti.Generare un nuovo certificato Knox nel cluster di origine usando
cer021-create-knox-cert.ipynb
Firmare il nuovo certificato Knox con il nuovo certificato radice usando
cer031-sign-knox-generated-cert.ipynb
Generare il nuovo certificato Knox nel cluster di origine usando
cer041-install-knox-cert.ipynb
Importante
I comandi di generazione del certificato creeranno il file CA radice (
cluster-ca-certificate.crt
) e il file del certificato Knox (cacert.pem
) in"C:\Users\{Username}\AppData\Local\Temp\1\mssql-cluster-root-ca\"
in Windows e in"/tmp/mssql-cluster-root-ca/
in Unix.
Passaggio 2 - Installazione del certificato nella destinazione
Connettersi al cluster di destinazione usando Azure Data Studio. È qui che verranno copiati i dati. Procedi come segue:
Avviso
Se si usa Azure Data Studio in computer diversi per eseguire queste attività, copiare i file cluster-ca-certificate.crt
e cacert.pem
generati nel passaggio 1 nella posizione corretta nell'altro computer prima di eseguire il notebook nel passaggio successivo.
- Installare il nuovo certificato radice dal cluster di origine al cluster di destinazione usando
cer005-install-existing-root-ca.ipynb
. Questo passaggio richiederà 10-15 minuti.
Passaggio 3 - Creazione del file keytab
È necessario creare un file keytab se uno dei cluster è abilitato per Active Directory. Il file eseguirà l'autenticazione per consentire l'esecuzione della copia.
Creare il file keytab usando ktutil
. Esempio: Assicurarsi di definire o sostituire le variabili di ambiente DOMAIN_SERVICE_ACCOUNT_USERNAME
, DOMAIN_SERVICE_ACCOUNT_PASSWORD
e REALM
con i valori appropriati.
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
Passaggio 4 - Copiare il keytab nel percorso di HDFS
Questo passaggio è necessario solo se uno dei cluster è abilitato per Active Directory.
Assicurarsi di definire o sostituire la variabile di ambiente DOMAIN_SERVICE_ACCOUNT_USERNAME
con il valore appropriato.
Caricare il keytab nella destinazione (cluster sicuro):
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
Scenari di copia dei dati
Scenario 1 - Tra due cluster abilitati per Active Directory
Esportare la variabile di ambiente
DISTCP_KRB5KEYTAB
necessaria:export DISTCP_KRB5KEYTAB=/user/$DOMAIN_SERVICE_ACCOUNT_USERNAME/$DOMAIN_SERVICE_ACCOUNT_USERNAME.keytab
Definire o sostituire le variabili
CLUSTER_CONTROLLER
,DESTINATION_CLUSTER_NAMESPACE
ePRINCIPAL
con i valori appropriati. Usare quindiazdata
per eseguire l'autenticazione nel cluster di destinazione:azdata login --auth ad --endpoint $CLUSTER_CONTROLLER --namespace $DESTINATION_CLUSTER_NAMESPACE --principal $PRINCIPAL
Eseguire la copia di dati distribuita:
azdata bdc hdfs distcp submit -f https://knox.$CLUSTER_NAME.$DOMAIN:30443/file.txt -t /file.txt
Scenario 2 - Da un cluster con sicurezza di base a un cluster abilitato per Active Directory
Esportare le variabili di ambiente
DISTCP_KRB5KEYTAB
,DISTCP_AZDATA_USERNAME
eDISTCP_AZDATA_PASSWORD
necessarie: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>
Definire o sostituire le variabili
CLUSTER_CONTROLLER
,DESTINATION_CLUSTER_NAMESPACE
ePRINCIPAL
con i valori appropriati. Usare quindiazdata
per eseguire l'autenticazione nel cluster di destinazione:azdata login --auth ad --endpoint $CLUSTER_CONTROLLER --namespace $DESTINATION_CLUSTER_NAMESPACE --principal $PRINCIPAL
Eseguire la copia di dati distribuita
azdata bdc hdfs distcp submit --from-path https://$SOURCE_CLUSTER_IP:30443/file.txt --to-path /file.txt
Scenario 3 - Tra due cluster con sicurezza di base
Esportare le variabili di ambiente
DISTCP_AZDATA_USERNAME
eDISTCP_AZDATA_PASSWORD
necessarie:export DISTCP_AZDATA_USERNAME=<your basic security bdc username> export DISTCP_AZDATA_PASSWORD=<your basic security bdc password>
Usare
azdata
per eseguire l'autenticazione nel cluster di destinazioneEseguire la copia di dati distribuita
azdata bdc hdfs distcp submit --from-path https://$SOURCE_CLUSTER_IP:30443/file.txt --to-path /file.txt
Monitoraggio del processo di copia distribuita
Il comando azdata bdc hdfs distcp submit
è un'operazione asincrona, che viene restituita immediatamente durante l'esecuzione in background del processo di copia. Monitorare il processo di copia usando azdata
o le interfacce utente di monitoraggio fornite.
Elencare tutti i processi di copia distribuita
azdata bdc hdfs distcp list
Prendere nota dell'elemento job-id
del processo di cui si vuole tenere traccia. Tutti gli altri comandi dipendono da questo.
Ottenere lo stato di un processo di copia distribuita
azdata bdc hdfs distcp state [--job-id | -i] <JOB_ID>
Ottenere lo stato completo di un processo di copia distribuita
azdata bdc hdfs distcp status [--job-id | -i] <JOB_ID>
Ottenere i log di un processo di copia distribuita
azdata bdc hdfs distcp log [--job-id | -i] <JOB_ID>
Hint per la copia distribuita
Per copiare intere directory e il loro contenuto, terminare l'argomento del percorso con una directory, senza '/'. L'esempio seguente copia l'intera directory
sourceDirectories
nella destinazione HDFS radice:azdata bdc hdfs distcp submit --from-path https://$SOURCE_CLUSTER_IP:30443/sourceDirectories --to-path /
Il comando può contenere opzioni, supportando i modificatori
--overwrite
,--preserve
,--update
e--delete
. Il modificatore deve essere posizionato subito dopo la parola chiave submit, come mostrato di seguito:azdata bdc hdfs distcp submit {options} --from-path https://$SOURCE_CLUSTER_IP:30443/sourceDirectories --to-path /
Passaggi successivi
Per altre informazioni, vedere Introduzione ai cluster Big Data di SQL Server.
Per informazioni di riferimento complete sul nuovo comando, vedere azdata bdc hdfs distcp.