Administración de clústeres de ML Services en Azure HDInsightManage ML Services cluster on Azure HDInsight

En este artículo, aprenderá a administrar un clúster de ML Services en Azure HDInsight para realizar tareas como agregar varios usuarios simultáneos, conectarse de forma remota a un cliente o un clúster de ML Services, cambiar el contexto de proceso, etc.In this article, you learn how to manage an existing ML Services cluster on Azure HDInsight to perform tasks like adding multiple concurrent users, connecting remotely to an ML Services cluster, changing compute context, etc.

Requisitos previosPrerequisites

Habilitación de varios usuarios simultáneosEnable multiple concurrent users

Para habilitar varios usuarios simultáneos para un clúster de ML Services en HDInsight agregando más usuarios al nodo perimetral en el que se ejecuta la versión de comunidad de RStudio.You can enable multiple concurrent users for ML Services cluster on HDInsight by adding more users for the edge node on which the RStudio community version runs. Al crear un clúster de HDInsight, es preciso especificar dos usuarios, un usuario HTTP y un usuario SSH:When you create an HDInsight cluster, you must provide two users, an HTTP user and an SSH user:

Usuario simultáneo 1

  • Nombre de usuario de inicio de sesión del clúster: un usuario HTTP para la autenticación a través de la puerta de enlace de HDInsight que se usa para proteger los clústeres de HDInsight que ha creado.Cluster login username: an HTTP user for authentication through the HDInsight gateway that is used to protect the HDInsight clusters you created. Este usuario HTTP se utiliza para acceder a la interfaz de usuario de Apache Ambari, a la interfaz de usuario de Apache Hadoop YARN y a otros componentes de la interfaz de usuario.This HTTP user is used to access the Apache Ambari UI, Apache Hadoop YARN UI, as well as other UI components.
  • Nombre de usuario de Secure Shell (SSH) : un usuario SSH para acceder al clúster a través de Secure Shell.Secure Shell (SSH) username: an SSH user to access the cluster through secure shell. Este es un usuario del sistema Linux para todos los nodos principales, nodos de trabajo y nodos perimetrales.This user is a user in the Linux system for all the head nodes, worker nodes, and edge nodes. Por consiguiente, puede usar Secure Shell para acceder a cualquiera de los nodos de un clúster remoto.So you can use secure shell to access any of the nodes in a remote cluster.

La versión de comunidad de R Studio Server que se usa en el clúster de ML Services en HDInsight acepta únicamente el nombre de usuario y la contraseña de Linux como mecanismo de inicio de sesión.The R Studio Server Community version used in the ML Services cluster on HDInsight accepts only Linux username and password as a sign in mechanism. No admite tokens de paso.It does not support passing tokens. Por lo tanto, al tratar de obtener acceso a R Studio por primera vez en un clúster de ML Services, debe iniciar sesión dos veces.So, when you try to access R Studio for the first time on an ML Services cluster, you need to sign in twice.

  • Primero inicie sesión con las credenciales de usuario HTTP a través de la puerta de enlace de HDInsight.First sign in using the HTTP user credentials through the HDInsight Gateway.

  • Luego, use las credenciales de usuario de SSH para iniciar sesión en RStudio.Then use the SSH user credentials to sign in to RStudio.

Actualmente, una cuenta de usuario SSH solo se puede crear al aprovisionar un clúster de HDInsight.Currently, only one SSH user account can be created when provisioning an HDInsight cluster. Por tanto, para que varios usuarios puedan acceder al clúster de ML Services en HDInsight, debe crear usuarios adicionales en el sistema Linux.So to enable multiple users to access ML Services cluster on HDInsight, you must create additional users in the Linux system.

Dado que RStudio se ejecuta en el nodo perimetral del clúster, hay que dar varios pasos:Because RStudio runs on the cluster’s edge node, there are several steps here:

  1. Uso del usuario de SSH creado para iniciar sesión en el nodo perimetralUse the existing SSH user to sign in to the edge node
  2. Agregar más usuarios de Linux al nodo perimetral.Add more Linux users in edge node
  3. Utilizar la versión de comunidad de RStudio con el usuario creado.Use RStudio Community version with the user created

Paso 1: Uso del usuario de SSH creado para iniciar sesión en el nodo perimetralStep 1: Use the created SSH user to sign in to the edge node

Siga las instrucciones que se proporcionan en Conexión a través de SSH con HDInsight (Apache Hadoop) para acceder al nodo perimetral.Follow the instructions at Connect to HDInsight (Apache Hadoop) using SSH to access the edge node. La dirección del nodo perimetral para el clúster de ML Services en HDInsight es CLUSTERNAME-ed-ssh.azurehdinsight.net.The edge node address for ML Services cluster on HDInsight is CLUSTERNAME-ed-ssh.azurehdinsight.net.

Paso 2: Agregar más usuarios de Linux al nodo perimetral.Step 2: Add more Linux users in edge node

Para agregar un usuario al nodo perimetral, ejecute los comandos:To add a user to the edge node, execute the commands:

# Add a user 
sudo useradd <yournewusername> -m

# Set password for the new user
sudo passwd <yournewusername>

En la captura de pantalla siguiente se muestra el resultado.The following screenshot shows the outputs.

Usuario simultáneo 3

Cuando se le pida la "contraseña actual de Kerberos", presione Entrar para ignorarlo.When prompted for "Current Kerberos password:", just press Enter to ignore it. La opción -m del comando useradd indica que el sistema creará una carpeta particular para el usuario, que se requiere para la versión de comunidad de RStudio.The -m option in useradd command indicates that the system will create a home folder for the user, which is required for RStudio Community version.

Paso 3: Utilizar la versión de comunidad de RStudio con el usuario creado.Step 3: Use RStudio Community version with the user created

Acceda a RStudio desde https://CLUSTERNAME.azurehdinsight.net/rstudio/.Access RStudio from https://CLUSTERNAME.azurehdinsight.net/rstudio/. La primera vez que inicie sesión después de crear el clúster, escriba las credenciales de administrador del clúster seguidas de las credenciales del usuario SSH que ha creado.If you are logging in for the first time after creating the cluster, enter the cluster admin credentials followed by the SSH user credentials you created. Si no se trata del primer inicio de sesión, escriba solo las credenciales del usuario SSH que ha creado.If this is not your first login, only enter the credentials for the SSH user you created.

También puede iniciar sesión con las credenciales originales (de forma predeterminada es sshuser) simultáneamente desde otra ventana del explorador.You can also sign in using the original credentials (by default, it is sshuser) concurrently from another browser window.

Tenga en cuenta también que los usuarios recién agregados no tienen privilegios raíz en el sistema Linux, pero tienen el mismo acceso a todos los archivos en el almacenamiento HDFS y WASB remoto.Note also that the newly added users do not have root privileges in Linux system, but they do have the same access to all the files in the remote HDFS and WASB storage.

Conexión de forma remota a Microsoft ML ServicesConnect remotely to Microsoft ML Services

Puede configurar el acceso al contexto de proceso de HDInsight Spark desde una instancia remota de ML Client que se ejecute en un equipo de escritorio.You can set up access to the HDInsight Spark compute context from a remote instance of ML Client running on your desktop. Para ello, debe especificar las opciones (hdfsShareDir, shareDir, sshUsername, sshHostname, sshSwitches y sshProfileScript) al definir el contexto de proceso RxSpark en el equipo de escritorio: Por ejemplo:To do so, you must specify the options (hdfsShareDir, shareDir, sshUsername, sshHostname, sshSwitches, and sshProfileScript) when defining the RxSpark compute context on your desktop: For example:

myNameNode <- "default"
myPort <- 0

mySshHostname  <- '<clustername>-ed-ssh.azurehdinsight.net'  # HDI secure shell hostname
mySshUsername  <- '<sshuser>'# HDI SSH username
mySshSwitches  <- '-i /cygdrive/c/Data/R/davec'   # HDI SSH private key

myhdfsShareDir <- paste("/user/RevoShare", mySshUsername, sep="/")
myShareDir <- paste("/var/RevoShare" , mySshUsername, sep="/")

mySparkCluster <- RxSpark(
  hdfsShareDir = myhdfsShareDir,
  shareDir     = myShareDir,
  sshUsername  = mySshUsername,
  sshHostname  = mySshHostname,
  sshSwitches  = mySshSwitches,
  sshProfileScript = '/etc/profile',
  nameNode     = myNameNode,
  port         = myPort,
  consoleOutput= TRUE
)

Para más información, consulte la sección "Using Microsoft Machine Learning Server as a Apache Hadoop Client" (Uso de Microsoft Machine Learning Server como cliente de Apache Hadoop) de How to use RevoScaleR in a Apache Spark compute context (Uso de RevoScaleR en un contexto de proceso de Apache Spark)For more information, see the "Using Microsoft Machine Learning Server as an Apache Hadoop Client" section in How to use RevoScaleR in an Apache Spark compute context

Usar un contexto de procesoUse a compute context

Un contexto de proceso le permite controlar si un cálculo se realizará de forma local en el nodo perimetral o se distribuirá en los nodos del clúster de HDInsight.A compute context allows you to control whether computation is performed locally on the edge node or distributed across the nodes in the HDInsight cluster. Para ver un ejemplo de cómo configurar un contexto de proceso con RStudio Server, consulte Execute an R script on an ML Services cluster in Azure HDInsight using RStudio Server (Ejecutar un script de R en un clúster de servicios de ML en Azure HDInsight mediante RStudio Server).For an example of setting a compute context with RStudio Server, see Execute an R script on an ML Services cluster in Azure HDInsight using RStudio Server.

Distribuir el código de R a varios nodosDistribute R code to multiple nodes

Con ML Services en HDInsight puede seleccionar el código de R existente y ejecutarlo en varios nodos del clúster mediante rxExec.With ML Services on HDInsight, you can take existing R code and run it across multiple nodes in the cluster by using rxExec. Esta función es útil cuando se realiza un barrido de parámetros o simulaciones.This function is useful when doing a parameter sweep or simulations. El siguiente código es un ejemplo de cómo usar rxExec:The following code is an example of how to use rxExec:

rxExec( function() {Sys.info()["nodename"]}, timesToRun = 4 )

Si aún usa el contexto de Spark, este comando devuelve el valor nodename de los nodos de trabajo en los que se ejecuta el código (Sys.info()["nodename"]).If you are still using the Spark context, this command returns the nodename value for the worker nodes that the code (Sys.info()["nodename"]) is run on. Por ejemplo, en un clúster de cuatro nodos, lo esperable es recibir una salida similar al siguiente fragmento de código:For example, on a four node cluster, you expect to receive output similar to the following snippet:

$rxElem1
    nodename
"wn3-mymlser"

$rxElem2
    nodename
"wn0-mymlser"

$rxElem3
    nodename
"wn3-mymlser"

$rxElem4
    nodename
"wn3-mymlser"

Acceso a datos en Apache Hive y ParquetAccess data in Apache Hive and Parquet

ML Services de HDInsight permite el acceso directo a los datos en Hive y Parquet para usarlos en funciones ScaleR en el contexto de proceso de Spark.HDInsight ML Services allows direct access to data in Hive and Parquet for use by ScaleR functions in the Spark compute context. Estas funcionalidades están disponibles por medio de las nuevas funciones de origen de datos ScaleR llamadas RxHiveData y RxParquetData. Estas emplean Spark SQL para cargar datos directamente en un elemento DataFrame de Spark para analizarlos con ScaleR.These capabilities are available through new ScaleR data source functions called RxHiveData and RxParquetData that work through use of Spark SQL to load data directly into a Spark DataFrame for analysis by ScaleR.

El siguiente código proporciona código de ejemplos relativo al uso de las nuevas funciones:The following code provides some sample code on use of the new functions:

#Create a Spark compute context:
myHadoopCluster <- rxSparkConnect(reset = TRUE)

#Retrieve some sample data from Hive and run a model:
hiveData <- RxHiveData("select * from hivesampletable",
                 colInfo = list(devicemake = list(type = "factor")))
rxGetInfo(hiveData, getVarInfo = TRUE)

rxLinMod(querydwelltime ~ devicemake, data=hiveData)

#Retrieve some sample data from Parquet and run a model:
rxHadoopMakeDir('/share')
rxHadoopCopyFromLocal(file.path(rxGetOption('sampleDataDir'), 'claimsParquet/'), '/share/')
pqData <- RxParquetData('/share/claimsParquet',
                 colInfo = list(
            age    = list(type = "factor"),
           car.age = list(type = "factor"),
              type = list(type = "factor")
         ) )
rxGetInfo(pqData, getVarInfo = TRUE)

rxNaiveBayes(type ~ age + cost, data = pqData)

#Check on Spark data objects, cleanup, and close the Spark session:
lsObj <- rxSparkListData() # two data objs are cached
lsObj
rxSparkRemoveData(lsObj)
rxSparkListData() # it should show empty list
rxSparkDisconnect(myHadoopCluster)

Para más información acerca del uso de estas nuevas funciones, consulte la ayuda en línea de ML Services mediante los comandos ?RxHivedata y ?RxParquetData.For additional info on use of these new functions see the online help in ML Services through use of the ?RxHivedata and ?RxParquetData commands.

Instalación de paquetes de R adicionales en el clústerInstall additional R packages on the cluster

Procedimiento para instalar paquetes de R adicionales en el nodo perimetralTo install R packages on the edge node

Si quiere instalar paquetes de R adicionales en el nodo perimetral, puede usar install.packages() directamente desde la consola de R cuando se conecte al nodo perimetral a través de SSH.If you want to install additional R packages on the edge node, you can use install.packages() directly from within the R console, once connected to the edge node through SSH.

Procedimiento para instalar paquetes de R en el nodo de trabajoTo install R packages on the worker node

Para instalar paquetes de R en los nodos de trabajo del clúster, debe usar una acción de script.To install R packages on the worker nodes of the cluster, you must use a Script Action. Las acciones de script son scripts de Bash que se usan para realizar cambios en la configuración del clúster de HDInsight o para instalar software adicional, como paquetes de R adicionales.Script Actions are Bash scripts that are used to make configuration changes to the HDInsight cluster or to install additional software, such as additional R packages.

Importante

Usar Acciones de script para instalar paquetes de R adicionales solo se permite una vez creado el clúster.Using Script Actions to install additional R packages can only be used after the cluster has been created. No use este procedimiento durante la creación del clúster, ya que el script cuenta con que ML Services esté completamente configurado.Do not use this procedure during cluster creation, as the script relies on ML Services being completely configured.

  1. Siga los pasos de Personalización de clústeres mediante la acción de script.Follow the steps at Customize clusters using Script Action.

  2. En Enviar acción de script, proporcione la siguiente información:For Submit script action, provide the following information:

    • En Tipo de script, seleccione Personalizada.For Script type, select Custom.

    • En Nombre, especifique un nombre para la acción de script.For Name, provide a name for the script action.

      • En URI de script de Bash, escriba https://mrsactionscripts.blob.core.windows.net/rpackages-v01/InstallRPackages.sh.For Bash script URI, enter https://mrsactionscripts.blob.core.windows.net/rpackages-v01/InstallRPackages.sh. Se trata del script que instala los paquetes de R adicionales en el nodo de trabajo.This is the script that installs additional R packages on the worker node
    • Active solo la casilla de verificación de Trabajo.Select the check box only for Worker.

    • Parámetros: paquetes de R que se van a instalar.Parameters: The R packages to be installed. Por ejemplo: bitops stringr arulesFor example, bitops stringr arules

    • Active la casilla de verificación de Persist this script action (Continuar con esta acción de script).Select the check box to Persist this script action.

    Nota

    1. De forma predeterminada, todos los paquetes de R se instalan desde una instantánea del repositorio Microsoft MRAN coherente con la versión de ML Server que se ha instalado.By default, all R packages are installed from a snapshot of the Microsoft MRAN repository consistent with the version of ML Server that has been installed. Si desea instalar las versiones más recientes de los paquetes, corre el riesgo de que se produzca incompatibilidad.If you want to install newer versions of packages, then there is some risk of incompatibility. Sin embargo, para realizar este tipo de instalación es preciso especificar useCRAN como primer elemento de la lista de paquetes, por ejemplo useCRAN bitops, stringr, arules.However this kind of install is possible by specifying useCRAN as the first element of the package list, for example useCRAN bitops, stringr, arules.
    2. Algunos paquetes de R requieren otras bibliotecas de sistema de Linux.Some R packages require additional Linux system libraries. Por comodidad, ML Services de HDInsight está preinstalado con las dependencias que necesitan los 100 paquetes de R más populares.For convenience, the HDInsight ML Services comes pre-installed with the dependencies needed by the top 100 most popular R packages. Sin embargo, si los paquetes de R que instale necesitan otras bibliotecas, debe descargar el script base usado aquí y realizar los pasos para instalar las bibliotecas del sistema.However, if the R package(s) you install require libraries beyond these then you must download the base script used here and add steps to install the system libraries. A continuación, debe cargar el script modificado a un contenedor de blobs público en Azure Storage y usar el script modificado para instalar los paquetes.You must then upload the modified script to a public blob container in Azure storage and use the modified script to install the packages. Para más información sobre cómo desarrollar acciones de script, consulte Desarrollo de acciones de script.For more information on developing Script Actions, see Script Action development.

    Agregar una Acción de script

  3. Seleccione Crear para ejecutar el script.Select Create to run the script. Una vez que finalice el script, los paquetes de R estarán disponibles en todos los nodos de trabajo.Once the script completes, the R packages are available on all worker nodes.

Pasos siguientesNext steps