Erstellen eines Clusters mit früheren AMI Versionen von Amazon EMR - Amazon EMR

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Erstellen eines Clusters mit früheren AMI Versionen von Amazon EMR

Die Versionen EMR 2.x und 3.x von Amazon werden je nach Version referenziertAMI. Bei EMR Amazon-Version 4.0.0 und höher werden Releases nach Release-Version referenziert, wobei ein Release-Label wie emr-5.11.0 verwendet wird. Diese Änderung ist am deutlichsten, wenn Sie einen Cluster programmgesteuert mithilfe von AWS CLI oder erstellen.

Wenn Sie den verwenden AWS CLI , um einen Cluster mithilfe einer AMI Release-Version zu erstellen, verwenden Sie die --ami-version Option, z. B. --ami-version 3.11.0 Viele Optionen, Funktionen und Anwendungen, die in Amazon EMR 4.0.0 und höher eingeführt wurden, sind nicht verfügbar, wenn Sie eine --ami-version angeben. Weitere Informationen finden Sie unter create-cluster in der AWS CLI -Befehlsreferenz.

Der folgende AWS CLI Beispielbefehl startet einen Cluster mit einer AMI Version.

Anmerkung

Linux-Zeilenfortsetzungszeichen (\) sind aus Gründen der Lesbarkeit enthalten. Sie können entfernt oder in Linux-Befehlen verwendet werden. Entfernen Sie sie unter Windows oder ersetzen Sie sie durch ein Caret-Zeichen (^).

aws emr create-cluster --name "Test cluster" --ami-version 3.11.0 \ --applications Name=Hue Name=Hive Name=Pig \ --use-default-roles --ec2-attributes KeyName=myKey \ --instance-groups InstanceGroupType=MASTER,InstanceCount=1,\ InstanceType=m3.xlarge InstanceGroupType=CORE,InstanceCount=2,\ InstanceType=m3.xlarge --bootstrap-actions Path=s3://elasticmapreduce/bootstrap-actions/configure-hadoop,\ Name="Configuring infinite JVM reuse",Args=["-m","mapred.job.reuse.jvm.num.tasks=-1"]

Programmgesteuert verwenden alle EMR Amazon-Release-Versionen die RunJobFlowRequest Aktion in der, EMR API um Cluster zu erstellen. Der folgende Java-Beispielcode erstellt einen Cluster mit der AMI Release-Version 3.11.0.

RunJobFlowRequest request = new RunJobFlowRequest() .withName("AmiVersion Cluster") .withAmiVersion("3.11.0") .withInstances(new JobFlowInstancesConfig() .withEc2KeyName("myKeyPair") .withInstanceCount(1) .withKeepJobFlowAliveWhenNoSteps(true) .withMasterInstanceType("m3.xlarge") .withSlaveInstanceType("m3.xlarge");

Der folgende RunJobFlowRequest-Aufruf verwendet stattdessen eine Versionsbezeichnung:

RunJobFlowRequest request = new RunJobFlowRequest() .withName("ReleaseLabel Cluster") .withReleaseLabel("emr-7.3.0") .withInstances(new JobFlowInstancesConfig() .withEc2KeyName("myKeyPair") .withInstanceCount(1) .withKeepJobFlowAliveWhenNoSteps(true) .withMasterInstanceType("m3.xlarge") .withSlaveInstanceType("m3.xlarge");

Konfigurieren der Cluster-Größe

Wenn Ihr Cluster ausgeführt wird, bestimmt Hadoop die Anzahl der zum Verarbeiten der Daten erforderlichen Mapper- und Reducer-Tasks. Große Cluster sollten für eine bessere Ressourcennutzung und für kürzere Verarbeitungszeiten über mehr Tasks verfügen. In der Regel bleibt ein EMR Cluster während des gesamten Clusters gleich groß. Sie legen die Anzahl der Aufgaben fest, wenn Sie den Cluster erstellen. Wenn Sie die Größe eines laufenden Clusters ändern, können Sie die Verarbeitung während der Cluster-Ausführung anpassen. Statt mit einer festen Anzahl von Tasks zu arbeiten, können Sie die Anzahl der Tasks während der Nutzungsdauer des Clusters anpassen. Es gibt zwei Konfigurationsoptionen, mit denen die ideale Anzahl von Tasks festgelegt werden kann:

  • mapred.map.tasksperslot

  • mapred.reduce.tasksperslot

Sie können beide Optionen über die mapred-conf.xml-Datei festlegen. Wenn Sie einen Auftrag an den Cluster senden, überprüft der Auftrags-Client die Gesamtanzahl der aktuell im gesamten Cluster verfügbaren Map- und Reduce-Slots. Der Auftrags-Client verwendet die folgenden Gleichungen, um die Anzahl der Tasks festzulegen:

  • mapred.map.tasks = mapred.map.tasksperslot * Map-Slots im Cluster

  • mapred.reduce.tasks = mapred.reduce.tasksperslot * Reduce-Slots im Cluster

Wenn die Anzahl der Tasks nicht konfiguriert ist, liest der Auftrags-Client nur den tasksperslot-Parameter aus. Sie können die Anzahl der Tasks jederzeit überschreiben – entweder über eine Bootstrap-Aktion für alle Cluster, oder einzeln pro Auftrag durch das Hinzufügen eines Schritts zum Ändern der Konfiguration.

Amazon EMR widersteht Ausfällen von Task-Knoten und setzt die Cluster-Ausführung fort, auch wenn ein Task-Knoten nicht mehr verfügbar ist. Amazon stellt EMR automatisch zusätzliche Task-Knoten bereit, um diejenigen zu ersetzen, die ausfallen.

Sie können für jeden Cluster-Schritt eine andere Anzahl von Aufgabenknoten nutzen. Sie können außerdem in einem ausgeführten Cluster einen Schritt hinzufügen, um die Anzahl der Aufgabenknoten zu ändern. Da alle Schritte standardmäßig sequenziell ausgeführt werden, können Sie die Anzahl der ausgeführten Aufgabenknoten für einen Schritt festlegen.