Cómo crear una máquina virtual con R en Google Cloud

Share on linkedin
Share on twitter
Share on email

Para poder realizar nuestros análisis hay veces que nuestro ordenador físico no es suficiente: procesos que requieren de mucha memoria, automatizar ciertas de tareas sin depender de que nuestro ordenador esté encendido… Además, muchas veces no podemos andar con nuestro ordenador para arriba y para abajo todo el rato. Si alguna vez te has encontrado en algunas de estas situaciones, seguramente te interese conocer cómo crear una máquina virtual con R y RStudio en Google Cloud, y además, gratis. ¿Te suena bien? ¡Pues vamos a ello!

Máquinas Virtuales en Google Cloud

En nuestro caso usaremos las máquinas virtuales de Google Cloud por dos motivos:

  • Mark Edmonson tiene varias librerías desarrolladas para trabajar con Google Cloud que facilitan mucho la vida. De hecho, algunas de estas librerías ya las usamos en el post de cómo automatizar un script de R en Google Cloud. Si te has leído el artículo, seguro que parte de la historia ya la conoces. Sino.. échale un ojo, seguro que te es útil.
  • Google Cloud ofrece una máquina virtual gratuita al mes. No es para nada potente (1 CPU y 0,6 Gb de memoria), pero para realizar ciertas tareas puede ser suficiente. Sino, siempre puedes coger una máquina más potente con 7,5Gb de RAM por 16€ mensuales (interrumpibles) o 53€ initerrumbile.
Características de las máquinas virtuales gratuitas de Google Cloud.

Pasos previos a crear la máquina virtual con R en Google Cloud

Activar la API de App Engine

Antes de crear nuestra máquina virtual debemos configurar unas cosas. Lo primero, es tener una cuenta de Google Cloud. Si no la tienes, en este post expliqué cómo se crea una y buenas prácticas a la hora de crearla.

Cuando ya tengas tu cuenta de Google Cloud lista, ahora tienes que habilitar la API de Compute Engine. Esto lo podrás hacer desde este enlace. Solo tienes que darle en el botón de habilitar.

Cómo habilitar la API de Compute Engine en Google Cloud

Crear una cuenta de servicio

Habilitada la API de App Engine, el siguiente paso es crear una cuenta de servicio. Las cuentas de servicio permiten crear cuentas que tienen permiso únicamente a las funcionalidades de Google Cloud que nosotros decidamos. Así pues, esta cuenta de servicio nos servirá para autentificarnos como usuarios de la cuenta de Google y poder crear nuestra máquina virtual con R sin salir de RStudio.

Para ello, tenemos que ir a la sección Cuentas de Servicio dentro del apartado Iam y haremos clic en ‘Crear cuenta de servicio’. Ahora, simplemente debes dar un nombre y descripción a tu cuenta de servicio (Paso 1). Procura que el nombre sea claro para así saber a qué se refiere cada cuenta de servicio.

Cómo crear una cuenta de servicio en Google Cloud

En la sección de permisos de la cuenta (Paso 2), deberás definir los accesos que tendrá esta cuenta. En un principio solo necesitamos dos accesos: administrador de Compute Engine y el de Usuario de cuenta de servicio. Si no tienes estos accesos, la API te dará error.

Cómo asignar roles a la cuenta de servicio de Google Cloud

El tercer paso no es necesario (a menos que gestiones usuarios dentro de una cuenta de Google Cloud), por lo que lo puedes saltar.

Así pues, una vez hayas hecho esto aparecerá la cuenta de servicio que has creado. Ahora deberás acceder a la misma haciendo clic en su email.

Una vez en la página de la cuenta de servicio, deberás crear una clave en formato JSON para esa cuenta de servicio. Para ello simplemente haz clic en “Crear clave”. Por defecto vendrá marcada la clave en formato JSON, por lo que simplemente deberás darle a crear.

Ojo, cualquier persona con esta clave podría entrar actuar en tu nombre en Google Cloud para los permisos de esa cuenta, por lo que es importante que la guardes bien. La clave precisamente la necesitamos para que la librería googleComputeEngineR acceder a tu cuenta desde R y así cree la máquina virtual con R.

Cómo descargar las claves privadas de la cuenta de servicio de Google Cloud

Una vez tengas la clave simplemente guárdala en la raíz de tu proyecto en R. Con esto, ya estamos listos para crear nuestra máquina virtual con R desde el propio RStudio. ¡Vamos a ello!

Cómo crear tu máquina virtual con R en Google Cloud

Antes de crear tu máquina virtual con R debes tener en cuenta dos cosas: el tipo de máquina virtual que quieres crear y la ubicación de esta máquina. Estos dos parámetros determinarán el rendimiento y facturación de la máquina virtual, por lo que es importante conocerlos.

Tipos de máquina virtual

Cada tipo de máquina virtual en Google Cloud tiene unas características y un nombre diferente. Por ejemplo, dentro de las máquinas virtuales, conocidas como clase n, podemos contratar desde una máquina virtual de 3,75Gb de RAM a una de 360Gb de RAM link.

Las máquinas virtuales típicas son las n1-standard-1 o n1-standard-2, con 3,75Gb y 7,5Gb de RAM respectivamente. Sin embargo, en nuestro caso cogeremos la máquina f1-micro, ya que es la que ofrecen de forma gratuita en Google Cloud. Cómo no, esta máquina está muy limitada (0,6Gb de RAM), pero bueno, para explicar cómo crear una máquina virtual con R sirve. Además, si quieres cambiar y tener una máquina más potente… solo necesitarás cambiar una línea de código.

Entendidos los tipos de máquinas virtuales, vamos a ver la ubicación de la máquina virtual.

Ubicación de la máquina virtual

Google tiene servidores en distintos sitios y, por ello, permite contratar máquinas virtuales en distintos puntos del planeta. De normal, siempre escogeremos aquella ubicación que esté más cerca de nosotros ya que en un principio su respuesta será más rápida.

Sin embargo, una vez más la oferta gratuita de Google Cloud se limita a ciertas regiones, más concretamente Estados Unidos (salvo North Virginia). En mi caso he elegido Iowa (us-central1-b), aunque podrías elegir otra ubicación (todas las ubicaciones aquí). Eso sí, si quieres que tu máquina virtual sea gratuita, que sea en EEUU.

Con esto claro, ¡vamos a crear nuestra máquina virtual!

Creando nuestra máquina virtual con R

Para crear nuestra máquina virtual simplemente tenemos que:

  1. Definir tres variables de entorno que se refieren a la clave de servicio (el json que nos hemos descargado), la localización de la máquina virtual y el proyecto en el que lo vamos a crear. Es importante definir las variables de entorno antes de la carga de la librería, sino no las leerá.
  2. Cargar la librería googleComputeEngineR y crear la máquina virtual. Para ello tendremos que pasar algunos parámetros más, como el nombre de la máquina, el template (la imagen docker que se va a montar), el tipo de máquina y el usuario y contraseña

¡Visto esto, vamos a crear nuestra máquina virtual con R!

project = "direct-analog-185510"
zona = "us-central1-b"
account_key = "clave_prueba.json"

Sys.setenv(GCE_AUTH_FILE = account_key,
           GCE_DEFAULT_PROJECT_ID = project,
           GCE_DEFAULT_ZONE = zona
)

library(googleComputeEngineR)
## Setting scopes to https://www.googleapis.com/auth/cloud-platform
## Successfully auto-authenticated via clave_prueba.json
## Set default project ID to 'direct-analog-185510'
## Set default zone to 'us-central1-b'
# Crear MV
vm <- gce_vm(template = "rstudio", 
             name="demo-rstudio",
             predefined_type = "f1-micro", 
             username = "ander",
             password = "prueba")
## 2020-06-29 22:04:38> Creating template VM
## 2020-06-29 22:04:40> Operation running...
## 2020-06-29 22:05:01> Operation complete in 6 secs
## 2020-06-29 22:05:01> ## VM Template: 'rstudio' running at http://35.224.101.3
## 2020-06-29 22:05:01> On first boot, wait a few minutes for docker container to install before logging in.
## ==Google Compute Engine Instance==
## 
## Name:                demo-rstudio
## Created:             2020-06-29 13:04:40
## Machine Type:        f1-micro
## Status:              RUNNING
## Zone:                us-central1-b
## External IP:         35.224.101.3
## Disks: 
##               deviceName       type       mode boot autoDelete
## 1 demo-rstudio-boot-disk PERSISTENT READ_WRITE TRUE       TRUE
## 
## Metadata:  
##                      key            value
## 2               template          rstudio
## 3 google-logging-enabled             true
## 4           rstudio_user            ander
## 5             rstudio_pw           prueba
## 6      gcer_docker_image rocker/tidyverse
## 2020-06-29 22:05:03> demo-rstudio VM running

¡Y listo! Ya tenemos nuestra máquina virtual corriendo en la url http://35.224.101.3. Como ya indica en los mensajes, la máquina tardará unos minutos en instalarse antes de que puedas acceder, pero pasado un rato veremos algo como esto.

Pantalla de acceso a tu máquina virtual con R

Y si hacemos login, veremos que se trata de la versión Server de RStudio, muy similar a RStudio para ordenador. Además, por defecto incluye ya varios paquetes instalados.

Ejemplo de RStudio en Máquina Virtual

Por último, falta aprender cómo detener nuestra máquina virtual, ya que la máquina virtual se factura por tiempo de uso. Para ello simplemente tenemos que llamar a la función gce_vm_stop, indicando el nomrbe de la máquina virtual a detener.

gce_vm_stop("demo-rstudio")
## [[1]]
## ==Zone Operation stop :  RUNNING
## Started:  2020-06-29 13:05:03

En cualquier caso, si no tienes un ordenador cerca, siempre puedes acceder a la consola de Google Cloud y detner la máquina virtual desde allí, como a continuación:

Cómo detener una máquina virtual en Google Cloud

¡Y con esto ya estaría! Espero que te haya resultado útil aprender a crear una máquina virtual con R en Google Cloud. ¡Nos vemos en el siguiente post!