Использование azdata distcp для перемещения данных между кластерами больших данных SQL Server

Область применения: SQL Server 2019 (15.x)

Important

Кластеры больших данных Microsoft SQL Server 2019 прекращены. Поддержка кластеров больших данных SQL Server 2019 закончилась с 28 февраля 2025 г. Дополнительные сведения см. в записи блога объявлений и параметрах больших данных на платформе Microsoft SQL Server.

В этой статье объясняется, как использовать azdata для выполнения высокопроизводительных распределенных копий данных между кластерами больших данных SQL Server.

Prerequisites

  • Azure Data Studio
  • azdata версии 20.3.8 или выше
  • Два кластера обработки больших данных SQL Server с накопительным пакетом обновления версии CU13 или более высокой.

Общие сведения о распределенных копиях данных в кластерах больших данных SQL Server

DistCP Hadoop HDFS — это средство командной строки, используемое для выполнения распределенных параллельных копий файлов и папок из одного кластера HDFS в другой. Распределенное параллельное копирование позволяет быстро передавать файлы и папки масштаба Data Lake между двумя разными кластерами, что обеспечивает возможности миграции, создание сегментированных сред, высокую доступность и сценарии аварийного восстановления.

DistCP Hadoop HDFS использует внутреннюю задачу MapReduce для преобразования списка файлов и каталогов в входные данные для нескольких задач отображения, каждая из которых будет копировать раздел файлов, указанных в исходном списке, в место назначения. Это позволяет нескольким узлам данных в исходном кластере отправлять данные непосредственно в несколько узлов данных в целевых кластерах, создавая сценарий действительно распределенного параллельного копирования.

В кластерах больших данных SQL Server CU13 и более поздних версий функция распределенного копирования интегрирована в продукт и предоставляется с помощью команды azdata bdc hdfs distcp . Команда является асинхронной операцией, она возвращается немедленно, пока задание копирования выполняется в фоновом режиме. Отслеживайте задание копирования с помощью либо azdata, либо предоставленных пользовательских интерфейсов мониторинга.

Поддерживаются только источники и назначения кластеров больших данных SQL Server.

Кластеры могут развертываться как в режиме active Directory, так и в базовых режимах безопасности. Копии могут выполняться в любом сочетании режимов безопасности. Для кластеров с поддержкой Active Directory необходимо, чтобы они были в одном домене.

В этом руководстве мы рассмотрим следующие сценарии копирования данных:

  • Кластер с поддержкой Active Directory к кластеру с поддержкой Active Directory
  • Базовый кластер безопасности для кластера с поддержкой Active Directory
  • Базовый кластер безопасности к базовому кластеру безопасности

Необходимые шаги для всех сценариев

Сертификаты необходимы для создания доверенной связи между исходными и целевыми кластерами. Эти действия требуются только один раз для каждого сочетания исходного и целевого кластера.

Important

Если кластер больших данных SQL Server с базовой проверкой подлинности (не AD) обновляется непосредственно до CU13 или более поздней версии, для функции distcp требуется активация. (Это не влияет на новые развертывания кластера CU13+ с базовой проверкой подлинности.)

Чтобы включить функцию distcp в этом сценарии, выполните следующие дополнительные действия один раз:

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

Необходимые записные книжки в следующих шагах являются частью операционных записных книжек для кластеров больших данных SQL Server. Дополнительные сведения об установке и использовании записных книжек см. в разделе "Операционные записные книжки"

Шаг 1. Создание и установка сертификата

Подключитесь к исходному кластеру с помощью Azure Data Studio. Отсюда будут скопированы файлы. Выполните следующие действия.

  1. Создание корневого сертификата кластера в исходном кластере с помощью записной книжки cer001-create-root-ca.ipynb

  2. Скачивание нового корневого сертификата кластера на компьютер с помощью cer002-download-existing-root-ca.ipynb

  3. Установите новый корневой сертификат в исходный кластер с помощью cer005-install-existing-root-ca.ipynb. Этот шаг займет 10–15 минут.

  4. Создание нового сертификата knox в исходном кластере cer021-create-knox-cert.ipynb

  5. Подпишите с помощью нового сертификата Knox с новым корневым сертификатом cer031-sign-knox-generated-cert.ipynb

  6. Установка нового сертификата knox в исходном кластере с помощью cer041-install-knox-cert.ipynb

    Important

    Команды генерации сертификатов создадут корневой файл ЦС (cluster-ca-certificate.crt) и файл сертификата Knox (cacert.pem) в каталоге "C:\Users\{Username}\AppData\Local\Temp\1\mssql-cluster-root-ca\" на Windows и "/tmp/mssql-cluster-root-ca/ на Unix.

Шаг 2. Установка сертификата в целевой системе

Подключитесь к целевому кластеру с помощью Azure Data Studio. Здесь будут скопированы файлы. Выполните следующие действия.

Warning

Если вы используете Azure Data Studio на разных компьютерах для выполнения этих задач, скопируйте cluster-ca-certificate.crt и cacert.pem файлы, созданные на шаге 1, в нужные расположения на другом компьютере перед запуском записной книжки на следующем шаге.

  1. Установите новый корневой сертификат из исходного кластера в целевой кластер с помощью cer005-install-existing-root-ca.ipynb. Этот шаг займет 10–15 минут.

Шаг 3. Создание файла Keytab

Необходимо создать файл keytab, если любой из кластеров поддерживает Active Directory. Файл выполнит проверку подлинности, чтобы разрешить копирование.

Создайте файл keytab с помощью ktutil. Ниже приведен пример. Обязательно определите или замените переменные среды DOMAIN_SERVICE_ACCOUNT_USERNAME, DOMAIN_SERVICE_ACCOUNT_PASSWORD и REALM соответствующими значениями.

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

Шаг 4. Скопируйте keytab в место расположения HDFS

Этот шаг требуется только в том случае, если включено любое из кластеров Active Directory.

Обязательно определите или замените переменные DOMAIN_SERVICE_ACCOUNT_USERNAME среды соответствующим значением.

Отправьте ключ в место назначения (безопасный кластер):

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

Сценарии копирования данных

Сценарий 1. Кластер с поддержкой Active Directory в кластер с поддержкой Active Directory

  1. Экспорт требуемой переменной DISTCP_KRB5KEYTABсреды:

    export DISTCP_KRB5KEYTAB=/user/$DOMAIN_SERVICE_ACCOUNT_USERNAME/$DOMAIN_SERVICE_ACCOUNT_USERNAME.keytab
    
  2. Определите или замените CLUSTER_CONTROLLERDESTINATION_CLUSTER_NAMESPACEPRINCIPAL переменные соответствующими значениями. Затем используйте azdata для проверки подлинности в целевом кластере:

    azdata login --auth ad --endpoint $CLUSTER_CONTROLLER --namespace $DESTINATION_CLUSTER_NAMESPACE --principal $PRINCIPAL
    
  3. Запустите распределенную копию данных:

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

Сценарий 2. Базовый кластер безопасности для кластера с поддержкой Active Directory

  1. Экспорт требуемых переменных среды DISTCP_KRB5KEYTAB, DISTCP_AZDATA_USERNAME и 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. Определите или замените CLUSTER_CONTROLLERDESTINATION_CLUSTER_NAMESPACEPRINCIPAL переменные соответствующими значениями. Затем используйте azdata для проверки подлинности в целевом кластере:

    azdata login --auth ad --endpoint $CLUSTER_CONTROLLER --namespace $DESTINATION_CLUSTER_NAMESPACE --principal $PRINCIPAL
    
  3. Запуск распределенной копии данных

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

Сценарий 3 - Кластер базовой безопасности к кластеру базовой безопасности

  1. Экспорт требуемой переменной DISTCP_AZDATA_USERNAME среды и DISTCP_AZDATA_PASSWORD:

    export DISTCP_AZDATA_USERNAME=<your basic security bdc username> 
    export DISTCP_AZDATA_PASSWORD=<your basic security bdc password>
    
  2. Используйте azdata для проверки подлинности в целевом кластере

  3. Запуск распределенной копии данных

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

Мониторинг задания распределенного копирования

Команда azdata bdc hdfs distcp submit является асинхронной операцией, она возвращается сразу же, пока задание копирования выполняется в фоновом режиме. Отслеживайте задание копирования с помощью либо azdata, либо предоставленных пользовательских интерфейсов мониторинга.

Перечисление всех заданий распределенного копирования

azdata bdc hdfs distcp list

Обратите внимание на job-id тип работы, который необходимо отслеживать. Все остальные команды зависят от него.

Получение состояния распределенной задачи копирования

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

Получение полного состояния задания распределенного копирования

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

Получите журналы задания распределенного копирования

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

Подсказки для распределенного копирования

  1. Чтобы скопировать все каталоги и их содержимое, завершите аргумент пути каталогом без "/". В следующем примере копируется каталог sourceDirectories в корневую директорию HDFS.

    azdata bdc hdfs distcp submit --from-path https://$SOURCE_CLUSTER_IP:30443/sourceDirectories --to-path /
    
  2. Команда может содержать опции, поддерживающие модификаторы --overwrite, --preserve, --update и --delete. Модификатор должен быть помещен сразу после ключевого слова отправки, как показано ниже:

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

Next steps

Дополнительные сведения см. в разделе "Общие сведения о кластерах больших данных SQL Server".

Полный справочник по новой команде см. в статье azdata bdc hdfs distcp.