Выполнение скриптов Python и R с помощью служб машинного обучения в кластерах больших данных SQL Server

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

Важно!

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

Скрипты Python и R можно выполнять в главном экземпляре кластеров больших данных SQL Server с помощью служб машинного обучения.

Примечание

Вы также можете выполнять код Java в главном экземпляре кластера больших данных SQL Server с помощью расширений языка Java. После выполнения описанных ниже действий будут также включены расширения языка для SQL Server.

Включение служб машинного обучения

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

Чтобы включить службы машинного обучения, выполните следующую инструкцию в главном экземпляре.

EXEC sp_configure 'external scripts enabled', 1
RECONFIGURE WITH OVERRIDE
GO

Теперь все готово для выполнения скриптов Python и R в главном экземпляре кластеров больших данных. Перед тем как запустить первый скрипт, ознакомьтесь с краткими руководствами в разделе Следующие шаги.

Примечание

Параметр конфигурации не может быть задан для соединения прослушивателя группы доступности. Если кластеры больших данных развертываются с высоким уровнем доступности, установите external scripts enabled на каждой реплике. См. раздел Включение кластера с высоким уровнем доступности.

Включение кластера с высоким уровнем доступности

При развертывании кластера больших данных SQL Server с высоким уровнем доступности развертывание создает группу доступности для главного экземпляра. Чтобы включить службы машинного обучения, установите external scripts enabled на каждом экземпляре группы доступности. Для кластера больших данных необходимо выполнить sp_configure на каждой реплике главного экземпляра SQL Server.

В следующем разделе описано, как включить внешние скрипты для каждого экземпляра.

Создание внешнего балансировщика нагрузки для каждого экземпляра

Для каждой реплики в группе доступности создайте подсистему балансировки нагрузки, которая позволит подключиться к экземпляру.

kubectl expose pod <pod-name> --port=<connection port number> --name=<load-balancer-name> --type=LoadBalancer -n <kubernetes namespace>

В примерах этой статьи мы используем следующие значения:

  • <pod-name>: master-#
  • <connection port number>: 1533
  • <load-balancer-name>: mymaster-#
  • <kubernetes namespace>: mssql-cluster

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

kubectl expose pod master-0 --port=1533 --name=mymaster-0 --type=LoadBalancer -n mssql-cluster 
kubectl expose pod master-1 --port=1533 --name=mymaster-1 --type=LoadBalancer -n mssql-cluster
kubectl expose pod master-2 --port=1533 --name=mymaster-2 --type=LoadBalancer -n mssql-cluster 

kubectl возвращает следующие выходные данные.

service/mymaster-0 exposed
service/mymaster-1 exposed
service/mymaster-2 exposed

Каждая подсистема балансировки нагрузки является конечной точкой главной реплики.

Включение выполнения скрипта на каждой реплике

  1. Получите IP-адрес конечной точки главной реплики.

    Следующая команда возвращает внешний IP-адрес конечной точки реплики.

    kubectl get services <load-balancer-name> -n <kubernetes namespace>

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

    kubectl get services mymaster-0 -n mssql-cluster
    kubectl get services mymaster-1 -n mssql-cluster
    kubectl get services mymaster-2 -n mssql-cluster
    

    Примечание

    Внешний IP-адрес будет доступен через некоторое время. Периодически запускайте предыдущий скрипт, пока каждая конечная точка не вернет внешний IP-адрес.

  2. Подключитесь к конечной точке главной реплики и разрешите выполнение скрипта.

    Выполните приведенную ниже инструкцию.

    EXEC sp_configure 'external scripts enabled', 1
    RECONFIGURE WITH OVERRIDE
    GO
    

    Например, можно выполнить предыдущую команду с sqlcmd. В следующем примере показано подключение к конечной точке главной реплики и выполнение скрипта. Замените значения в скрипте значениями для своей среды.

    sqlcmd -S <IP address>,1533 -U <user name> -P <password> -Q "EXEC sp_configure 'external scripts enabled', 1; RECONFIGURE WITH OVERRIDE;"
    

    Повторите этот шаг для каждой реплики.

Демонстрация

Этот процесс показан на следующем рисунке.

Demo

Теперь все готово для выполнения скриптов Python и R в главном экземпляре кластеров больших данных. Перед тем как запустить первый скрипт, ознакомьтесь с краткими руководствами в разделе Следующие шаги.

Удаление конечных точек главной реплики

В кластере Kubernetes удалите конечную точку для каждой реплики. Конечная точка предоставляется в Kubernetes в качестве службы балансировки нагрузки.

Следующая команда удаляет службу балансировки нагрузки.

kubectl delete svc <load-balancer-name> -n mssql-cluster

Для примеров в этой статье выполните следующие команды.

kubectl delete svc mymaster-0 -n mssql-cluster
kubectl delete svc mymaster-1 -n mssql-cluster
kubectl delete svc mymaster-2 -n mssql-cluster

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