Puesta en funcionamiento de clústeres de ML Services en Azure HDInsightOperationalize ML Services cluster on Azure HDInsight

Después de haber usado el clúster de ML Services en HDInsight para completar el modelado de datos, puede usar el modelo para realizar predicciones.After you have used ML Services cluster in HDInsight to complete your data modeling, you can operationalize the model to make predictions. En este artículo se ofrecen instrucciones sobre realizar esta tarea.This article provides instructions on how to perform this task.

Requisitos previosPrerequisites

Poner en funcionamiento el clúster de ML Services con la configuración de un solo equipoOperationalize ML Services cluster with one-box configuration

Nota

Los pasos siguientes se pueden aplicar a R Server 9.0 y ML Server 9.1.The steps below are applicable to R Server 9.0 and ML Server 9.1. Para ML Server 9.3, consulte Use the administration tool to manage the operationalization configuration (Usar la herramienta de administración para administrar la configuración de puesta en marcha).For ML Server 9.3, refer to Use the administration tool to manage the operationalization configuration.

  1. Uso de SSH en el nodo perimetral.SSH into the edge node.

     ssh USERNAME@CLUSTERNAME-ed-ssh.azurehdinsight.net
    

    Para obtener instrucciones sobre cómo utilizar SSH con Azure HDInsight, consulte Uso de SSH con HDInsight.For instructions on how to use SSH with Azure HDInsight, see Use SSH with HDInsight..

  2. Cambie el directorio para la versión pertinente y use sudo en el archivo DLL de dotnet:Change directory for the relevant version and sudo the dot net dll:

    • Para Microsoft ML Server 9.1:For Microsoft ML Server 9.1:

        cd /usr/lib64/microsoft-r/rserver/o16n/9.1.0
        sudo dotnet Microsoft.RServer.Utils.AdminUtil/Microsoft.RServer.Utils.AdminUtil.dll
      
    • Para Microsoft R Server 9.0:For Microsoft R Server 9.0:

        cd /usr/lib64/microsoft-deployr/9.0.1
        sudo dotnet Microsoft.DeployR.Utils.AdminUtil/Microsoft.DeployR.Utils.AdminUtil.dll
      
  3. Se muestran las diferentes opciones que tiene.You are presented with the options to choose from. Elija la primera opción, tal como se muestra en la siguiente captura de pantalla, con el fin de configurar ML Server para la puesta en marcha.Choose the first option, as shown in the following screenshot, to Configure ML Server for Operationalization.

    operacionalización one box

  4. Ahora verá la opción para elegir cómo desea poner en marcha ML Server.You are now presented with the option to choose how you want to operationalize ML Server. Entre las opciones, elija la primera de ellas escribiendo A.From the presented options, choose the first one by entering A.

    operacionalización one box

  5. Cuando se le solicite, escriba dos veces la contraseña de un usuario administrador local.When prompted, enter and reenter the password for a local admin user.

  6. Debería ver resultados que indican que la operación se realizó correctamente.You should see outputs suggesting that the operation was successful. También se le pedirá que seleccione otra opción del menú.You are also prompted to select another option from the menu. Seleccione E para volver al menú principal.Select E to go back to the main menu.

    operacionalización one box

  7. Como paso opcional, puede realizar comprobaciones de diagnóstico mediante la ejecución de una prueba de diagnóstico tal y como se muestra a continuación:Optionally, you can perform diagnostic checks by running a diagnostic test as follows:

    a.a. En el menú principal, seleccione 6 para ejecutar pruebas de diagnóstico.From the main menu, select 6 to run diagnostic tests.

    operacionalización one box

    b.b. En el menú de pruebas de diagnóstico, seleccione A. Cuando se le solicite, escriba la contraseña que ha proporcionado para el usuario administrador local.From the Diagnostic Tests menu, select A. When prompted, enter the password that you provided for the local admin user.

    operacionalización one box

    c.c. Compruebe que el resultado muestra que el estado general es Pass (Aprobado).Verify that the output shows that overall health is a pass.

    operacionalización one box

    d.d. En las opciones de menú que se muestran, escriba E para volver al menú principal y, luego, escriba 8 para salir de la utilidad de administración.From the menu options presented, enter E to return to the main menu and then enter 8 to exit the admin utility.

Retrasos prolongados al consumir el servicio web en Apache SparkLong delays when consuming web service on Apache Spark

Si se producen retrasos prolongados al intentar consumir un servicio web creado con funciones de mrsdeploy en un contexto de proceso de Apache Spark, puede que necesite agregar algunas carpetas que falten.If you encounter long delays when trying to consume a web service created with mrsdeploy functions in an Apache Spark compute context, you may need to add some missing folders. La aplicación de Spark pertenece a un usuario llamado "rserve2" cada vez que se invoque desde un servicio web mediante las funciones de mrsdeploy.The Spark application belongs to a user called 'rserve2' whenever it is invoked from a web service using mrsdeploy functions. Para evitar este problema:To work around this issue:

# Create these required folders for user 'rserve2' in local and hdfs:

hadoop fs -mkdir /user/RevoShare/rserve2
hadoop fs -chmod 777 /user/RevoShare/rserve2

mkdir /var/RevoShare/rserve2
chmod 777 /var/RevoShare/rserve2


# Next, create a new Spark compute context:

rxSparkConnect(reset = TRUE)

En esta fase, la configuración de la puesta en operación está completa.At this stage, the configuration for operationalization is complete. Ahora puede usar el paquete mrsdeploy en RClient para conectarse a la operacionalización en el nodo perimetral y empezar a usar sus características, como la ejecución remota y los servicios web.Now you can use the mrsdeploy package on your RClient to connect to the operationalization on edge node and start using its features like remote execution and web-services. Dependiendo de si el clúster se configura en una red virtual o no, puede que necesite configurar la tunelización de reenvío del puerto mediante el inicio de sesión SSH.Depending on whether your cluster is set up on a virtual network or not, you may need to set up port forward tunneling through SSH login. En las secciones siguientes se explica cómo configurar este túnel.The following sections explain how to set up this tunnel.

Clúster de ML Services en una red virtualML Services cluster on virtual network

Asegúrese de que permite que el tráfico pase a través del puerto 12800 al nodo perimetral.Make sure you allow traffic through port 12800 to the edge node. De esa forma, puede usar el nodo perimetral para conectarse a la característica de operacionalización.That way, you can use the edge node to connect to the Operationalization feature.

library(mrsdeploy)

remoteLogin(
    deployr_endpoint = "http://[your-cluster-name]-ed-ssh.azurehdinsight.net:12800",
    username = "admin",
    password = "xxxxxxx"
)

Si remoteLogin() no se puede conectarse al nodo perimetral, pero se posible usar SSH en dicho nodo, tendrá que comprobar si se ha configurado correctamente la regla para permitir el tráfico en el puerto 12800.If the remoteLogin() cannot connect to the edge node, but you can SSH to the edge node, then you need to verify whether the rule to allow traffic on port 12800 has been set properly or not. Si el problema no desaparece, puede solucionarlo mediante la configuración de la tunelización de reenvío del puerto a través de SSH.If you continue to face the issue, you can work around it by setting up port forward tunneling through SSH. Para obtener instrucciones, consulte la siguiente sección:For instructions, see the following section:

El clúster de ML Services no se configura en una red virtualML Services cluster not set up on virtual network

Si el clúster no está configurado en la red virtual o si tiene problemas con la conectividad a través de la red virtual, puede utilizar la tunelización de reenvío del puerto de SSH:If your cluster is not set up on vnet or if you are having troubles with connectivity through vnet, you can use SSH port forward tunneling:

ssh -L localhost:12800:localhost:12800 USERNAME@CLUSTERNAME-ed-ssh.azurehdinsight.net

Cuando la sesión SSH esté activa, el tráfico del puerto 12800 de la máquina local se reenviará al puerto 12800 del nodo perimetral mediante la sesión de SSH.Once your SSH session is active, the traffic from your local machine's port 12800 is forwarded to the edge node's port 12800 through SSH session. Asegúrese de utilizar 127.0.0.1:12800 en el método remoteLogin().Make sure you use 127.0.0.1:12800 in your remoteLogin() method. Con esta acción, se iniciará sesión en la operacionalización del nodo perimetral mediante el enrutamiento de puerto.This logs into the edge node's operationalization through port forwarding.

library(mrsdeploy)

remoteLogin(
    deployr_endpoint = "http://127.0.0.1:12800",
    username = "admin",
    password = "xxxxxxx"
)

Escala de nodos de proceso operacionalizados en nodos de trabajo de HDInsightScale operationalized compute nodes on HDInsight worker nodes

Para escalar los nodos de proceso, retire primero los nodos de trabajo y, luego, configure los nodos de proceso en los nodos de trabajo retirados.To scale the compute nodes, you first decommission the worker nodes and then configure compute nodes on the decommissioned worker nodes.

Paso 1: Retirada de los nodos de trabajoStep 1: Decommission the worker nodes

El clúster de ML Services no se administra a través de Apache Hadoop YARN.ML Services cluster is not managed through Apache Hadoop YARN. Si los nodos de trabajo no se retiran, el Administrador de recursos de YARN no funcionará según lo previsto, ya que no reconocerá los recursos que utiliza el servidor.If the worker nodes are not decommissioned, the YARN Resource Manager does not work as expected because it is not aware of the resources being taken up by the server. Para evitar esto, se recomienda la retirada de los nodos de trabajo antes de escalar horizontalmente los nodos de proceso.In order to avoid this situation, we recommend decommissioning the worker nodes before you scale out the compute nodes.

Siga estos pasos para retirar nodos de trabajo:Follow these steps to decommission worker nodes:

  1. Inicie sesión en la consola de Ambari del clúster y haga clic en la pestaña Hosts.Log in to the cluster's Ambari console and click on Hosts tab.

  2. Seleccione los nodos de trabajo (para retirarlos).Select worker nodes (to be decommissioned).

  3. Haga clic en Acciones > Hosts seleccionados > Hosts > Activar modo de mantenimiento.Click Actions > Selected Hosts > Hosts > Turn ON Maintenance Mode. Por ejemplo, en la siguiente imagen se han seleccionado wn3 y wn4 para su retirada.For example, in the following image we have selected wn3 and wn4 to decommission.

    retirar nodos de trabajo

  • Seleccione Acciones > Hosts seleccionados > DataNodes > haga clic en Retirar.Select Actions > Selected Hosts > DataNodes > click Decommission.
  • Seleccione Acciones > Hosts seleccionados > NodeManagers > haga clic en Retirar.Select Actions > Selected Hosts > NodeManagers > click Decommission.
  • Seleccione Acciones > Hosts seleccionados > DataNodes > haga clic en Detener.Select Actions > Selected Hosts > DataNodes > click Stop.
  • Seleccione Acciones > Hosts seleccionados > NodeManagers > haga clic en Detener.Select Actions > Selected Hosts > NodeManagers > click on Stop.
  • Seleccione Acciones > Hosts seleccionados > Hosts > haga clic en Detener todos los componentes.Select Actions > Selected Hosts > Hosts > click Stop All Components.
  • Anule la selección de los nodos de trabajo y selecciones los nodos principales.Unselect the worker nodes and select the head nodes.
  • Seleccione Acciones > Hosts seleccionados > "Hosts > Reiniciar todos los componentes.Select Actions > Selected Hosts > "Hosts > Restart All Components.

Paso 2: Configuración de los nodos de proceso en cada nodo de trabajo retiradoStep 2: Configure compute nodes on each decommissioned worker node(s)

  1. SSH en cada nodo de trabajo retirado.SSH into each decommissioned worker node.

  2. Ejecute la utilidad de administración con el archivo DLL correspondiente para el clúster de ML Services que tenga.Run admin utility using the relevant DLL for the ML Services cluster that you have. Para ML Server 9.1, ejecute lo siguiente:For ML Server 9.1, run the following:

     dotnet /usr/lib64/microsoft-deployr/9.0.1/Microsoft.DeployR.Utils.AdminUtil/Microsoft.DeployR.Utils.AdminUtil.dll
    
  3. Escriba 1 para seleccionar la opción Configure ML Server for Operationalization (Configurar R Server para operacionalización).Enter 1 to select option Configure ML Server for Operationalization.

  4. Escriba c para seleccionar la opción C. Compute node.Enter C to select option C. Compute node. Esto configurará el nodo de proceso en el nodo de trabajo.This configures the compute node on the worker node.

  5. Salga de la utilidad de administración.Exit the Admin Utility.

Paso 3: Incorporación de detalles de nodos de proceso en el nodo webStep 3: Add compute nodes details on web node

Una vez que todos los nodos de trabajo retirados se hayan configurado para ejecutar nodos de proceso, vuelva al nodo perimetral y agregue las direcciones IP de los nodos de trabajo retirados a la configuración del nodo web de ML Server:Once all decommissioned worker nodes are configured to run compute node, come back on the edge node and add decommissioned worker nodes' IP addresses in the ML Server web node's configuration:

  1. Uso de SSH en el nodo perimetral.SSH into the edge node.

  2. Ejecute vi /usr/lib64/microsoft-deployr/9.0.1/Microsoft.DeployR.Server.WebAPI/appsettings.json.Run vi /usr/lib64/microsoft-deployr/9.0.1/Microsoft.DeployR.Server.WebAPI/appsettings.json.

  3. Busque la sección de identificadores URI y agregue la dirección IP del nodo de trabajo y los detalles del puerto.Look for the "Uris" section, and add worker node's IP and port details.

    "Uris": {
      "Description": "Update 'Values' section to point to your backend machines. Using HTTPS is highly recommended",
      "Values": [
        "http://localhost:12805", "http://[worker-node1-ip]:12805", "http://[workder-node2-ip]:12805"
      ]
    }
    

Pasos siguientesNext steps