2011-11-17 25 views
8

Voglio avviare un cluster di macchina EC2 Amazon per utilizzare un backend per il pacchetto foreach in R. Idealmente, potrei fare tutto questo dalla riga di comando in R sulla macchina locale, inviando i dati e i comandi rilevanti dalla sessione R locale al cluster remoto.Il modo più semplice per creare un cluster Amazon EC2 da utilizzare come backend foreach

So che il pacchetto AWS aiuterà con questa attività, ma non so davvero cosa fare dopo aver eseguito il comando . Anche Segue mi fa diventare parte del sistema, ma non è un backend per foreach, non sembra supportare AMI personalizzate e al momento non supporta Windows. C'è anche il pacchetto deathstar, che non ho esplorato a fondo.

Qualcun altro ha trovato una soluzione a questo problema?

risposta

6

Zach, la risposta più semplice è che non c'è un percorso semplice per lì da qui :)

Quando ho scritto Segue speravo che qualcuno sarebbe presto venuto fuori con qualcosa che avrebbe fatto Segue obsoleta. I numeri della nuvola potrebbero essere un giorno, ma probabilmente non ancora. Mi sono divertito a rendere Segue un backend foreach, ma dal momento che non lo uso in questo modo, la mia motivazione è stata piuttosto bassa per dedicare del tempo ad imparare come costruire il back-end.

Una delle cose che è molto promettente, a mio parere, sta utilizzando il pacchetto doRedis() con lavoratori su Amazon EC2. doRedis utilizza un server Redis come controller dei lavori e quindi consente ai lavoratori di connettersi al server Redis e ottenere/restituire lavori e risultati. Ho pensato per un po 'che sarebbe stato bello avere un modo semplice e semplice per implementare un cluster doRedis su EC2. Ma nessuno ne ha mai scritto uno che io sappia.

+0

doRedis è in realtà quello che avevo in mente quando ho scritto questa domanda. Sto immaginando uno scenario relativamente semplice: crei un AMI "worker" personalizzato che, all'avvio, avvia R, crea n worker doRedis e fa sì che quei lavoratori si uniscano a una coda redis su un DNS che possiedi (come da dyndns). Quindi, è necessario uno script R sul computer locale che indirizzi il DNS al computer locale, avvia doRedis che utilizza la coda, avvia una macchina worker, esegue alcuni calcoli su tali computer, quindi arresta tali computer. O posso solo aspettare e spero che qualcuno scriva 'doEC2' presto ... – Zach

+1

sì, quello che descrivi è quello che sto mentalmente agitando. Non l'ho ancora costruito :) –

+0

Dovresti dare un'occhiata al pacchetto deathstar che ho aggiunto alla mia domanda. Usa ZMQ piuttosto che redis, ma sembra abbastanza vicino a quello che stiamo cercando. – Zach

0

Sembra che il bioconductr abbia un slick tool per far girare un cluster MPI. Una volta avviato, è possibile eseguire mpi.spawn.Rslaves() e mpi.parLapply sul nodo master per eseguire i calcoli della farm sul cluster. Tuttavia, non riesco a capire come farlo funzionare con doMPI.

Problemi correlati