r - paso - windows 10
multi-computadora makePSOCKcluster en Windows: creación de una guía paso a paso (1)
En el mejor de los casos, esta es una respuesta parcial. Todavía no estoy estableciendo un clúster, pero los pasos que se describen aquí son un buen registro de cómo llegué a este punto.
CONFIGURACIONES:
- Instalar PuTTY en ''equipo remoto''
- Instalar el servidor SSH en ''remote-computer''
- Instale R en ''remote-computer'' (Use la misma versión de R que en ''localhost'')
Agregue R a la RUTA
Instalar PuTTY en ''localhost''
- Instale R en ''localhost''
- Agregue R a la RUTA
PRUEBA DE LA CONEXIÓN: FASE I
- Desde la línea de comando, ejecuta
C:/PuTTYPath/plink.exe -pw [password] [username]@[remote_ip_address] Rscript -e rnorm(100)
(Confirmar el retorno de 100 variables aleatorias normales
- Desde la línea de comando, ejecuta
C:/PuTTYPath/plink.exe -pw [password] [username]@[remoate_ip_address] RScript -e parallel:::.slaveRSOCK() MASTER=[local_ip_address] PORT=100501 OUT=/dev/null TIMEOUT=2592000 METHODS=TRUE XDR=TRUE
(Confirme que se inicia una sesión en los registros del servidor SSH en ''remote-computer'')
PRUEBA DE LA CONEXIÓN: FASE II
Desde una sesión R, ejecuta
system(paste0("C:/PuTTYPath/plink.exe -pw [password] ", "[username]@[remote_ip_address] ", "RScript -e rnorm(100)"))
(Confirme el retorno de 100 variables aleatorias normales)
Desde una sesión R, ejecuta
system(paste0("C:/PuTTY/plink.exe ", "-pw [password] ", "[username]@[remote_ip_address] ", "RScript -e parallel:::.slaveRSOCK() ", "MASTER=[local_ip_address] ", "PORT=100501 ", "OUT=/dev/null ", "TIMEOUT=2592000 ", "METHODS=TRUE ", "XDR=TRUE"))
(Confirme que una sesión se inicia y se mantiene en los registros del servidor SSH en "computadora remota")
ESTABLECER UN CLUSTER
Desde una sesión R, ejecuta
library(snow)
cl <- makeCluster(spec = c("localhost", "[remote_ip_address]"), rshcmd = "C:/PuTTY/plink.exe -pw [password]", host = "[local_ip_address]")
(Se debe iniciar y mantener una sesión en los registros del servidor SSH en ''equipo remoto''. Idealmente, la función se completará en ''cl'' se asignará)
Establecer el clúster es el punto en el que estoy fallando. makeCluster
y miro mis registros de servidor SSH. Muestra que se realiza una conexión y luego se cierra inmediatamente. makeCluster
nunca termina de ejecutarse, cl
no está asignado, y estoy atascado sobre cómo continuar. Ni siquiera estoy seguro de si esto es un problema R o un problema de configuración en este momento.
EDITACIÓN Y RESOLUCIÓN:
Sin una buena razón, intenté ejecutar esto con el paquete de snow
, como se muestra en la sección "Establecer un clúster" más arriba. Cuando utilicé el paquete de snow
, el clúster se construye y funciona de manera estable. No estoy seguro de por qué no pude hacer que esto funcione con el paquete parallel
, pero al menos tengo algo funcional.
He estado intentando construir un clúster usando múltiples computadoras durante tres días y he fallado espectacularmente. Así que ahora voy a tratar de matarte un montón para resolver mi problema. Si todo va bien, espero que podamos generar una guía paso a paso para utilizar como referencia para hacer esto en el futuro, porque hasta el momento, no he logrado encontrar una referencia decente para configurar esto ( tal vez es una tarea demasiado específica?)
En mi caso, supongamos que Windows 7, con PuTTY como el cliente SSH, y ''localhost'' va a servir como el maestro.
Además, supongamos que solo dos computadoras en la misma red por ahora. Imagino que el proceso se generalizará con la suficiente facilidad que si logro que funcione en dos computadoras, puedo hacer que funcione en tres. Entonces, trabajaremos en localhost
y remote-computer
.
Esto es lo que he reunido hasta ahora (con referencias vinculadas en la parte inferior)
- Instalar PuTTY en
localhost
. - Instalar PuTTY en
remote-computer
- Instale un servidor SSH en
remote-computer
- ¿Asignarle un puerto para escuchar? (No estoy seguro acerca de este paso)
- Instale R en
localhost
- Instale la misma versión de R en
remote-computer
- Agregue R a la variable de entorno PATH en
localhost
yremote-computer
- Ejecute el código R a continuación desde
localhost
código:
library(parallel)
cl <- makePSOCKcluster(c(rep("localhost", 2),
rep("remote-computer", 2)))
Hasta ahora, he realizado los pasos 1 a 3, no estoy seguro de si necesito hacer 4, hice 5-7 y el código para el paso 8 simplemente se cuelga indefinidamente.
Cuando reviso los registros de mi servidor SSH, no parece que vaya al servidor SSH desde localhost
. Entonces parece que mi primer problema es configurar el SSH correctamente. ¿Alguien ha tenido éxito al hacer esto y estarías dispuesto a compartir tu experiencia?
EDITAR Vaya: referencias http://www.milanor.net/blog/wp-content/uploads/2013/10/03.FirstStepinParallelComputing.pdf
R Paralelo: conectando a núcleos remotos
https://stat.ethz.ch/pipermail/r-sig-hpc/2010-October/000780.html