Ejecución de scripts de Python y R con Machine Learning Services en clústeres de macrodatos de SQL Server

Se aplica a: SQL Server 2019 (15.x)

Importante

El complemento Clústeres de macrodatos de Microsoft SQL Server 2019 se va a retirar. La compatibilidad con Clústeres de macrodatos de SQL Server 2019 finalizará el 28 de febrero de 2025. Para obtener más información, consulte Opciones de macrodatos en la plataforma Microsoft SQL Server.

Se pueden ejecutar scripts de Python y R en la instancia maestra de clústeres de macrodatos de SQL Server con Machine Learning Services.

Nota

También puede ejecutar código Java en la instancia maestra de Clústeres de macrodatos de SQL Server con la extensión del lenguaje Java. Si sigue los pasos que se indican aquí, también se habilitarán las extensiones de lenguaje de SQL Server.

Habilitar Machine Learning Services

Machine Learning Services se instala de forma predeterminada en clústeres de macrodatos y no precisa de una instalación independiente.

Para habilitar Machine Learning Services, ejecute esta instrucción en la instancia maestra:

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

Ya está listo para ejecutar scripts de Python y R en la instancia maestra de clústeres de macrodatos. Vea las guías de inicio rápido en Pasos siguientes para ejecutar su primer script.

Nota

No se puede establecer el valor de configuración en una conexión del cliente de escucha del grupo de disponibilidad. Si la característica Clústeres de macrodatos se implementa con alta disponibilidad, establezca external scripts enabled en cada réplica. Vea Habilitación en un clúster de alta disponibilidad.

Habilitación en un clúster de alta disponibilidad

Cuando se implementan clústeres de macrodatos de SQL Server con alta disponibilidad, la implementación crea un grupo de disponibilidad para la instancia maestra. Para habilitar Machine Learning Services, establezca external scripts enabled en cada instancia del grupo de disponibilidad. En el caso de un clúster de macrodatos, debe ejecutar sp_configure en cada réplica de la instancia maestra de SQL Server.

En la siguiente sección se describe cómo habilitar los scripts externos en cada instancia.

Creación de un equilibrador de carga externo para cada instancia

Para cada réplica del grupo de disponibilidad, cree un equilibrador de carga que le permita conectarse a la instancia.

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

En los ejemplos de este artículo se utilizan los valores siguientes:

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

Actualice el script siguiente para su entorno y ejecute los comandos:

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 devuelve la salida siguiente.

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

Cada equilibrador de carga es un punto de conexión de la réplica maestra.

Habilitación de la ejecución de scripts en cada réplica

  1. Obtiene la dirección IP del punto de conexión de la réplica maestra.

    El siguiente comando devuelve la dirección IP externa del punto de conexión de la réplica.

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

    Para obtener la dirección IP externa de cada réplica en este escenario, ejecute los siguientes comandos:

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

    Nota

    Es posible que la dirección IP externa tarde un poco en estar disponible. Ejecute el script anterior periódicamente hasta que cada punto de conexión devuelva una dirección IP externa.

  2. Conéctese al punto de conexión de la réplica maestra y habilite la ejecución de scripts.

    Ejecute esta instrucción:

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

    Por ejemplo, puede ejecutar el comando anterior con sqlcmd. En el ejemplo siguiente se conecta al punto de conexión de la réplica maestra y se habilita la ejecución de scripts. Actualice los valores del script para su entorno.

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

    Repita el paso para cada réplica.

Demostración

La imagen siguiente muestra este proceso.

Demostración

Ya está listo para ejecutar scripts de Python y R en la instancia maestra de clústeres de macrodatos. Vea las guías de inicio rápido en Pasos siguientes para ejecutar su primer script.

Eliminación de los puntos de conexión de la réplica maestra

En el clúster de Kubernetes, elimine el punto de conexión para cada réplica. El punto de conexión se expone en Kubernetes como un servicio de equilibrio de carga.

El siguiente comando elimina el servicio de equilibrio de carga.

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

En los ejemplos de este artículo, ejecute los siguientes comandos.

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

Pasos siguientes