Recientemente compré un ASUS Chromebook ya que quería una computadora portátil asequible y portátil (ligera y con una duración de batería decente). El Chromebook puede ejecutar Linux (Debian de manera predeterminada) utilizando el entorno de desarrollo Linux de ChromeOS, por lo que esencialmente tiene todo lo que necesito para trabajar.
RStudio es una herramienta esencial para mi trabajo y pude instalar y usar RStudio pero, como era de esperar, es un poco lento en una Chromebook. Como alternativa, probé Posicionar nube, que es un servicio que hace que sea extremadamente fácil usar RStudio (y Jupyter Notebook) en la nube. Una cuenta gratuita viene con 25 horas de uso que se actualiza cada mes. Si eso no es suficiente, puede actualizar a un plan Plus que cuesta 5 USD + impuestos y tiene 50 horas adicionales (75 horas en total) de uso. La asignación de recursos para los planes gratuito y Plus es de 1 CPU y 1 GB de memoria. Algunos objetos creados en mi trabajo definitivamente ocupa más de 1 GB de memoria, por lo que es un factor decisivo. El plan Cloud Premium proporciona más recursos (200 horas, 16 GB de memoria y 4 CPU) pero cuesta 99 USD + impuestos al mes. En esta publicación, configuré mi propio servicio en la nube RStudio en una instancia EC2, que creo que será más económico que Posit Cloud, pero requiere un conocimiento previo de Amazon Web Services y Unix.
Para seguir esta publicación, necesitará una cuenta de AWS y debería costarle menos de 0,10 USD + impuestos si finaliza la instancia EC2 y elimina el almacenamiento de EBS en una hora. Si ha seguido esta publicación y le costó más, ¡hágamelo saber! Si es elegible para el Capa gratuita de AWS seleccione las opciones que se encuentran dentro del nivel del árbol en su lugar.
El primer paso es lanzar una instancia EC2 y he usado Ubuntu 22.04 en un tipo de instancia t2.medium, que cuesta 0,0608 USD por hora en la región de Tokio y un par de claves existente. Este tipo de instancia solo puede usar el almacenamiento EBS de Amazon (lea esta publicación para familiarizarse con EBS) e incurre en costos separados además del costo de la instancia EC2. Para el almacenamiento, creé un volumen EBS de 20 G (gp2), que calculé costaría 2,4 USD al mes si Lo conservé durante un mes.. Si este volumen se elimina en una hora, debería costar 0,003 USD. En el grupo de seguridad y las reglas de entrada, agregue su IP a la fuente SSH y también abra el puerto 8889 seleccionando TCP personalizado y para Fuente ingrese 0.0.0.0/0, que permite el acceso desde cualquier dirección IP. Vuelva a verificar su configuración y luego haga clic en iniciar instancia.
En la página de la instancia, obtenga la dirección IP y luego SSH en la instancia usando su par de claves. Recuerde esta IP porque la necesitamos para SSH en la instancia y para acceder a RStudio.
ssh -i my_key [email protected]
Usaremos Docker para ejecutar el servidor RStudio, por lo que debemos instalar Docker en Ubuntu primero.
sudo apt-get update
sudo apt-get install
ca-certificates
curl
gnupg
lsb-release
unzip
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
echo
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin
sudo usermod -aG docker ubuntu
logout
Agregamos el docker
grupo a la ubuntu
usuario, por lo que debemos cerrar sesión y volver a iniciar sesión para que se apliquen los cambios. Deberías ver el Hello from Docker!
mensaje si todo ha ido bien.
ssh -i my_key [email protected]
docker run hello-world
# --snip--
# Hello from Docker!
# This message shows that your installation appears to be working correctly.
# --snip--
instalaremos Interfaz de línea de comandos de AWS (AWS CLI) en esta instancia para que podamos transferir los resultados de nuestro análisis a S3. ejecutar el siguientes pasos abajo:
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
unzip awscliv2.zip
sudo ./aws/install
aws --version
# aws-cli/2.9.4 Python/3.9.11 Linux/5.15.0-1026-aws exe/x86_64.ubuntu.22 prompt/off
Puede seguir esta publicación sobre cómo configurar S3. He creado un cubo llamado davetangrstudioec2
.
# enter IAM details
aws configure
echo hello > test.txt
aws s3 cp test.txt s3://davetangrstudioec2/
# upload: ./test.txt to s3://davetangrstudioec2/test.txt
aws s3 rm s3://davetangrstudioec2/test.txt
# delete: s3://davetangrstudioec2/test.txt
Alternativamente, en lugar de S3, puede usar GitHub para almacenar los resultados de su análisis. Seguir esta guía para generar una clave SSH. Entonces crea ~/.ssh/config
para contener lo siguiente:
Host github.com
HostName github.com
User git
IdentityFile ~/location/of/key
Cambie los permisos de la configuración y la clave SSH y verifique si la configuración funcionó.
chmod 600 ~/.ssh/config
chmod 600 ~/location/of/key
ssh -T [email protected]
# Hi davetang! You've successfully authenticated, but GitHub does not provide shell access.
Finalmente, ejecute RStudio Server con Docker en la instancia EC2.
git clone https://github.com/davetang/learning_docker.git
cd learning_docker/rstudio
./run_rstudio.sh
# --snip--
# rstudio_ml listening on port 8889
Ahora abra su navegador favorito e ingrese la dirección IP de su instancia con el puerto 8889. En mi caso ingresé http://43.206.161.48:8889 y llegué a la Sign in to RStudio
pantalla de ingreso al sistema. el nombre de usuario es rstudio
y la contraseña es password
.
los run_rstudio.sh
script que ejecutamos antes para iniciar el contenedor del servidor RStudio, se montará ~/github
a /home/rstudio/work
. Puedes modificar el run_rstudio.sh
a montar /home/ubuntu
a /home/rstudio
si lo desea, para que cuando abra RStudio pueda ver todos sus archivos locales en el panel Archivos. Dado que AWS CLI y GitHub se han configurado, puede copiar o enviar sus cambios desde la instancia a opciones de almacenamiento más persistentes (y más económicas).
Como se mencionó anteriormente, mantener un volumen 20G EBS gp2 de forma permanente (sin instantáneas) debería costar 2,4 USD al mes. Después de instalar todas las herramientas requeridas, se usó menos de 5G, por lo que puede usar un volumen de 10G para ahorrar algo de dinero si no necesita mucho espacio.
df -h
# Filesystem Size Used Avail Use% Mounted on
# /dev/root 20G 4.7G 15G 25% /
# tmpfs 2.0G 0 2.0G 0% /dev/shm
# tmpfs 785M 948K 784M 1% /run
# tmpfs 5.0M 0 5.0M 0% /run/lock
# /dev/xvda15 105M 5.3M 100M 5% /boot/efi
# tmpfs 393M 4.0K 393M 1% /run/user/1000
Otra alternativa para ahorrar algo de dinero es guardar todos los pasos de esta publicación en un script y cada vez que quiera usar RStudio, inicie una nueva instancia y ejecute el script para realizar toda la configuración requerida. Cuando haya terminado, almacene sus cambios en S3 o GitHub y luego finalice la instancia y elimine el volumen de EBS. Podemos crear una imagen de máquina de Amazon desde nuestra instancia, en lugar de configurar todas las herramientas desde cero, pero la imagen se almacena en S3 y costará un poco y no se tarda mucho en configurar todas las herramientas necesarias.
Una cosa buena sobre el volumen de EBS es que es independiente de una instancia. Por lo tanto, si necesitamos más recursos computacionales para un análisis, podemos iniciar un tipo de instancia con más recursos y montar el mismo volumen de EBS.
A t2.xlarge
instancia (4 CPU y 16G de memoria) es similar a los recursos proporcionados por un plan Cloud Premium en la nube de Posit que cuesta 0,2432 USD por hora (bajo demanda) en la región de Tokio. 200 horas en esta instancia costarán un mínimo de 48,64 USD (puede haber cargos adicionales que desconozco) para el cómputo, pero sigue siendo más económico (incluso cuando se paga por el volumen de EBS). Sin embargo, como se mencionó anteriormente, configurar nuestra propia nube de RStudio requiere mucho más trabajo y posibles sorpresas en los costos (razón por la cual debe configurar una alerta de facturación si planea usar AWS).
Finalmente, si solo estaba siguiendo esta publicación y no tiene intención de usar esta configuración, asegúrese de finalizar su instancia y de eliminar el volumen de EBS.