Ejecuta RStudio® Server en un clúster de Cloud Dataproc

En este instructivo, se muestra cómo ejecutar RStudio Server en un clúster de Dataproc y acceder a la interfaz de usuario (IU) web de RStudio desde tu máquina local.

En este instructivo, se supone que estás familiarizado con el lenguaje R y la IU web de RStudio, y que tienes conocimientos básicos sobre el uso de túneles de Secure Shell (SSH), Apache Spark y Apache Hadoop que se ejecutan en Dataproc.

Objetivos

En este instructivo, se te guiará por los siguientes procedimientos:

  • Conectar R a través de Apache Spark a Apache Hadoop YARN que se ejecuta en un clúster de Dataproc
  • Conectar tu navegador a través de un túnel SSH para acceder a las IU de RStudio, Spark y YARN
  • Ejecuta una consulta de ejemplo en Dataproc mediante RStudio

Costos

En este instructivo, se usan los siguientes componentes facturables de Google Cloud:

Para generar una estimación de costos en función del uso proyectado, usa la calculadora de precios. Es posible que los usuarios nuevos de Google Cloud califiquen para obtener una prueba gratuita.

Antes de comenzar

  1. Accede a tu Cuenta de Google.

    Si todavía no tienes una cuenta, regístrate para obtener una nueva.

  2. En la página Selector de proyectos de Cloud Console, selecciona o crea un proyecto de Cloud.

    Ir a la página Selector de proyectos

  3. Comprueba que la facturación esté habilitada en tu proyecto.

    Descubre cómo puedes habilitar la facturación

  4. Habilita las API de Dataproc and Cloud Storage.

    Habilita las API

  5. Instala e inicializa el SDK de Cloud.

Cuando finalices este instructivo, puedes borrar los recursos creados para evitar que se te siga facturando. Para obtener más información, consulta Realiza una limpieza.

Crea un clúster de Dataproc

  1. En Cloud Console, ve a la páginaClústeres de Dataproc:

    IR A LA PÁGINA CLÚSTERES

  2. Haz clic en Create Cluster (Crear clúster):

    Crea un clúster

  3. Ponle un nombre al clúster y haz clic en Crear.

Para este instructivo, los tamaños predeterminados del clúster son suficientes. Toma nota de la zona en la que creaste el clúster, ya que necesitarás esa información en pasos posteriores.

Instala RStudio Server y sus dependencias en el nodo principal

Linux o macOS

  1. En tu máquina local, conéctate a través de SSH a la instancia principal del nodo del clúster de Dataproc:

        gcloud compute ssh \
            --zone=[CLUSTER_ZONE] \
            --project=[PROJECT_ID] \
            [CLUSTER_NAME]-m
        

    En el ejemplo anterior, se ilustra lo siguiente:

    • [CLUSTER_ZONE] es la zona en la que creaste el clúster.
    • [PROJECT_ID] es el ID de tu proyecto.
    • [CLUSTER_NAME] es el nombre de tu clúster.
    • [CLUSTER_NAME]-m es el nombre del nodo principal del clúster.
  2. En el nodo principal, instala los paquetes y las dependencias requeridas:

        sudo apt-get update
        sudo apt-get install -y \
            r-base r-base-dev \
            libcurl4-openssl-dev libssl-dev libxml2-dev
        
  3. Sigue las instrucciones del sitio web de RStudio a fin de descargar, y, luego, instalar la última versión de RStudio Server para Debian Linux de 64 bits.

Windows

  1. En tu máquina local, conéctate a través de SSH a la instancia principal del nodo del clúster de Dataproc:

        gcloud compute ssh ^
            --zone=[CLUSTER_ZONE] ^
            --project=[PROJECT_ID] ^
            [CLUSTER_NAME]-m
        

    En el ejemplo anterior, se ilustra lo siguiente:

    • [CLUSTER_ZONE] es la zona en la que creaste el clúster.
    • [PROJECT_ID] es el ID de tu proyecto.
    • [CLUSTER_NAME] es el nombre de tu clúster.
    • [CLUSTER_NAME]-m es el nombre del nodo principal del clúster.
  2. En el nodo principal, instala los paquetes y las dependencias requeridas:

        sudo apt-get update
        sudo apt-get install -y \
            r-base r-base-dev \
            libcurl4-openssl-dev libssl-dev libxml2-dev
        
  3. Sigue las instrucciones del sitio web de RStudio a fin de descargar, y, luego, instalar la última versión de RStudio Server para Debian Linux de 64 bits.

Crea una cuenta de usuario en el nodo principal

Para crear una cuenta de usuario con la que acceder a la IU de RStudio, sigue estos pasos:

  1. Crea una cuenta de usuario nueva; para eso, reemplaza [USER_NAME] por el nombre de usuario nuevo:

    sudo adduser [USER_NAME]
  2. Cuando se te solicite, ingresa una contraseña para el usuario nuevo.

    Puedes crear varias cuentas de usuario en el nodo principal para que cada usuario tenga su propio entorno de RStudio. Por cada usuario que crees, sigue los pasos de instalación de sparklyr y Spark.

Conéctate a la IU web de RStudio

RStudio Server se ejecuta en el nodo principal de Dataproc y es accesible solo desde la red interna de GCP. Para acceder al servidor, necesitas una ruta de red entre tu máquina local y el nodo principal de la red interna de GCP.

Puedes conectarte mediante una redirección de puertos a través de un túnel SSH, que es más seguro que abrir un puerto de firewall al nodo principal. El uso de un túnel SSH encripta la conexión a la IU web, a pesar de que el servidor use un protocolo HTTP simple.

Existen dos opciones para la redirección de puertos: la redirección dinámica a través de SOCKS o la redirección de puertos TCP.

Si usas SOCKS, puedes ver todas las interfaces web internas que se ejecutan en el nodo principal de Dataproc; sin embargo, debes usar una configuración personalizada del navegador para redireccionar todo el tráfico del navegador a través del proxy de SOCKS.

La redirección de puertos TCP no necesita una configuración personalizada del navegador, pero solo puedes visualizar la interfaz web de RStudio.

Conéctate a través de un túnel SSH SOCKS

Para crear un túnel SSH SOCKS y conectarlo mediante un perfil del navegador configurado de forma especial, sigue los pasos en Conéctate a las interfaces web.

Luego de conectarte, usa las siguientes URL para acceder a las interfaces web.

  • Para cargar la IU web de RStudio, conecta tu navegador configurado de forma especial a http://[CLUSTER_NAME]-m:8787. Luego, accede con el nombre de usuario y la contraseña que creaste.

  • Para cargar la IU web del administrador de recursos de YARN, conecta el navegador configurado de forma especial a http://[CLUSTER_NAME]-m:8088.

  • Para cargar la IU web de HDFS NameNode, conecta el navegador configurado de forma especial a http://[CLUSTER_NAME]-m:9870.

Conéctate a través de la redirección de puertos SSH

Linux o macOS

  1. En tu máquina local, conéctate al nodo principal de Dataproc:

        gcloud compute ssh \
            --zone=[CLUSTER_ZONE] \
            --project=[PROJECT_ID] \
            [CLUSTER_NAME]-m -- \
            -L 8787:localhost:8787
        

    El parámetro -- separa los argumentos del comando de gcloud de los que se envían al comando ssh. La opción -L configura la redirección de puertos TCP desde el puerto 8787 en la máquina local hasta el puerto 8787 en el nodo principal del clúster en el que escucha RStudio Server.

  2. Para cargar la IU web de RStudio, conecta el navegador a http://localhost:8787.

  3. Accede mediante el nombre de usuario y la contraseña que creaste.

Windows

  1. En tu máquina local, conéctate al nodo principal de Dataproc:

        gcloud compute ssh ^
            --zone=[CLUSTER_ZONE] ^
            --project=[PROJECT_ID] ^
            [CLUSTER_NAME]-m -- ^
            -L 8787:localhost:8787
        

    El parámetro -- separa los argumentos del comando de gcloud de los que se envían al comando ssh. La opción -L configura la redirección de puertos TCP desde el puerto 8787 en la máquina local hasta el puerto 8787 en el nodo principal del clúster en el que escucha RStudio Server.

  2. Para cargar la IU web de RStudio, conecta el navegador a http://localhost:8787.

  3. Accede mediante el nombre de usuario y la contraseña que creaste.

Instala el paquete de sparklyr y Spark

Para instalar el paquete de sparklyr y Spark en la consola de R de RStudio, ejecuta los siguientes comandos:

    install.packages("sparklyr")
    sparklyr::spark_install()
    

Con estos comandos, se descargan, compilan y, luego, instalan los paquetes de R necesarios y una instancia compatible con Spark. Cada comando demora algunos minutos en completarse.

Cómo conectar R con Spark en YARN

Cada vez que reinicies una sesión de R, realiza los siguientes pasos:

  1. Carga las bibliotecas y configura las variables del entorno necesarias:

        library(sparklyr)
        library(dplyr)
        spark_home_set()
        Sys.setenv(HADOOP_CONF_DIR = '/etc/hadoop/conf')
        Sys.setenv(YARN_CONF_DIR = '/etc/hadoop/conf')
        
  2. Conéctate a Spark en YARN mediante la configuración predeterminada:

    sc <- spark_connect(master = "yarn-client")

    El objeto sc hace referencia a tu conexión a Spark, que puedes usar para administrar datos y ejecutar consultas en R.

    Si el comando se ejecuta de forma correcta, ve a Verifica el estado de la conexión a Spark.

    Si el comando falla, observa si el mensaje de error comienza con lo siguiente:

    Error in force(code) :
        Failed during initialize_connection: java.lang.NoClassDefFoundError: com/sun/jersey/api/client/config/ClientConfig

    Si es así, se debe a que existe una incompatibilidad entre la versión de YARN y la de Spark que usa RStudio. Para evitar esta incompatibilidad, inhabilita el servicio de hora de Yarn.

  3. En el menú de la IU web de RStudio, navega hasta Herramientas > Shell para crear una pestaña de la terminal nueva.

  4. En la pestaña de la terminal, ingresa el siguiente comando para inhabilitar el servicio que causa la incompatibilidad.

    echo "spark.hadoop.yarn.timeline-service.enabled false" \
            >> $SPARK_HOME/conf/spark-defaults.conf
  5. Cierra la pestaña de la terminal y, en el menú, ve a Sesión > Reiniciar R.

Vuelve a repetir los pasos 1 y 2, y te conectarás a Spark de forma correcta.

Verifica el estado de la conexión a Spark

El objeto sc creado antes es la referencia de la conexión a Spark. Puedes ejecutar el siguiente comando para confirmar que la sesión R está conectada:

spark_connection_is_open(sc)

Si la conexión se encuentra establecida, los comandos mostrarán el siguiente resultado:

[1] TRUE

Puedes ajustar los parámetros de conexión mediante un objeto de configuración que se puede pasar a spark_connect().

Para obtener más información sobre los parámetros de conexión de sparklyr y cómo ajustar Spark en YARN, consulta los siguientes vínculos:

Opcional: Verifica tu instalación

Para verificar que todo esté en funcionamiento, puedes subir una tabla al clúster de Dataproc y realizar una consulta.

  1. En la consola de R, instala el conjunto de datos de ejemplo (una lista de todos los vuelos de la ciudad de Nueva York del año 2013) y cópialo en Spark:

        install.packages("nycflights13")
        flights_tbl <- copy_to(sc, nycflights13::flights, "flights")
        
  2. Si no usarás la redirección de puertos SOCKS, ve directo al paso 3. De lo contrario, usa la IU de Spark para verificar si se creó la tabla.

    1. En el navegador que configuraste, carga el administrador de recursos de YARN:

      http://[CLUSTER_NAME]-m:8088

      En la lista de la aplicación, aparecerá una fila para la app de sparklyr en la tabla.

      fila de la app de sparklyr

    2. En la columna Tracking UI (Seguimiento de IU), ubicada en la parte derecha de la tabla, haz clic en el vínculo ApplicationMaster para acceder a la IU de Spark.

      En la pestaña Trabajos de la IU de Spark, verás las entradas para los trabajos que copiaron los datos a Spark. En la pestaña Almacenamiento, verás una entrada para In-memory table 'flights' (Tabla “vuelos” en la memoria).

      Pestaña Almacenamiento con una entrada para la tabla vuelos en la memoria

  3. En la consola de R, ejecuta la siguiente consulta:

        flights_tbl %>%
          select(carrier, dep_delay) %>%
          group_by(carrier) %>%
          summarize(count = n(), mean_dep_delay = mean(dep_delay)) %>%
          arrange(desc(mean_dep_delay))
        

    Esta consulta crea una lista del retraso promedio de las salidas por vuelo y por aerolínea, en orden descendente, y produce el siguiente resultado:

        # Source:     lazy query [?? x 3]
        # Database:   spark_connection
        # Ordered by: desc(mean_dep_delay)
           carrier  count mean_dep_delay
           <chr>    <dbl>          <dbl>
         1 F9        685.           20.2
         2 EV      54173.           20.0
         3 YV        601.           19.0
         4 FL       3260.           18.7
         5 WN      12275.           17.7
        ...
        

Si regresas a la pestaña Trabajos en la IU  de Spark, puedes ver los trabajos que se usaron para ejecutar esta consulta. Puedes usar esta pestaña para supervisar el progreso de los trabajos que se ejecutan por más tiempo.

Agradecimientos

Agradecemos a Mango Solutions por su ayuda en la preparación de cierto contenido técnico en este artículo.

Realiza una limpieza

Sigue estos pasos para evitar que se apliquen cargos a tu cuenta de Google Cloud Platform por los recursos que usaste en este instructivo:

  • Borra el clúster de Dataproc.
  • Si no tienes otros clústeres de Dataproc en la misma región, también debes borrar el depósito de Cloud Storage que se creó automáticamente para la región.

Borra el clúster

  1. En Cloud Console, ve a la página Clústeres de Dataproc:

    IR A LA PÁGINA CLÚSTERES DE CLOUD DATAPROC

  2. En la lista de clústeres, encuentra la fila para el clúster de Dataproc que creaste y, en la columna Cloud Storage staging bucket (Depósito de etapa de pruebas de Cloud Storage), toma nota del nombre del depósito, que comienza con la palabra dataproc.

    Borra el clúster

  3. Selecciona la casilla de verificación que se encuentra al lado de rstudio-cluster y haz clic en Delete (Borrar).

  4. Cuando se te pida que borres el clúster, confirma la eliminación.

Borra el depósito

  1. Para borrar el depósito de Cloud Storage, ve al navegador de Cloud Storage:

    IR AL NAVEGADOR DE CLOUD STORAGE

  2. Busca el depósito asociado con el clúster de Dataproc que acabas de borrar.

  3. Selecciona la casilla de verificación que se encuentra al lado del nombre del depósito y haz clic en Delete (Borrar).

    Borra el depósito de almacenamiento

  4. Cuando se te solicite borrar el depósito de almacenamiento, confirma la eliminación.

Próximos pasos

  • Para obtener información sobre otras formas de interactuar con Dataproc, consulta Instructivos y ejemplos.
  • Prueba otras funciones de Google Cloud. Consulta nuestros instructivos.