Использование команды 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. С этого кластера будут копироваться файлы. Выполните следующие шаги:
Создайте корневой сертификат кластера с в исходном кластере с помощью записной книжки
cer001-create-root-ca.ipynb
Скачайте новый корневой сертификат кластера на ваш компьютер с помощью
cer002-download-existing-root-ca.ipynb
Установите новый корневой сертификат в исходный кластер, выполнив команду
cer005-install-existing-root-ca.ipynb
. Этот шаг займет 10–15 минут.Создайте сертификат Knox в исходном кластере
cer021-create-knox-cert.ipynb
Подпишите новый сертификат Knox с помощью нового корневого сертификата, выполнив команду
cer031-sign-knox-generated-cert.ipynb
Установите сертификат 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, в соответствующие каталоги на другом компьютере перед запуском записной книжки на следующем шаге.
- Установите новый корневой сертификат из исходного кластера в целевой кластер, выполнив команду
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
Экспортируйте необходимую переменную среды
DISTCP_KRB5KEYTAB
:export DISTCP_KRB5KEYTAB=/user/$DOMAIN_SERVICE_ACCOUNT_USERNAME/$DOMAIN_SERVICE_ACCOUNT_USERNAME.keytab
Определите переменные
CLUSTER_CONTROLLER
,DESTINATION_CLUSTER_NAMESPACE
иPRINCIPAL
или замените их значения на необходимые. Затем выполните командуazdata
для проверки подлинности в целевом кластере:azdata login --auth ad --endpoint $CLUSTER_CONTROLLER --namespace $DESTINATION_CLUSTER_NAMESPACE --principal $PRINCIPAL
Запустите распределенное копирование данных:
azdata bdc hdfs distcp submit -f https://knox.$CLUSTER_NAME.$DOMAIN:30443/file.txt -t /file.txt
Сценарий 2. Из кластера с базовым режимом безопасности в кластер с поддержкой Active Directory
Экспортируйте необходимые переменные среды
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>
Определите переменные
CLUSTER_CONTROLLER
,DESTINATION_CLUSTER_NAMESPACE
иPRINCIPAL
или замените их значения на необходимые. Затем выполните командуazdata
для проверки подлинности в целевом кластере:azdata login --auth ad --endpoint $CLUSTER_CONTROLLER --namespace $DESTINATION_CLUSTER_NAMESPACE --principal $PRINCIPAL
Запустите распределенное копирование данных
azdata bdc hdfs distcp submit --from-path https://$SOURCE_CLUSTER_IP:30443/file.txt --to-path /file.txt
Сценарий 3. Из кластера с базовым режимом безопасности в кластер с базовым режимом безопасности
Экспортируйте необходимые переменные среды
DISTCP_AZDATA_USERNAME
иDISTCP_AZDATA_PASSWORD
:export DISTCP_AZDATA_USERNAME=<your basic security bdc username> export DISTCP_AZDATA_PASSWORD=<your basic security bdc password>
Выполните команду
azdata
для проверки подлинности в целевом кластереЗапустите распределенное копирование данных
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>
Указания по распределенному копированию
Чтобы скопировать все каталоги и их содержимое, укажите аргумент пути, заканчивающийся каталогом без "/". В следующем примере весь каталог
sourceDirectories
копируется в корневой каталог назначения HDFS:azdata bdc hdfs distcp submit --from-path https://$SOURCE_CLUSTER_IP:30443/sourceDirectories --to-path /
Команда может содержать параметры, поддерживающие модификаторы
--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.