2011-11-17 11 views
8

Quiero iniciar un clúster de amazon EC2 para usar un back-end para el paquete foreach en R. Lo ideal es que pueda hacerlo desde la línea de comando en R en mi máquina local, enviando los datos y comandos relevantes de la sesión R local al clúster remoto.La manera más fácil de activar un clúster de Amazon EC2 para utilizarlo como un servidor anterior

Sé que el paquete AWS ayudará con esta tarea, pero realmente no sé qué hacer después de ejecutar el comando . Segue también me proporciona una parte del camino, pero no es un backend para foreach, parece que no admite AMI personalizados, y actualmente no admite Windows. También está el paquete deathstar, que no he explorado en profundidad.

¿Alguien más ha encontrado una solución a este problema?

Respuesta

6

Zach, la respuesta simple es que no hay un camino simple para allá desde aquí :)

Cuando escribí Segue esperaba que alguien no tardaría en salir con algo que haría Segue obsoleta. Cloudnumbers puede ser un día, pero probablemente todavía no. He jugado con hacer que Segue sea un backend foreach, pero como no lo uso de esa manera, mi motivación ha sido bastante baja para tomarme el tiempo de aprender a construir el back-end.

Una de las cosas que es muy prometedora, en mi opinión, es usar el paquete doRedis() con los trabajadores en Amazon EC2. doRedis utiliza un servidor Redis como controlador de tareas y luego permite a los trabajadores conectarse al servidor Redis y obtener/devolver trabajos y resultados. He estado pensando durante un tiempo que sería bueno tener una manera muy simple de implementar un clúster doRedis en EC2. Pero nadie ha escrito todavía una que yo sepa.

+0

doRedis es en realidad lo que tenía en mente cuando escribí esta pregunta. Me imagino un escenario relativamente simple: creas un AMI "trabajador" personalizado que, al arrancar, inicia R, crea n trabajadores doRedis y hace que esos trabajadores se unan a una cola redis en un DNS que posees (como desde dyndns). Luego, necesita un script R en su máquina local que apunte su DNS a su máquina local, inicie doRedis usando su cola, inicie la máquina n worker, distribuya algunos cálculos en esas máquinas y luego apague esas máquinas. O simplemente puedo esperar y esperar que alguien escriba 'doEC2' pronto ... – Zach

+1

yup, lo que describes es lo que he estado agitando mentalmente. No lo he construido aún :) –

+0

Deberías echarle un vistazo al paquete deathstar que agregué a mi pregunta. Utiliza ZMQ en lugar de redis, pero parece bastante cercano a lo que estamos buscando. – Zach

0

Parece que bioconductr tiene un slick tool para hacer girar un clúster MPI. Una vez iniciado, puede ejecutar mpi.spawn.Rslaves() y mpi.parLapply en el nodo maestro para distribuir los cálculos en el clúster. Sin embargo, no puedo encontrar la manera de hacerlo funcionar con doMPI.

Cuestiones relacionadas