2014-01-07 9 views
5

Ich muss einen benutzerdefinierten C++ - Job als Map Reduce auf Amazon ausführen und plante, hierfür Hadoop-Streaming zu verwenden. Die C++ - Mapper-ausführbare Datei basiert auf Dutzenden von benutzerdefinierten Bibliotheken, von denen einige zeitaufwändig zu erstellen sind.Ausführen von Amazon EMR mit einem benutzerdefinierten AMI?

Ich erwartete, dass EMR benutzerdefinierte AMIs unterstützt (bereits eine gebaut). Nach genauer Betrachtung der Dokumentation scheint es jedoch nur möglich zu sein, EMR auf vordefinierten Bildern auszuführen: http://docs.aws.amazon.com/ElasticMapReduce/latest/DeveloperGuide/emr-cli-commands.html.

Fehle ich etwas? Wenn tatsächlich nur vordefinierte AMIs unterstützt werden, was ist die beste Option, um dies auszuführen? Die ausführbare Datei ist offensichtlich auf s3, aber kann ich sie tatsächlich bündeln, so dass es auf keine gemeinsam genutzten Bibliotheken ankommt?

Danke.

Antwort

1

Ich untersuche das gleiche auch. Basierend auf dem ersten Blick auf die Dokumentation die beste Option, um dies zu erreichen ist, indem benutzerdefinierte Bootstrap-Optionen.

http://docs.aws.amazon.com/ElasticMapReduce/latest/DeveloperGuide/emr-plan-bootstrap.html

für uns jedoch wird es 15-20 Minuten dauert das benutzerdefinierte Skript auszuführen. Ich hoffe, dass es eine Möglichkeit gibt, das AMI anzupassen und erforderliche Software in AMI hinzuzufügen, anstatt es auf jedem Knoten zu installieren, wenn sie auftauchen.

4

Sie haben aufgrund der vielen Softwaretools und -konfigurationen, die für einen Hadoop-Clusterknoten erforderlich sind, recht, dass nur von Amazon bereitgestellte AMI auf EMR zulässig sind. http://docs.aws.amazon.com/ElasticMapReduce/latest/DeveloperGuide/emr-plan-ami.html

Sie können Standard-Bootstrapping-Techniken verwenden, um zusätzliche Software zu installieren, die Sie für die Ausführung auf Ihrem Cluster benötigen. Weitere Informationen zu Bootstrap-Aktionen finden Sie unter http://docs.aws.amazon.com/ElasticMapReduce/latest/DeveloperGuide/emr-plan-bootstrap.html.

Zurück zu Ihrem Anwendungsfall: Warum dauert der Bootstrap in Ihrem Anwendungsfall so lange? Weil es viele Pakete gibt? Weil du sie aus der Quelle kompilierst?

Im letzteren Fall könnte es sich lohnen, Ihre .deb-Pakete zu erstellen und sie aus einem benutzerdefinierten Repository zu installieren, um den Bootstrap-Prozess zu beschleunigen.

Wenn es nur weil Sie viele Pakete zu installieren haben, ich fürchte, es gibt keine offensichtliche Lösung heute. Ich kann mir vorstellen, dass EBS Snapshots und Volumes während des Bootstrap erstellt und angehängt werden - aber die Machbarkeit hängt wirklich von Ihrem Anwendungsfall ab.

2

Benutzerdefinierte AMIs ist in der Tat ein sehr interessanter Anwendungsfall. Eine Option für Sie wäre die Verwendung von Qubole, die integrierte Unterstützung für benutzerdefinierte AMIs bietet, wo Sie alle notwendigen Bibliotheken mit allen coolen Funktionen von Qubole wie Unterstützung für Autoscaling, Spot-Instanzen und vieles mehr installieren können!

Haftungsausschluss: Ich arbeite für Qubole.

Verwandte Themen