Использование curl для загрузки данных в HDFS в кластерах больших данных SQL Server

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

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

Important

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

Prerequisites

Получение внешнего IP-адреса службы

WebHDFS запускается при завершении развертывания, и его доступ проходит через Knox. Конечная точка Knox доступна через службу Kubernetes, называемую gateway-svc-external. Чтобы создать необходимый URL-адрес WebHDFS для отправки и скачивания файлов, вам потребуется внешний IP-адрес шлюза svc-external и имя кластера больших данных. Внешний IP-адрес шлюза svc-external service можно получить, выполнив следующую команду:

kubectl get service gateway-svc-external -n <big data cluster name> -o json | jq -r .status.loadBalancer.ingress[0].ip

Note

Ниже <big data cluster name> приведено имя кластера, указанного в файле конфигурации развертывания. Имя по умолчанию имеет значение mssql-cluster.

Создание URL-адреса для доступа к WebHDFS

Теперь можно создать URL-адрес для доступа к WebHDFS следующим образом:

https://<gateway-svc-external service external IP address>:30443/gateway/default/webhdfs/v1/

For example:

https://13.66.190.205:30443/gateway/default/webhdfs/v1/

Проверка подлинности с помощью Active Directory

Для развертываний с Active Directory используйте параметр проверки подлинности curl с использованием механизма проверки подлинности Negotiate.

Чтобы использовать curl с аутентификацией Active Directory, выполните следующую команду:

kinit <username>

Команда создает маркер Kerberos для curl использования. Команды, показанные в следующих разделах, указывают параметр --anyauth для curl. Для URL-адресов, требующих аутентификации по протоколу Negotiate, curl автоматически обнаруживает и использует созданный токен Kerberos вместо имени пользователя и пароля для аутентификации на URL-адресах.

Перечислить файл

Чтобы получить список файлов в hdfs:///product_review_data, используйте следующую команду curl:

curl -i -k --anyauth -u root:<AZDATA_PASSWORD> -X GET 'https://<gateway-svc-external IP external address>:30443/gateway/default/webhdfs/v1/product_review_data/?op=liststatus'

Начиная с SQL Server 2019 (15.x) CU 5, при развертывании нового кластера с базовой проверкой подлинности все конечные точки, включая шлюз, используют AZDATA_USERNAME и AZDATA_PASSWORD. Конечные точки в кластерах, которые обновлены до CU 5, продолжают использовать root в качестве имени пользователя для подключения к конечной точке шлюза. Это изменение не применяется к развертываниям с помощью проверки подлинности Active Directory. См. учетные данные для доступа к службам через конечную точку шлюза в заметках о выпуске.

Для конечных точек, не использующих root, используйте следующую команду curl:

curl -i -k --anyauth -u <AZDATA_USERNAME>:<AZDATA_PASSWORD> -X GET 'https://<gateway-svc-external IP external address>:30443/gateway/default/webhdfs/v1/product_review_data/?op=liststatus'

Поместите локальный файл в HDFS

Чтобы поместить новый файлtest.csvиз локального каталога в каталог product_review_data , используйте следующую команду curl (требуется параметр Content-Type ):

curl -i -L -k --anyauth -u root:<AZDATA_PASSWORD> -X PUT 'https://<gateway-svc-external IP external address>:30443/gateway/default/webhdfs/v1/product_review_data/test.csv?op=create' -H 'Content-Type: application/octet-stream' -T 'test.csv'

Начиная с SQL Server 2019 (15.x) CU 5, при развертывании нового кластера с базовой проверкой подлинности все конечные точки, включая шлюз, используют AZDATA_USERNAME и AZDATA_PASSWORD. Конечные точки в кластерах, которые обновлены до CU 5, продолжают использовать root в качестве имени пользователя для подключения к конечной точке шлюза. Это изменение не применяется к развертываниям с помощью проверки подлинности Active Directory. См. учетные данные для доступа к службам через конечную точку шлюза в заметках о выпуске.

Для конечных точек, не использующих root, используйте следующую команду curl:

curl -i -L -k --anyauth -u <AZDATA_USERNAME>:<AZDATA_PASSWORD> -X PUT 'https://<gateway-svc-external IP external address>:30443/gateway/default/webhdfs/v1/product_review_data/test.csv?op=create' -H 'Content-Type: application/octet-stream' -T 'test.csv'

Создание каталога

Чтобы создать каталог test в hdfs:/// разделе, используйте следующую команду.

curl -i -L -k --anyauth -u root:<AZDATA_PASSWORD> -X PUT 'https://<gateway-svc-external IP external address>:30443/gateway/default/webhdfs/v1/test?op=MKDIRS'

Начиная с SQL Server 2019 (15.x) CU 5, при развертывании нового кластера с базовой проверкой подлинности все конечные точки, включая шлюз, используют AZDATA_USERNAME и AZDATA_PASSWORD. Конечные точки в кластерах, которые обновлены до CU 5, продолжают использовать root в качестве имени пользователя для подключения к конечной точке шлюза. Это изменение не применяется к развертываниям с помощью проверки подлинности Active Directory. См. учетные данные для доступа к службам через конечную точку шлюза в заметках о выпуске.

Для конечных точек, не использующих root, используйте следующую команду curl:

curl -i -L -k --anyauth -u <AZDATA_USERNAME>:<AZDATA_PASSWORD> -X PUT 'https://<gateway-svc-external IP external address>:30443/gateway/default/webhdfs/v1/test?op=MKDIRS'

Next steps

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