Konfigurieren Sie einheitliche Instanzgruppen für Ihren Amazon EMR-Cluster - 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.

Konfigurieren Sie einheitliche Instanzgruppen für Ihren Amazon EMR-Cluster

Mit der Instance-Gruppenkonfiguration besteht jeder Knotentyp (Master-, Core- oder Aufgabenknoten) aus demselben Instance-Typ und derselben Kaufoption für Instances: On-Demand oder Spot. Sie geben diese Einstellungen beim Erstellen einer Instance-Gruppe an. Sie können später nicht mehr geändert werden. Sie können Core- und Aufgaben-Instance-Gruppen jedoch Instances desselben Typs und derselben Kaufoption hinzufügen. Außerdem können Sie Instances entfernen.

Wenn die On-Demand-Instances des Clusters den in Ihrem Konto verfügbaren Attributen der offenen Kapazitätsreservierungen (Instance-Typ, Plattform, Tenancy und Availability Zone) entsprechen, werden die Kapazitätsreservierungen automatisch angewendet. Sie können offene Kapazitätsreservierungen für Primär-, Kern- und Aufgabenknoten verwenden. Sie können jedoch keine gezielten Kapazitätsreservierungen verwenden oder verhindern, dass Instances offene Kapazitätsreservierungen mit übereinstimmenden Attributen starten, wenn Sie Cluster mithilfe von Instance-Gruppen bereitstellen. Wenn Sie gezielte Kapazitätsreservierungen verwenden oder verhindern möchten, dass Instances aufgrund offener Kapazitätsreservierungen starten, verwenden Sie stattdessen Instance-Flotten. Weitere Informationen finden Sie unter Verwenden Sie Kapazitätsreservierungen mit Instance-Flotten in Amazon EMR.

Zum Hinzufügen verschiedener Instance-Typen nach dem Erstellen eines Clusters können Sie zusätzliche Aufgaben-Instance-Gruppen hinzufügen. Sie können verschiedene Instance-Typen und Kaufoptionen für jede Instance-Gruppe auswählen. Weitere Informationen finden Sie unter Verwenden Sie die Amazon EMR-Cluster-Skalierung, um sich an wechselnde Workloads anzupassen.

Beim Starten von Instances ist die Kapazitätsreservierungspräferenz der On-Demand-Instance standardmäßig auf open gesetzt, wodurch sie in jeder offenen Kapazitätsreservierung ausgeführt werden kann, die über passende Attribute (Instance-Typ, Plattform, Verfügbarkeitszone) verfügt. Weitere Informationen über On-Demand-Kapazitätsreservierungen finden Sie unter Verwenden Sie Kapazitätsreservierungen mit Instance-Flotten in Amazon EMR.

In diesem Abschnitt wird das Erstellen eines Clusters mit einheitlichen Instance-Gruppen beschrieben. Weitere Informationen zum Ändern einer vorhandenen Instance-Gruppe durch Hinzufügen oder Entfernen von Instances manuell oder automatisch mit Auto Scaling finden Sie unter Amazon EMR-Cluster verwalten.

Die Konsole zum Konfigurieren einheitlicher Instance-Gruppen verwenden

Console
So erstellen Sie einen Cluster mit Instance-Gruppen mithilfe der neuen Konsole
  1. Melden Sie sich bei der AWS Management Console an und öffnen Sie die Amazon EMR-Konsole unter https://console.aws.amazon.com/emr.

  2. Wählen Sie EC2 im linken Navigationsbereich unter EMR on die Option Clusters und dann Create cluster aus.

  3. Wählen Sie unter Clusterkonfiguration die Option Instance-Gruppen aus.

  4. Unter Knotengruppen gibt es einen Abschnitt für jeden Knotengruppentyp. Aktivieren Sie für die Primärknotengruppe das Kontrollkästchen Mehrere Primärknoten verwenden, wenn Sie drei Primärknoten haben möchten. Aktivieren Sie das Kontrollkästchen Spot-Kaufoption verwenden, wenn Sie Spot-Kauf verwenden möchten.

  5. Wählen Sie für die Primär- und Core-Knotengruppen die Option Instance-Typ hinzufügen und wählen Sie bis zu 5 Instance-Typen aus. Wählen Sie für die Aufgabengruppe Instance-Typ hinzufügen und wählen Sie bis zu fünfzehn Instance-Typen aus. Amazon EMR kann jede beliebige Kombination dieser Instance-Typen beim Starten des Clusters bereitstellen.

  6. Wählen Sie unter jedem Knotengruppentyp das Drop-Down-Menü Aktionen neben jeder Instance aus, um diese Einstellungen zu ändern:

    EBS-Volumes hinzufügen

    Geben Sie EBS-Volumes an, die an den Instance-Typ angefügt werden sollen, nachdem Amazon EMR ihn bereitgestellt hat.

    Den maximalen Spot-Preis bearbeiten

    Geben Sie für jeden Instance-Typ in einer Flotte einen maximalen Spot-Preis an. Sie können den Preis entweder als Prozentsatz des On-Demand-Preises oder als einen bestimmten Betrag in US-Dollar festlegen. Amazon EMR stellt Spot Instances bereit, wenn der aktuelle Spot-Preis in einer Availability Zone unter Ihrem maximalen Spot-Preis liegt. Sie zahlen den Spot-Preis, nicht unbedingt den maximalen Spot-Preis.

  7. Erweitern Sie optional die Knotenkonfiguration, um eine JSON-Konfiguration einzugeben oder JSON aus Amazon S3 zu laden.

  8. Wählen Sie alle anderen Optionen aus, die für Ihren Cluster gelten.

  9. Um Ihren Cluster jetzt zu starten, wählen Sie Cluster erstellen aus.

Verwenden Sie den AWS CLI , um einen Cluster mit einheitlichen Instanzgruppen zu erstellen

Um die Instance-Gruppenkonfiguration für einen Cluster mithilfe der AWS CLI anzugeben, verwenden Sie den Befehl create-cluster zusammen mit dem Parameter --instance-groups. Amazon EMR geht von der On-Demand-Instance-Option aus, es sei denn, Sie legen das Argument BidPrice für eine Instance-Gruppe fest. Beispiele der Befehle create-cluster, mit denen einheitliche Instance-Gruppen mit On-Demand-Instances gestartet werden, und eine Vielzahl von Cluster-Optionen sehen Sie, wenn Sie aws emr create-cluster help in der Befehlszeile eingeben oder den Abschnitt create-cluster in der AWS CLI -Befehlsreferenz lesen.

Sie können die verwenden AWS CLI , um einheitliche Instanzgruppen in einem Cluster zu erstellen, die Spot-Instances verwenden. Der angebotene Spot-Preis hängt der von Availability Zone ab. Wenn Sie die CLI oder API verwenden, können Sie die Availability Zone entweder mit dem AvailabilityZone Argument (wenn Sie ein EC2 -classic-Netzwerk verwenden) oder dem SubnetID Argument des --ec2-attributes Parameters angeben. Die ausgewählte Availability Zone oder das Subnetz gilt für den Cluster und wird daher für alle Instance-Gruppen verwendet. Wenn Sie keine Availability Zone oder kein Subnetz explizit angeben, wählt Amazon EMR beim Starten des Clusters die Availability Zone mit dem niedrigsten Spot-Preis aus.

Das folgende Beispiel zeigt einen Befehl create-cluster, mit dem Primär-, Core- und zwei Aufgaben-Instance-Gruppen erstellt werden, die alle Spot Instances verwenden. myKeyErsetzen Sie es durch den Namen Ihres EC2 Amazon-Schlüsselpaars.

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 "MySpotCluster" \ --release-label emr-7.7.0 \ --use-default-roles \ --ec2-attributes KeyName=myKey \ --instance-groups \ InstanceGroupType=MASTER,InstanceType=m5.xlarge,InstanceCount=1,BidPrice=0.25 \ InstanceGroupType=CORE,InstanceType=m5.xlarge,InstanceCount=2,BidPrice=0.03 \ InstanceGroupType=TASK,InstanceType=m5.xlarge,InstanceCount=4,BidPrice=0.03 \ InstanceGroupType=TASK,InstanceType=m5.xlarge,InstanceCount=2,BidPrice=0.04

Mithilfe der CLI können Sie einheitliche Instance-Gruppen-Cluster erstellen, die für jeden Instance-Typ in der Instance-Gruppe ein eindeutiges benutzerdefiniertes AMI angeben. Auf diese Weise können Sie verschiedene Instance-Architekturen in derselben Instance-Gruppe verwenden. Jeder Instance-Typ muss ein benutzerdefiniertes AMI mit einer passenden Architektur verwenden. Sie würden beispielsweise einen m5.xlarge-Instance-Typ mit einem benutzerdefinierten X86_64-Architektur-AMI und einen m6g.xlarge-Instance-Typ mit einem entsprechenden benutzerdefinierten AWS AARCH64 (ARM)-Architektur-AMI konfigurieren.

Das folgende Beispiel zeigt einen einheitlichen Instance-Gruppen-Cluster, der mit zwei Instance-Typen erstellt wurde, von denen jeder sein eigenes benutzerdefiniertes AMI hat. Beachten Sie, dass die benutzerdefinierten AMIs Werte nur auf Instance-Typ-Ebene angegeben werden, nicht auf Cluster-Ebene. Dadurch sollen Konflikte zwischen dem Instance-Typ AMIs und einem AMI auf Cluster-Ebene vermieden werden, die dazu führen würden, dass der Clusterstart fehlschlägt.

aws emr create-cluster --release-label emr-5.30.0 \ --service-role EMR_DefaultRole \ --ec2-attributes SubnetId=subnet-22XXXX01,InstanceProfile=EMR_EC2_DefaultRole \ --instance-groups \ InstanceGroupType=MASTER,InstanceType=m5.xlarge,InstanceCount=1,CustomAmiId=ami-123456 \ InstanceGroupType=CORE,InstanceType=m6g.xlarge,InstanceCount=1,CustomAmiId=ami-234567

Sie können einer Instanzgruppe AMIs , die Sie einem laufenden Cluster hinzufügen, mehrere benutzerdefinierte Instanzen hinzufügen. Das CustomAmiId-Argument kann zusammen mit dem add-instance-groups-Befehl verwendet werden, wie im folgenden Beispiel gezeigt.

aws emr add-instance-groups --cluster-id j-123456 \ --instance-groups \ InstanceGroupType=Task,InstanceType=m5.xlarge,InstanceCount=1,CustomAmiId=ami-123456

Verwenden des Java-SDKs zum Erstellen einer Instance-Gruppe

Instanziieren Sie ein Objekt InstanceGroupConfig, das die Konfiguration einer Instance-Gruppe für einen Cluster angibt. Um Spot-Instances zu verwenden, legen Sie die Eigenschaften withBidPrice und withMarket für das Objekt InstanceGroupConfig fest. Der folgende Code zeigt, wie Primär-, Core- und Aufgaben-Instance-Gruppen definiert werden, die Spot Instances ausführen.

InstanceGroupConfig instanceGroupConfigMaster = new InstanceGroupConfig() .withInstanceCount(1) .withInstanceRole("MASTER") .withInstanceType("m4.large") .withMarket("SPOT") .withBidPrice("0.25"); InstanceGroupConfig instanceGroupConfigCore = new InstanceGroupConfig() .withInstanceCount(4) .withInstanceRole("CORE") .withInstanceType("m4.large") .withMarket("SPOT") .withBidPrice("0.03"); InstanceGroupConfig instanceGroupConfigTask = new InstanceGroupConfig() .withInstanceCount(2) .withInstanceRole("TASK") .withInstanceType("m4.large") .withMarket("SPOT") .withBidPrice("0.10");