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

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

Важно!

Поддержка надстройки "Кластеры больших данных" Microsoft SQL Server 2019 будет прекращена. Мы прекратим поддержку Кластеров больших данных SQL Server 2019 28 февраля 2025 г. Все существующие пользователи SQL Server 2019 с Software Assurance будут полностью поддерживаться на платформе, а программное обеспечение будет по-прежнему поддерживаться с помощью SQL Server накопительных обновлений до этого времени. Дополнительные сведения см. в записи блога объявлений и в статье о параметрах больших данных на платформе Microsoft SQL Server.

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

Предварительные требования

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

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

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

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

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

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

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

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

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

Обязательные шаги для всех сценариев

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

Важно!

Если кластер больших данных 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

    Важно!

    Команды создания сертификатов создают файл корневого ЦС (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. На этот кластер будут копироваться файлы. Выполните следующие шаги.

Предупреждение

Если вы используете 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 или замените их значения на необходимые.

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

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_CONTROLLER, DESTINATION_CLUSTER_NAMESPACE и PRINCIPAL или замените их значения на необходимые. Затем выполните команду 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_CONTROLLER, DESTINATION_CLUSTER_NAMESPACE и PRINCIPAL или замените их значения на необходимые. Затем выполните команду 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. Модификатор необходимо указать сразу же после ключевого слова submit, как показано ниже:

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

Дальнейшие действия

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

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