SQL Server 2019 のビッグ データ クラスターで Machine Learning Services を使用して Python と R のスクリプトを実行する
適用対象: SQL Server 2019 (15.x)
重要
Microsoft SQL Server 2019 ビッグ データ クラスターのアドオンは廃止されます。 SQL Server 2019 ビッグ データ クラスターのサポートは、2025 年 2 月 28 日に終了します。 ソフトウェア アシュアランス付きの SQL Server 2019 を使用する既存の全ユーザーはプラットフォームで完全にサポートされ、ソフトウェアはその時点まで SQL Server の累積更新プログラムによって引き続きメンテナンスされます。 詳細については、お知らせのブログ記事と「Microsoft SQL Server プラットフォームのビッグ データ オプション」を参照してください。
Machine Learning Services を使用して SQL Server ビッグ データ クラスターのマスター インスタンスで Python や R のスクリプトを実行できます。
注意
また、Java 言語拡張機能を使用して、SQL Server ビッグ データ クラスターのマスター インスタンスで Java コードを実行することもできます。 以下の手順に従うと、SQL Server言語拡張機能も有効になります。
Machine Learning Services を有効にする
Machine Learning Services は、SQL Server 2019 のビッグ データ クラスターに既定でインストールされるため、個別にインストールする必要はありません。
Machine Learning Services を有効にするには、マスター インスタンスで次のステートメントを実行します。
EXEC sp_configure 'external scripts enabled', 1
RECONFIGURE WITH OVERRIDE
GO
ビッグ データ クラスターのマスター インスタンスで、Python および R のスクリプトを実行する準備ができました。 初めてスクリプトを実行する場合は、「次のステップ」の下のクイックスタートを参照してください。
注意
可用性グループ リスナー接続で構成設定を設定することはできません。 ビッグ データ クラスターが高可用性で展開されている場合は、レプリカごとに external scripts enabled
を設定します。 「クラスターで高可用性を有効にする」を参照してください。
クラスターで高可用性を有効にする
高可用性で SQL Server ビッグ データ クラスターを展開すると、その展開によってマスター インスタンスの可用性グループが作成されます。 Machine Learning Services を有効にするには、可用性グループの各インスタンスに external scripts enabled
を設定します。 ビッグ データ クラスターの場合は、SQL Server マスター インスタンスの各レプリカで sp_configure
を実行する必要があります。
次のセクションでは、各インスタンスで外部スクリプトを有効にする方法について説明します。
各インスタンスに対して外部ロード バランサーを作成する
可用性グループの各レプリカに対して、インスタンスへの接続を許可するロード バランサーを作成します。
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
各ロード バランサーは、マスター レプリカのエンドポイントです。
各レプリカでスクリプトの実行を有効にする
マスター レプリカ エンドポイントの 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 アドレスを返すまで、上記のスクリプトを定期的に実行します。
マスター レプリカ エンドポイントに接続し、スクリプトの実行を有効にします。
次のステートメントを実行します。
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;"
レプリカごとにこのステップを繰り返します。
デモンストレーション
次の図は、このプロセスを示しています。
ビッグ データ クラスターのマスター インスタンスで、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