Dies ist eher eine Anfängerfrage. Sagen wir, ich habe den folgenden Code:
%Vor%Dieser Code wird dann auf 16 Kernen ausgeführt, sofern sie verfügbar sind. Wenn ich nun richtig verstehe, mit Amazon EC2, auf einer Instanz, bekomme ich je nach Instanz nur wenige Kerne. Wenn ich also Simulationen auf 16 Kernen durchführen möchte, muss ich mehrere Instanzen verwenden, was soviel wie ich weiß, neue R-Prozesse startet. Aber dann muss ich außerhalb von R zusätzlichen Code schreiben, um die Ergebnisse zu sammeln.
Meine Frage ist also, gibt es ein R-Paket, das EC2-Instanzen von R aus starten kann, automatisch die Last zwischen diesen Instanzen verteilt und die Ergebnisse im initialisierten R zusammenfasst?
Um genau zu sein, der maximale Instanztyp auf EC2 ist derzeit 8 Kerne, so dass jeder, selbst Benutzer von R, mehrere Instanzen benötigen würde, um gleichzeitig auf mehr als 8 Kernen laufen zu können.
Wenn Sie mehr Instanzen verwenden möchten, haben Sie zwei Optionen zum Bereitstellen von R: "regulären" R-Aufrufen oder MapReduce-Aufrufen. Im ersten Fall müssen Sie Code zum Starten von Instanzen, zum Verteilen von Aufgaben (z. B. die unabhängigen Iterationen in foreach
), zum Zurückgeben von Ergebnissen usw. einrichten. Dies ist machbar, aber Sie werden es wahrscheinlich nicht genießen. In diesem Fall können Sie mit rmr
oder RHipe
ein MapReduce-Raster verwalten oder mit snow
und vielen anderen HPC-Werkzeugen ein einfaches Raster erstellen. Die Verwendung von snow
kann es einfacher machen, Ihren Code intakt zu halten, aber Sie müssen lernen, wie Sie diese Dinge zusammenbinden können.
Im letzteren Fall können Sie auf der Infrastruktur aufbauen, die Amazon bereitgestellt hat, wie zum Beispiel Elastic MapReduce (EMR) und Pakete, die das einfacher machen, wie zum Beispiel JD's segue
. Ich würde segue
als einen guten Startpunkt empfehlen, wie andere es getan haben, da es eine sanftere Lernkurve hat. Der Entwickler ist auch auf SO, also kannst du ihn leicht
Tags und Links r amazon-ec2