Uso de azdata distcp para realizar el movimiento de datos entre clústeres de macrodatos de SQL Server

Se aplica a: SQL Server 2019 (15.x)

Importante

El complemento Clústeres de macrodatos de Microsoft SQL Server 2019 se va a retirar. La compatibilidad con Clústeres de macrodatos de SQL Server 2019 finalizará el 28 de febrero de 2025. Todos los usuarios existentes de SQL Server 2019 con Software Assurance serán totalmente compatibles con la plataforma, y el software se seguirá conservando a través de actualizaciones acumulativas de SQL Server hasta ese momento. Para más información, consulte la entrada de blog sobre el anuncio y Opciones de macrodatos en la plataforma Microsoft SQL Server.

En este artículo se explica cómo usar azdata para realizar copias de datos distribuidas de alto rendimiento entre Clústeres de macrodatos de SQL Server.

Requisitos previos

  • Azure Data Studio
  • Versión 20.3.8 o superior de azdata
  • Dos clústeres de macrodatos de SQL Server CU13 o una versión superior

Introducción a las copias de datos distribuidas en clústeres de macrodatos de SQL Server

Hadoop HDFS DistCP es una herramienta de línea de comandos para realizar copias en paralelo distribuidas de archivos y carpetas en un clúster de HDFS a otro. La copia en paralelo distribuida permite la transferencia rápida de archivos y carpetas de escalado de Data Lake entre dos clústeres diferentes, lo que abre la posibilidad de realizar migraciones, crear entornos segmentados, ofrecer alta disponibilidad y usar escenarios de recuperación ante desastres.

Hadoop HDFS DistCP usa un trabajo de MapReduce interno para expandir una lista de archivos y directorios en la entrada de varias tareas de asignación, cada una de las cuales copiará una partición de los archivos especificados en la lista de origen en el destino. Esto permite que varios nodos de datos del clúster de origen envíen datos directamente a varios nodos de datos de los clústeres de destino, lo que crea un escenario de copia en paralelo realmente distribuida.

En Clústeres de macrodatos de SQL Server CU13 y versiones posteriores, la funcionalidad de copia distribuida se integra en el producto y se expone mediante el comando azdata bdc hdfs distcp. El comando es una operación asincrónica, que se devuelve inmediatamente mientras el trabajo de copia se ejecuta en segundo plano. Supervise el trabajo de copia mediante azdata o las interfaces de usuario de supervisión proporcionadas.

Solo se admiten orígenes de datos y destinos de Clústeres de macrodatos de SQL Server.

Los clústeres se pueden implementar en el modo habilitado de Active Directory o en modos de seguridad básicos. Las copias se pueden realizar entre cualquier combinación de modos de seguridad. Para clústeres habilitados para Active Directory, es necesario que estén en el mismo dominio.

En esta guía se tratarán los escenarios de copia de datos siguientes:

  • De un clúster habilitado para Active Directory a otro clúster habilitado para Active Directory
  • De un clúster de seguridad básica a un clúster habilitado para Active Directory
  • De un clúster de seguridad básica a otro clúster de seguridad básica

Pasos necesarios para todos los escenarios

Los certificados son necesarios para crear una relación de confianza entre los clústeres de origen y destino. Estos pasos solo son necesarios una vez por combinación de clúster de origen y destino.

Importante

Si un clúster de macrodatos de SQL Server con autenticación básica (no AD) se actualiza directamente a CU13 o superiores, la funcionalidad distcp requiere activación. (Esto no afecta a las nuevas implementaciones de clúster CU13+ con autenticación básica).

Para habilitar la funcionalidad distcp en este escenario, ejecute una vez estos pasos adicionales:

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

Los cuadernos necesarios en los pasos a continuación forman parte de los cuadernos operativos para Clústeres de macrodatos de SQL Server. Para obtener más información sobre cómo instalar y usar los cuadernos, consulte Cuadernos operativos.

Paso 1: Creación e instalación de certificados

Conéctese al clúster de origen mediante Azure Data Studio. Aquí es desde donde se copiarán los archivos. Lleve a cabo los siguiente pasos:

  1. Cree un certificado raíz de clúster en el clúster de origen con el cuaderno cer001-create-root-ca.ipynb.

  2. Descargue el nuevo certificado raíz del clúster en la máquina con cer002-download-existing-root-ca.ipynb.

  3. Instale el nuevo certificado raíz en el clúster de origen mediante cer005-install-existing-root-ca.ipynb. Este paso le llevará unos 10 o 15 minutos.

  4. Genere un certificado knox en el clúster de origen con cer021-create-knox-cert.ipynb.

  5. Firme con el nuevo certificado knox con el nuevo certificado raíz con cer031-sign-knox-generated-cert.ipynb.

  6. Instale el nuevo certificado knox en el clúster de origen con cer041-install-knox-cert.ipynb

    Importante

    Los comandos de generación de certificados crearán el archivo de CA raíz (cluster-ca-certificate.crt) y el archivo de certificado Knox (cacert.pem) en "C:\Users\{Username}\AppData\Local\Temp\1\mssql-cluster-root-ca\" en Windows y "/tmp/mssql-cluster-root-ca/ en Unix.

Paso 2: Instalación de certificados en el destino

Conéctese al clúster de destino mediante Azure Data Studio. Aquí es a donde se copiarán los archivos. Lleve a cabo los siguiente pasos:

Advertencia

Si usa Azure Data Studio en distintas máquinas para realizar estas tareas, copie los archivos cluster-ca-certificate.crt y cacert.pem generados en el Paso 1 en las ubicaciones adecuadas de la otra máquina antes de ejecutar el cuaderno en el paso siguiente.

  1. Instale el nuevo certificado raíz del clúster de origen en el clúster de destino mediante cer005-install-existing-root-ca.ipynb. Este paso le llevará unos 10 o 15 minutos.

Paso 3: Creación del archivo keytab

Debe crear un archivo keytab si alguno de los clústeres está habilitado para Active Directory. El archivo realizará la autenticación para permitir que se haga la copia.

Cree un archivo keytab con ktutil. A continuación se muestra un ejemplo. Asegúrese de definir o reemplazar las variables de entorno DOMAIN_SERVICE_ACCOUNT_USERNAME, DOMAIN_SERVICE_ACCOUNT_PASSWORD y REALM por los valores adecuados.

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

Paso 4: Copia del archivo keytab en la ubicación de HDFS

Este paso solo es necesario si alguno de los clústeres está habilitado para Active Directory.

Asegúrese de definir o reemplazar las variables de entorno DOMAIN_SERVICE_ACCOUNT_USERNAME por los valores adecuados.

Cargue el archivo keytab en el destino (clúster 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

Escenarios de copia de datos

Escenario 1: De un clúster habilitado para Active Directory a otro clúster habilitado para Active Directory

  1. Exporte la variable de entorno necesaria DISTCP_KRB5KEYTAB:

    export DISTCP_KRB5KEYTAB=/user/$DOMAIN_SERVICE_ACCOUNT_USERNAME/$DOMAIN_SERVICE_ACCOUNT_USERNAME.keytab
    
  2. Defina o reemplace las variables CLUSTER_CONTROLLER, DESTINATION_CLUSTER_NAMESPACE y PRINCIPAL por los valores adecuados. Después, use azdata para autenticarse en el clúster de destino:

    azdata login --auth ad --endpoint $CLUSTER_CONTROLLER --namespace $DESTINATION_CLUSTER_NAMESPACE --principal $PRINCIPAL
    
  3. Ejecute la copia de datos distribuida:

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

Escenario 2: De un clúster de seguridad básica a un clúster habilitado para Active Directory

  1. Exporte las variables de entorno necesarias DISTCP_KRB5KEYTAB, DISTCP_AZDATA_USERNAME y 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 o reemplace las variables CLUSTER_CONTROLLER, DESTINATION_CLUSTER_NAMESPACE y PRINCIPAL por los valores adecuados. Después, use azdata para autenticarse en el clúster de destino:

    azdata login --auth ad --endpoint $CLUSTER_CONTROLLER --namespace $DESTINATION_CLUSTER_NAMESPACE --principal $PRINCIPAL
    
  3. Ejecute la copia de datos distribuida:

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

Escenario 3: De un clúster de seguridad básica a otro clúster de seguridad básica

  1. Exporte las variables de entorno necesarias DISTCP_AZDATA_USERNAME y 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 autenticarse en el clúster de destino:

  3. Ejecute la copia de datos distribuida:

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

Supervisión del trabajo de copia distribuida

El comando azdata bdc hdfs distcp submit es una operación asincrónica, que se devuelve inmediatamente mientras el trabajo de copia se ejecuta en segundo plano. Supervise el trabajo de copia mediante azdata o las interfaces de usuario de supervisión proporcionadas.

Enumeración de todos los trabajos de copia distribuida

azdata bdc hdfs distcp list

Tome nota del parámetro job-id del trabajo del que quiere realizar el seguimiento. Todos los demás comandos dependen de él.

Obtención del estado de un trabajo de copia distribuida

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

Obtención del estado completo de un trabajo de copia distribuida

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

Obtención de los registros de un trabajo de copia distribuida

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

Sugerencias de copia distribuida

  1. Para copiar directorios completos y su contenido, finalice el argumento path con un directorio, sin "/". En el ejemplo siguiente se copia todo el directorio sourceDirectories en el destino raíz de HDFS:

    azdata bdc hdfs distcp submit --from-path https://$SOURCE_CLUSTER_IP:30443/sourceDirectories --to-path /
    
  2. El comando puede contener opciones, como los modificadores --overwrite, --preserve, --update y --delete. El modificador debe colocarse justo después de la palabra clave submit, como se muestra a continuación:

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

Pasos siguientes

Para obtener más información, consulte Presentación de Clústeres de macrodatos de SQL Server.

Para ver una referencia completa del nuevo comando, consulte azdata bdc hdfs distcp.