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 previsto, usa la calculadora de precios. Es posible que los usuarios nuevos de Google Cloud sean aptos 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 de selección de proyectos de Cloud Console, selecciona o crea un proyecto de Cloud.

    Ir a la página Selector de proyectos

  3. Asegúrate de que la facturación esté habilitada para tu proyecto de Google Cloud. Obtén información sobre cómo confirmar que tienes habilitada la facturación para tu proyecto.

  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, ve a 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 los pasos de más adelante.

Cómo instalar 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
    

    Aquí:

    • [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. Descarga, y, luego, instala la última versión de RStudio Server para Debian Linux de 64 bits a través de las instrucciones del sitio web de RStudio

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
    

    Aquí:

    • [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. Descarga, y, luego, instala la última versión de RStudio Server para Debian Linux de 64 bits a través de las instrucciones del sitio web de RStudio

Cómo crear 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 nueva cuenta de usuario; reemplaza [USER_NAME] por el nombre de usuario:

    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 acceso de red entre tu máquina local y el nodo principal de la red interna de GCP.

Puedes conectarte a través de 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. Si utilizas un túnel SSH, tu conexión a la IU web será encriptada, a pesar de que el servidor utiliza un protocolo de HTTP simple.

Existen dos opciones para redireccionar 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 requiere de una configuración del navegador personalizada, 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 a través de un perfil configurado de forma especial, sigue los pasos de la página Cómo conectarse 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 argumentos 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 con 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 argumentos 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 con el nombre de usuario y la contraseña que creaste.

Cómo instalar 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()

A través de estos comandos se descargan, compilan y, luego, instalan los paquetes de R requeridos 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 con 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, revisa los siguientes vínculos:

Opcional: Verifica tu instalación

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

  1. En la consola de R, instala el conjunto de datos de muestra (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 vas a utilizar la redirección de puertos SOCKS, ve directo al paso 3. De lo contrario, utiliza la IU de Spark para verificar que la tabla se haya creado.

    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 aplicación 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”.

      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 los despegues 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 utilizados para ejecutar esta consulta. Puedes utilizar esta pestaña para supervisar trabajos que se ejecutan en mayor tiempo.

Agradecimientos

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

Limpieza

Sigue estos pasos para evitar que se apliquen cargos a tu cuenta de Google Cloud Platform por los recursos que usaste en el 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, 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, dirígete 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 características de Google Cloud. Consulta nuestros instructivos.