Выполнение скриптов Python и R с помощью служб машинного обучения в кластерах больших данных SQL ServerRun Python and R scripts with Machine Learning Services on SQL Server Big Data Clusters

Применимо к:Applies to: даSQL Server 2019 (15.x)SQL Server 2019 (15.x)yesSQL Server 2019 (15.x)SQL Server 2019 (15.x)Применимо к:Applies to: даSQL Server 2019 (15.x)SQL Server 2019 (15.x)yesSQL Server 2019 (15.x)SQL Server 2019 (15.x)

Скрипты Python и R можно выполнять в главном экземпляре кластеров больших данных SQL Server с помощью служб машинного обучения.You can run Python and R scripts on the master instance of SQL Server Big Data Clusters with Machine Learning Services.

Примечание

Можно также выполнять код Java в главном экземпляре с помощью расширений языка для SQL Server.You can also run Java code on the master instance with SQL Server Language Extensions. После выполнения описанных ниже действий будут также включены расширения языка.Following the steps below will also enable Language Extensions.

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

Службы машинного обучения устанавливаются в Кластерах больших данных по умолчанию и не требуют отдельной установки.Machine Learning Services is installed by default on Big Data Clusters and does not require separate installation.

Чтобы включить службы машинного обучения, выполните следующую инструкцию в главном экземпляре.To enable Machine Learning Services, run this statement on the master instance:

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

Теперь все готово для выполнения скриптов Python и R в главном экземпляре кластеров больших данных.You are now ready to run Python and R scripts on the master instance of Big Data Clusters. Перед тем как запустить первый скрипт, ознакомьтесь с краткими руководствами в разделе Следующие шаги.See the quickstarts under Next steps to run your first script.

Примечание

Параметр конфигурации не может быть задан для соединения прослушивателя группы доступности.The configuration setting cannot be set on an availability group listener connection. Если кластеры больших данных развертываются с высоким уровнем доступности, установите external scripts enabled на каждой реплике.If Big Data Clusters is deployed with high availability, the set external scripts enabled on each replica. См. раздел Включение кластера с высоким уровнем доступности.See Enable on cluster with high availability.

Включение кластера с высоким уровнем доступностиEnable on cluster with high availability

При развертывании кластера больших данных SQL Server с высоким уровнем доступности развертывание создает группу доступности для главного экземпляра.When you Deploy SQL Server Big Data Cluster with high availability, the deployment creates an availability group for the master instance. Чтобы включить службы машинного обучения, установите external scripts enabled на каждом экземпляре группы доступности.To enable Machine Learning Services, set external scripts enabled on each instance of the availability group. Для кластера больших данных необходимо выполнить sp_configure на каждой реплике главного экземпляра SQL Server.For a Big Data Cluster, you need to run sp_configure on each replica of the SQL Server master instance

В следующем разделе описано, как включить внешние скрипты для каждого экземпляра.The following section describes how to enable external scripts on each instance.

Создание внешнего балансировщика нагрузки для каждого экземпляраCreate an external load balancer for each instance

Для каждой реплики в группе доступности создайте подсистему балансировки нагрузки, которая позволит подключиться к экземпляру.For each replica on the availability group, create a load balancer to allow you to connect to the instance.

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

В примерах этой статьи мы используем следующие значения:The examples in this article use the following values:

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

Обновите следующий сценарий для своей среды и выполните команды:Update the following script for your environment, and run the commands:

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 возвращает следующие выходные данные.kubectl returns the following output.

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

Каждая подсистема балансировки нагрузки является конечной точкой главной реплики.Each load balancer is a master replica endpoint.

Включение выполнения скрипта на каждой репликеEnable script execution on each replica

  1. Получите IP-адрес конечной точки главной реплики.Get the IP address for the master replica endpoint.

    Следующая команда возвращает внешний IP-адрес конечной точки реплики.The following command returns the external IP address for the replica endpoint.

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

    Чтобы получить внешний IP-адрес для каждой реплики в этом сценарии, выполните следующие команды:To get the external IP address for each replica in this scenario, run the following commands:

    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-адрес будет доступен через некоторое время.It may take a little time before the external IP address is available. Периодически запускайте предыдущий скрипт, пока каждая конечная точка не вернет внешний IP-адрес.Run the preceding script periodically until each endpoint returns an external IP address.

  2. Подключитесь к конечной точке главной реплики и разрешите выполнение скрипта.Connect to the master replica endpoint and enable script execution.

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

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

    Например, можно выполнить предыдущую команду с sqlcmd.For example, you can run the preceding command with sqlcmd. В следующем примере показано подключение к конечной точке главной реплики и выполнение скрипта.The following example connects to the master replica endpoint and enables script execution. Замените значения в скрипте значениями для своей среды.Update the values in the script with for your environment.

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

    Повторите этот шаг для каждой реплики.Repeat the step for each replica.

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

Этот процесс показан на следующем рисунке.The following image demonstrates this process.

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

Теперь все готово для выполнения скриптов Python и R в главном экземпляре кластеров больших данных.You are now ready to run Python and R scripts on the master instance of Big Data Clusters. Перед тем как запустить первый скрипт, ознакомьтесь с краткими руководствами в разделе Следующие шаги.See the quickstarts under Next steps to run your first script.

Удаление конечных точек главной репликиDelete the master replica endpoints

В кластере Kubernetes удалите конечную точку для каждой реплики.On the Kubernetes cluster, delete the endpoint for each replica. Конечная точка предоставляется в Kubernetes в качестве службы балансировки нагрузки.The endpoint is exposed in Kubernetes as a load-balancing service.

Следующая команда удаляет службу балансировки нагрузки.The following command deletes load-balancing service.

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

Для примеров в этой статье выполните следующие команды.For the examples in this article, run the following commands.

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

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