Instance-Flotten konfigurieren - 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.

Instance-Flotten konfigurieren

Anmerkung

Die Konfiguration der Instance-Flotten ist nur in EMR Amazon-Versionen 4.8.0 und höher verfügbar, mit Ausnahme von 5.0.0 und 5.0.3.

Mit der Instance-Flottenkonfiguration für EMR Amazon-Cluster können Sie eine Vielzahl von Bereitstellungsoptionen für EC2 Amazon-Instances auswählen und eine flexible und elastische Ressourcenstrategie für jeden Knotentyp in Ihrem Cluster entwickeln.

In einer Instance-Flottenkonfiguration geben Sie eine Zielkapazität für On-Demand-Instances und Spot Instances innerhalb jeder Flotte an. Wenn der Cluster gestartet wird, stellt Amazon EMR Instances bereit, bis die Ziele erfüllt sind. Wenn Amazon aufgrund einer Preiserhöhung oder eines Instance-Fehlers eine Spot-Instance in einem laufenden Cluster EC2 zurückfordert, EMR versucht Amazon, die Instance durch einen der von Ihnen angegebenen Instance-Typen zu ersetzen. Dies erleichtert die Wiedererlangung der Kapazität während eines Anstiegs der Spot-Preise.

Sie können maximal fünf EC2 Amazon-Instance-Typen pro Flotte angeben, die Amazon EMR bei der Erfüllung der Ziele verwendet, oder maximal 30 EC2 Amazon-Instance-Typen pro Flotte, wenn Sie einen Cluster mit AWS CLI oder Amazon EMR API und einer Zuweisungsstrategie für On-Demand- und Spot-Instances erstellen.

Sie können auch mehrere Subnetze für verschiedene Availability Zones auswählen. Wenn Amazon den Cluster EMR startet, durchsucht es diese Subnetze nach den von Ihnen angegebenen Instances und Kaufoptionen. Wenn Amazon ein AWS großes Ereignis in einer oder mehreren Availability Zones EMR feststellt, versucht Amazon EMR automatisch, den Verkehr von den betroffenen Availability Zones wegzuleiten und versucht, neue Cluster zu starten, die Sie entsprechend Ihrer Auswahl in alternativen Availability Zones erstellen. Beachten Sie, dass die Auswahl der Cluster-Availability-Zone nur bei der Cluster-Erstellung erfolgt. Bestehende Clusterknoten werden bei einem Ausfall der Availability Zone nicht automatisch in einer neuen Availability Zone neu gestartet.

Überlegungen zur Arbeit mit Instance-Flotten

Beachten Sie die folgenden Punkte, wenn Sie Instance-Flotten mit Amazon EMR verwenden.

  • Sie können eine Instance-Flotte haben, und zwar nur eine pro Knotentyp (Primär, Core, Aufgabe). Sie können bis zu fünf EC2 Amazon-Instance-Typen für jede Flotte auf der angeben AWS Management Console (oder maximal 30 Typen pro Instance-Flotte, wenn Sie einen Cluster mit AWS CLI oder Amazon EMR API und an erstellenZuweisungsstrategie für Flotten).

  • Amazon EMR wählt einen oder alle der angegebenen EC2 Amazon-Instance-Typen aus, um sowohl Spot- als auch On-Demand-Kaufoptionen bereitzustellen.

  • Legen Sie Zielkapazitäten für Spot- und On-Demand-Instances für die Core- und Aufgaben-Flotte fest. Verwenden Sie v CPU oder eine generische Einheit, die jeder EC2 Amazon-Instance zugewiesen ist, die auf die Ziele angerechnet wird. Amazon EMR stellt Instances bereit, bis jede Zielkapazität vollständig erfüllt ist. Für die Primär-Flotte ist das Ziel immer auf 1 gesetzt.

  • Sie können ein Subnetz (Availability Zone) oder einen Bereich auswählen. Wenn Sie sich für einen Bereich entscheiden, stellt Amazon EMR die Kapazität in der Availability Zone bereit, die am besten zu Ihnen passt.

  • Hinweise zum Angeben der Zielkapazität für Spot-Instances:

    • Bestimmen Sie für jeden Instance-Typ einen maximalen Spot-Preis. Amazon stellt EMR Spot-Instances bereit, wenn der Spot-Preis unter dem maximalen Spot-Preis liegt. Sie zahlen den Spot-Preis, nicht unbedingt den maximalen Spot-Preis.

    • Für jede Flotte definieren Sie einen Timeout-Zeitraum für die Bereitstellung von Spot-Instances. Wenn Amazon keine Spot-Kapazität bereitstellen EMR kann, können Sie den Cluster beenden oder stattdessen zur Bereitstellung von On-Demand-Kapazität wechseln. Dies gilt nur für die Bereitstellung von Clustern, nicht für deren Größenänderung. Wenn der Timeout-Zeitraum während der Größenänderung des Clusters endet, werden Spot-Anfragen, die nicht bereitgestellt wurden, für ungültig erklärt, ohne dass sie auf On-Demand-Kapazität übertragen werden.

  • Für jede Flotte können Sie eine der folgenden Zuweisungsstrategien für Ihre Spot-Instances angeben: preiskapazitätsoptimiert, kapazitätsoptimiert capacity-optimized-prioritized, kostengünstigster Preis oder diversifiziert über alle Pools hinweg.

  • Für jede Flotte können Sie die folgenden Zuweisungsstrategien für Ihre On-Demand-Instances anwenden: die Strategie mit dem niedrigsten Preis oder die Strategie mit Priorität.

  • Für jede Flotte mit On-Demand-Instances können Sie wählen, ob Sie Optionen zur Kapazitätsreservierung anwenden möchten.

  • Wenn Sie eine Zuweisungsstrategie für Instance-Flotten verwenden, sollten Sie bei der Auswahl von Subnetzen für Ihren EMR Cluster die folgenden Überlegungen beachten:

    • Wenn Amazon EMR einen Cluster mit einer Task-Flotte bereitstellt, filtert es Subnetze heraus, denen genügend verfügbare IP-Adressen fehlen, um alle Instances des angeforderten EMR Clusters bereitzustellen. Dazu gehören IP-Adressen, die für die Primär-, Kern- und Task-Instance-Flotten beim Cluster-Start erforderlich sind. Amazon nutzt EMR dann seine Zuweisungsstrategie, um den Instance-Pool auf der Grundlage des Instance-Typs und der verbleibenden Subnetze mit ausreichend IP-Adressen zu bestimmen, um den Cluster zu starten.

    • Wenn Amazon aufgrund unzureichender verfügbarer IP-Adressen EMR nicht den gesamten Cluster starten kann, versucht Amazon, Subnetze mit ausreichend freien IP-Adressen zu identifizieren, um die wesentlichen (Kern- und primären) Instance-Flotten zu starten. In solchen Szenarien wird Ihre Task-Instance-Flotte in einen angehaltenen Zustand versetzt, anstatt den Cluster mit einem Fehler zu beenden.

    • Wenn keines der angegebenen Subnetze genügend IP-Adressen für die Bereitstellung der wichtigsten Core- und primären Instance-Flotten enthält, schlägt der Clusterstart mit einem _ fehl. VALIDATION ERROR Dadurch wird ein Ereignis mit einem CRITICALschwerwiegenden Clusterabbruch ausgelöst, das Sie darüber informiert, dass der Cluster nicht gestartet werden kann. Um dieses Problem zu vermeiden, empfehlen wir, die Anzahl der IP-Adressen in Ihren Subnetzen zu erhöhen.

  • Wenn Sie On-Demand-Instances starten, können Sie offene oder gezielte Kapazitätsreservierungen für Primär-, Kern- und Task-Knoten in Ihren Konten verwenden. Bei On-Demand-Instances mit einer Zuweisungsstrategie für Instance-Flotten ist die Kapazität möglicherweise nicht ausreichend. Wir empfehlen, dass Sie mehrere Instance-Typen angeben, um zu diversifizieren und das Risiko einer unzureichenden Kapazität zu verringern. Weitere Informationen finden Sie unter Kapazitätsreservierungen mit Instance-Flotten verwenden.

Instance-Flotten-Optionen

Verwenden Sie die folgenden Richtlinien, um Instance-Flotten-Optionen zu verstehen.

Festlegen von Zielkapazitäten

Geben Sie die Zielkapazitäten für die Core- und Aufgaben-Flotte an. Wenn Sie dies tun, bestimmt dies die Anzahl der On-Demand-Instances und Spot-Instances, die Amazon EMR bereitstellt. Wenn Sie eine Instance angeben, können Sie entscheiden, wie viel jede Instance beim Ziel mit eingerechnet wird. Wenn eine On-Demand-Instance bereitgestellt wird, wird sie beim On-Demand-Ziel mit eingerechnet. Dies gilt auch für Spot-Instances. Im Gegensatz zu Core- und Aufgaben-Flotten besteht die Primär-Flotte immer aus einer Instance. Daher ist die Zielkapazität für diese Flotte immer auf 1 gesetzt.

Wenn Sie die Konsole verwenden, werden standardmäßig die vom EC2 Amazon-Instance-Typ als Anzahl für die Zielkapazitäten verwendet. vCPUs Sie können dies in Generische Einheiten ändern und dann die Anzahl für jeden EC2 Instance-Typ angeben. Wenn Sie den verwenden AWS CLI, weisen Sie jedem Instanztyp manuell generische Einheiten zu.

Wichtig

Wenn Sie mithilfe von einen Instanztyp auswählen AWS Management Console, entspricht die Anzahl von v, die für jeden Instanztyp CPU angezeigt wird, der Anzahl der YARN virtuellen Kerne für diesen Instanztyp, nicht der Anzahl von EC2 vCPUs für diesen Instanztyp. Weitere Informationen zur Anzahl der vCPUs einzelnen Instance-Typen finden Sie unter EC2Amazon-Instance-Typen.

Für jede Flotte geben Sie bis zu fünf EC2 Amazon-Instance-Typen an. Wenn Sie einen verwenden Zuweisungsstrategie für Flotten und mit dem AWS CLI oder Amazon einen Cluster erstellen EMRAPI, können Sie bis zu 30 EC2 Instance-Typen pro Instance-Flotte angeben. Amazon EMR wählt eine beliebige Kombination dieser EC2 Instance-Typen, um Ihre Zielkapazitäten zu erfüllen. Da Amazon die Zielkapazität vollständig füllen EMR möchte, kann es zu einer Überschreitung kommen. Wenn es beispielsweise zwei nicht ausgefüllte Einheiten gibt und Amazon nur eine Instance mit einer Anzahl von fünf Einheiten bereitstellen EMR kann, wird die Instance trotzdem bereitgestellt, was bedeutet, dass die Zielkapazität um drei Einheiten überschritten wird.

Wenn Sie die Zielkapazität reduzieren, um die Größe eines laufenden Clusters zu ändern, EMR versucht Amazon, Anwendungsaufgaben abzuschließen und beendet Instances, um das neue Ziel zu erreichen. Weitere Informationen finden Sie unter Beendigung bei Aufgaben-Abschluss.

Start-Optionen

Für Spot Instances können Sie einen maximalen Spot-Preis für jeden Instance-Typ in einer Flotte angeben. Sie können den Preis entweder als Prozentsatz des On-Demand-Preises oder als einen bestimmten Betrag in US-Dollar festlegen. Amazon stellt EMR 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.

Anmerkung

Spot-Instances mit definierter Laufzeit (auch Spot-Blöcke genannt) stehen Neukunden ab dem 1. Juli 2021 nicht mehr zur Verfügung. Für Kunden, die diese Funktion bereits genutzt haben, werden wir Spot-Instances mit einer definierten Laufzeit bis zum 31. Dezember 2022 weiterhin unterstützen.

In Amazon EMR 5.12.1 und höher verfügbar, haben Sie die Möglichkeit, Spot- und On-Demand-Instance-Flotten mit optimierter Kapazitätszuweisung zu starten. Diese Option für die Zuweisungsstrategie kann in der alten Version AWS Management Console oder mithilfe von festgelegt werden. API RunJobFlow Beachten Sie, dass Sie die Zuweisungsstrategie in der neuen-Konsole nicht anpassen können. Für die Verwendung der Option „Zuweisungsstrategie“ sind zusätzliche Berechtigungen für Servicerollen erforderlich. Wenn Sie die standardmäßige EMR Amazon-Servicerolle und die verwaltete Richtlinie (EMR_DefaultRoleundAmazonEMRServicePolicy_v2) für den Cluster verwenden, sind die Berechtigungen für die Option Zuweisungsstrategie bereits enthalten. Wenn Sie nicht die standardmäßige EMR Amazon-Servicerolle und die verwaltete Richtlinie verwenden, müssen Sie sie hinzufügen, um diese Option nutzen zu können. Siehe Servicerolle für Amazon EMR (EMRRolle).

Weitere Informationen zu Spot-Instances finden Sie unter Spot-Instances im EC2 Amazon-Benutzerhandbuch. Weitere Informationen zu On-Demand-Instances finden Sie unter On-Demand-Instances im EC2 Amazon-Benutzerhandbuch.

Wenn Sie On-Demand-Instance-Flotten mit der Zuweisungsstrategie zum niedrigsten Preis starten möchten, haben Sie die Möglichkeit, Kapazitätsreservierungen zu verwenden. Optionen zur Kapazitätsreservierung können über Amazon festgelegt werden EMR APIRunJobFlow. Für Kapazitätsreservierungen sind zusätzliche Berechtigungen für Servicerollen erforderlich, die Sie hinzufügen müssen, um diese Optionen nutzen zu können. Siehe Zuweisungsstrategie-Berechtigungen. Beachten Sie, dass Sie Kapazitätsreservierungen in der neuen Konsole nicht anpassen können.

Optionen für mehrere Subnetze (Availability Zones)

Wenn Sie Instance-Flotten verwenden, können Sie mehrere EC2 Amazon-Subnetze innerhalb einer angebenVPC, die jeweils einer anderen Availability Zone entsprechen. Wenn Sie EC2 -Classic verwenden, geben Sie Availability Zones explizit an. Amazon EMR identifiziert die beste Availability Zone zum Starten von Instances gemäß Ihren Flottenspezifikationen. Instances werden immer nur in einer Availability Zone bereitgestellt. Sie können private Subnetze oder öffentliche Subnetze auswählen, aber Sie können beide nicht mischen, und die von Ihnen angegebenen Subnetze müssen sich innerhalb derselben befinden. VPC

Hauptknoten-Konfiguration

Da die Primär-Instance-Flotte ist nur eine einzelne Instance ist, unterscheidet sich ihre Konfiguration etwas von Core- und Task-Instance-Flotten. Wählen Sie entweder On-Demand oder Spot für die Primär-Instance-Flotte aus, da sie nur aus einer Instance besteht. Wenn Sie die Konsole verwenden, um die Instance-Flotte zu erstellen, wird die Zielkapazität für die Kaufoption, die Sie auswählen, auf "1" festgelegt. Wenn Sie die verwenden AWS CLI, legen Sie je nach Bedarf immer entweder TargetSpotCapacity oder TargetOnDemandCapacity auf 1 fest. Sie können weiterhin bis zu fünf Instance-Typen für die primäre Instance-Flotte wählen (oder maximal 30, wenn Sie die Zuweisungsstrategie-Option für On-Demand- oder Spot Instances verwenden). Im Gegensatz zu Core- und Task-Instance-Flotten, bei denen Amazon EMR möglicherweise mehrere Instances unterschiedlichen Typs bereitstellt, EMR wählt Amazon jedoch einen einzigen Instance-Typ für die Bereitstellung für die primäre Instance-Flotte aus.

Zuweisungsstrategie für Flotten

Mit den EMR Amazon-Versionen 5.12.1 und höher können Sie die Option für die Zuweisungsstrategie mit On-Demand-Instances und Spot-Instances für jeden Clusterknoten verwenden. Wenn Sie einen Cluster mithilfe der AWS CLI Amazon- oder EMR API EMR Amazon-Konsole mit einer Zuweisungsstrategie erstellen, können Sie bis zu 30 EC2 Amazon-Instance-Typen pro Flotte angeben. Mit der standardmäßigen Konfiguration der EMR Amazon-Cluster-Instance-Flotte können Sie bis zu 5 Instance-Typen pro Flotte verwenden. Wir empfehlen Ihnen, die Option für die Zuweisungsstrategie zu verwenden, um eine schnellere Cluster-Bereitstellung, eine genauere Spot-Instance-Zuweisung und weniger Spot Instance-Unterbrechungen zu erzielen.

Zuweisungsstrategie mit On-Demand-Instances

Die folgenden Zuweisungsstrategien sind für Ihre On-Demand-Instances verfügbar:

lowest-price(Standard)

Bei der Zuweisungsstrategie mit dem niedrigsten Preis werden On-Demand-Instances aus dem Pool mit dem niedrigsten Preis gestartet, der über verfügbare Kapazität verfügt. Wenn der Pool mit dem niedrigsten Preis keine verfügbare Kapazität hat, stammen die On-Demand-Instances aus dem Pool mit dem nächstniedrigsten Preis und verfügbarer Kapazität.

prioritized

Mit der priorisierten Zuweisungsstrategie können Sie für jeden Instance-Typ Ihrer Instance-Flotte einen Prioritätswert angeben. Amazon EMR startet Ihre On-Demand-Instances mit der höchsten Priorität. Wenn Sie diese Strategie verwenden, müssen Sie die Priorität für mindestens einen Instance-Typ konfigurieren. Wenn Sie den Prioritätswert für einen Instance-Typ nicht konfigurieren, EMR weist Amazon diesem Instance-Typ die niedrigste Priorität zu. Jede Instance-Flotte (primär, Core oder Task) in einem Cluster kann für einen bestimmten Instance-Typ einen anderen Prioritätswert haben.

Anmerkung

Wenn Sie die capacity-optimized-prioritizedSpot-Zuweisungsstrategie verwenden, EMR wendet Amazon bei der Festlegung von Prioritäten dieselben Prioritäten sowohl auf Ihre On-Demand-Instances als auch auf Spot-Instances an.

Zuweisungsstrategie mit Spot Instances

Für Spot Instances können Sie aus einer der folgenden Zuweisungsstrategien wählen:

price-capacity-optimized (empfohlen)

Bei der preis-kapazitätsoptimierten Zuweisungsstrategie werden Spot Instances aus den Spot Instance-Pools gestartet, die über die höchste verfügbare Kapazität und den niedrigsten Preis für die Anzahl der zu startenden Instances verfügen. Aus diesem Grund bietet die Strategie mit optimierter Preis- und Kapazitätsoptimierung in der Regel eine höhere Wahrscheinlichkeit, Spot-Kapazität zu erhalten, und führt zu niedrigeren Unterbrechungsraten. Dies ist die Standardstrategie für EMR Amazon-Versionen 6.10.0 und höher.

capacity-optimized

Die kapazitätsoptimierte Zuweisungsstrategie startet Spot Instances in den am meisten verfügbaren Pools mit der geringsten Wahrscheinlichkeit einer kurzfristigen Unterbrechung. Dies ist eine gute Option für Workloads, bei denen Unterbrechungen aufgrund von Neustarts von Aufgaben höhere Kosten verursachen. Dies ist die Standardstrategie für EMR Amazon-Versionen 6.9.0 und niedriger.

capacity-optimized-prioritized

Mit der capacity-optimized-prioritized Zuweisungsstrategie können Sie für jeden Instance-Typ in Ihrer Instance-Flotte einen Prioritätswert angeben. Amazon EMR optimiert zunächst die Kapazität, berücksichtigt jedoch die Prioritäten des Instance-Typs nach bestem Wissen und Gewissen, z. B. wenn die Priorität die Fähigkeit der Flotte, optimale Kapazität bereitzustellen, nicht wesentlich beeinträchtigt. Wir empfehlen diese Option, wenn Sie Workloads haben, die möglichst wenig unterbrochen werden müssen und dennoch bestimmte Instance-Typen benötigt werden. Wenn Sie diese Strategie verwenden, müssen Sie die Priorität für mindestens einen Instance-Typ konfigurieren. Wenn Sie für keinen Instance-Typ eine Priorität konfigurieren, EMR weist Amazon diesem Instance-Typ den niedrigsten Prioritätswert zu. Jede Instance-Flotte (primär, Core oder Task) in einem Cluster kann für einen bestimmten Instance-Typ einen anderen Prioritätswert haben.

Anmerkung

Wenn Sie die priorisierte On-Demand-Zuweisungsstrategie verwenden, EMR wendet Amazon bei der Festlegung von Prioritäten den gleichen Prioritätswert sowohl auf Ihre On-Demand-Instances als auch auf Ihre Spot-Instances an.

diversified

Mit der diversifizierten Zuweisungsstrategie EC2 verteilt Amazon Spot-Instances auf alle Spot-Kapazitätspools.

lowest-price

Bei der preisgünstigsten Zuweisungsstrategie werden Spot Instances aus dem preisgünstigsten Pool mit verfügbarer Kapazität gestartet. Wenn der günstigste Pool keine verfügbare Kapazität aufweist, kommen die Spot Instances aus dem nächstgünstigsten Pool mit verfügbarer Kapazität. Wenn die Kapazität eines Pools knapp wird, bevor er die von Ihnen angeforderte Kapazität erfüllt, greift die EC2 Amazon-Flotte auf den Pool mit dem nächstniedrigsten Preis zurück, um Ihre Anfrage weiter zu bearbeiten. Damit die gewünschte Kapazität auf jeden Fall erreicht wird, erhalten Sie möglicherweise Spot-Instances aus mehreren Pools. Da diese Strategie nur den Instance-Preis und nicht die Kapazitätsverfügbarkeit berücksichtigt, kann es zu hohen Unterbrechungsraten kommen.

Zuweisungsstrategie-Berechtigungen

Für die Option „Zuweisungsstrategie“ sind mehrere IAM Berechtigungen erforderlich, die automatisch in der standardmäßigen EMR Amazon-Servicerolle und der von Amazon EMR verwalteten Richtlinie (EMR_DefaultRoleundAmazonEMRServicePolicy_v2) enthalten sind. Wenn Sie eine benutzerdefinierte Servicerolle oder eine verwaltete Richtlinie für Ihren Cluster verwenden, müssen Sie diese Berechtigungen hinzufügen, bevor Sie den Cluster erstellen. Weitere Informationen finden Sie unter Zuweisungsstrategie-Berechtigungen.

Optionale On-Demand-Kapazitätsreservierungen (ODCRs) sind verfügbar, wenn Sie die Option für die On-Demand-Zuweisungsstrategie verwenden. Mit den Optionen zur Kapazitätsreservierung können Sie angeben, ob reservierte Kapazität zuerst für EMR Amazon-Cluster verwendet werden soll. Auf diese Weise können Sie sicherstellen, dass Ihre kritischen Workloads die Kapazität nutzen, die Sie bereits mit Open oder Targeted ODCRs reserviert haben. Bei unkritischen Workloads können Sie in den Einstellungen für die Kapazitätsreservierung angeben, ob reservierte Kapazität verbraucht werden soll.

Kapazitätsreservierungen können nur von Instances verwendet werden, die ihren Attributen (Instance-Typ, Plattform und Availability Zone) entsprechen. Standardmäßig werden offene Kapazitätsreservierungen automatisch von Amazon verwendet, EMR wenn On-Demand-Instances bereitgestellt werden, die den Instance-Attributen entsprechen. Wenn Sie keine laufenden Instances haben, die den Attributen der Kapazitätsreservierungen entsprechen, bleiben diese ungenutzt, bis Sie eine Instance starten, die ihren Attributen entspricht. Wenn Sie beim Starten Ihres Clusters keine Kapazitätsreservierungen verwenden möchten, müssen Sie in den Startoptionen die Einstellung „Kapazitätsreservierung“ auf Keine setzen.

Sie können jedoch auch eine Kapazitätsreservierung für bestimmte Workloads festlegen. Auf diese Weise können Sie explizit steuern, welche Instances in der reservierten Kapazität ausgeführt werden dürfen. Weitere Informationen über On-Demand-Kapazitätsreservierungen finden Sie unter Kapazitätsreservierungen mit Instance-Flotten verwenden.

Erforderliche IAM Berechtigungen für eine Zuweisungsstrategie

Ihre Servicerolle für Amazon EMR (EMRRolle) benötigen zusätzliche Berechtigungen, um einen Cluster zu erstellen, der die Zuweisungsstrategieoption für On-Demand-Instance-Flotten oder Spot-Instance-Flotten verwendet.

Wir nehmen diese Berechtigungen automatisch in die standardmäßige EMR Amazon-Servicerolle EMR_DefaultRoleund die von Amazon EMR verwaltete Richtlinie auf AmazonEMRServicePolicy_v2.

Wenn Sie eine benutzerdefinierte Servicerolle oder eine verwaltete Richtlinie für Ihren Cluster verwenden, müssen Sie die folgenden Berechtigungen hinzufügen:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ec2:DeleteLaunchTemplate", "ec2:CreateLaunchTemplate", "ec2:DescribeLaunchTemplates", "ec2:CreateLaunchTemplateVersion", "ec2:CreateFleet" ], "Resource": "*" } }

Die folgenden Berechtigungen für Servicerollen sind erforderlich, um einen Cluster zu erstellen, der offene oder gezielte Kapazitätsreservierungen verwendet. Sie müssen diese Berechtigungen zusätzlich zu den Berechtigungen angeben, die für die Verwendung der Zuweisungsstrategie-Option erforderlich sind.

Beispiel Richtliniendokument für Kapazitätsreservierungen für Servicerollen

Um offene Kapazitätsreservierungen verwenden zu können, müssen Sie die folgenden zusätzlichen Berechtigungen angeben.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ec2:DescribeCapacityReservations", "ec2:DescribeLaunchTemplateVersions", "ec2:DeleteLaunchTemplateVersions" ], "Resource": "*" } ] }

Um gezielte Kapazitätsreservierungen verwenden zu können, müssen Sie die folgenden zusätzlichen Berechtigungen angeben.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ec2:DescribeCapacityReservations", "ec2:DescribeLaunchTemplateVersions", "ec2:DeleteLaunchTemplateVersions", "resource-groups:ListGroupResources" ], "Resource": "*" } ] }

Instance-Flotten für Ihren Cluster konfigurieren

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

  2. Wählen Sie EC2 im linken Navigationsbereich unter EMRon die Option Clusters und anschließend Create cluster aus.

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

  4. Wählen Sie für jede Knotengruppe die Option Instance-Typ hinzufügen und wählen Sie bis zu 5 Instance-Typen für Primär- und Core-Instance-Flotten und bis zu fünfzehn Instance-Typen für Aufgaben-Instance-Flotten aus. Amazon EMR kann beim Start des Clusters eine beliebige Mischung dieser Instance-Typen bereitstellen.

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

    EBSVolumen hinzufügen

    Geben Sie EBS Volumes an, die an den Instance-Typ angehängt werden sollen, nachdem EMR Amazon ihn bereitgestellt hat.

    Gewichtete Kapazität bearbeiten

    Ändern Sie diesen Wert für die Core-Knotengruppe auf eine beliebige Anzahl von Einheiten, die Ihren Anwendungen entspricht. Die Anzahl von YARN vCores für jeden Flotteninstance-Typ wird als standardmäßige gewichtete Kapazitätseinheiten verwendet. Sie können die gewichtete Kapazität für den Primärknoten nicht bearbeiten.

    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. Wenn der aktuelle Spot-Preis in einer Availability Zone unter Ihrem maximalen Spot-Preis liegt, stellt Amazon EMR Spot-Instances bereit. Sie zahlen den Spot-Preis, nicht unbedingt den maximalen Spot-Preis.

  6. Um optional Sicherheitsgruppen für Ihre Knoten hinzuzufügen, erweitern Sie EC2Sicherheitsgruppen (Firewall) im Bereich Netzwerk und wählen Sie Ihre Sicherheitsgruppe für jeden Knotentyp aus.

  7. Aktivieren Sie optional das Kontrollkästchen neben Zuweisungsstrategie anwenden, wenn Sie die Option Zuweisungsstrategie verwenden möchten, und wählen Sie die Zuweisungsstrategie aus, die Sie für die Spot Instances angeben möchten. Sie sollten diese Option nicht auswählen, wenn Ihre EMR Amazon-Servicerolle nicht über die erforderlichen Berechtigungen verfügt. Weitere Informationen finden Sie unter Zuweisungsstrategie für Flotten.

  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.

AWS CLI

Um einen Cluster mit Instance-Flotten mit den zu erstellen und zu starten AWS CLI, folgen Sie diesen Richtlinien:

  • Zum Erstellen und Starten eines Clusters mit Instance-Flotten verwenden Sie den Befehl create-cluster zusammen mit --instance-fleet-Parametern.

  • Um mehr Konfigurationsdetails der Instance-Flotten in einem Cluster zu erhalten, verwenden Sie den Befehl list-instance-fleets.

  • AMIsUm einem Cluster, den Sie erstellen, mehrere benutzerdefinierte Amazon Linux-Benutzer hinzuzufügen, verwenden Sie die CustomAmiId Option für jede InstanceType Spezifikation. Sie können Instance-Flottenknoten mit mehreren Instance-Typen und mehreren benutzerdefinierten Instance-Typen konfigurierenAMIs, um Ihren Anforderungen zu entsprechen. Siehe Beispiele: Erstellen eines Clusters mit der Instance-Flotten-Konfiguration.

  • Wenn Sie die Zielkapazität für eine Instance-Flotte ändern möchten, verwenden Sie den Befehl modify-instance-fleet.

  • Zum Hinzufügen einer Aufgaben-Instance-Flotte zu einem Cluster, dem noch keine Flotte zugewiesen wurde, verwenden Sie den Befehl add-instance-fleet.

  • Mithilfe des CustomAmiId Arguments mit dem add-instance-fleet Befehl AMIs können der Task-Instance-Flotte mehrere benutzerdefinierte hinzugefügt werden. Siehe Beispiele: Erstellen eines Clusters mit der Instance-Flotten-Konfiguration.

  • Um die Option für die Zuweisungsstrategie bei der Erstellung einer Instance-Flotte zu verwenden, aktualisieren Sie die Servicerolle so, dass sie das Beispielrichtliniendokument im folgenden Abschnitt enthält.

  • Um die Optionen für Kapazitätsreservierungen bei der Erstellung einer Instance-Flotte mit On-Demand-Zuweisungsstrategie zu verwenden, aktualisieren Sie die Servicerolle so, dass sie das Beispielrichtliniendokument im folgenden Abschnitt enthält.

  • Die Instance-Flotten sind automatisch in der EMR Standard-Servicerolle und der von Amazon EMR verwalteten Richtlinie (EMR_DefaultRoleundAmazonEMRServicePolicy_v2) enthalten. Wenn Sie eine benutzerdefinierte Servicerolle oder eine vom Kunden verwaltete Richtlinie für Ihren Cluster verwenden, müssen Sie die neuen Berechtigungen für die Zuweisungsstrategie im folgenden Abschnitt hinzufügen.

Beispiele: Erstellen eines Clusters mit der Instance-Flotten-Konfiguration

Die folgenden Beispiele zeigen create-cluster-Befehle mit einer Vielzahl von Optionen, die Sie kombinieren können.

Anmerkung

Wenn Sie noch nicht die standardmäßige EMR Amazon-Servicerolle und das EC2 Instanzprofil erstellt haben, erstellen aws emr create-default-roles Sie diese zunächst, bevor Sie den create-cluster Befehl verwenden.

Beispiel: Primärinstanz auf Abruf, On-Demand-Core mit Einzelinstanztyp, Standard VPC
aws emr create-cluster --release-label emr-5.3.1 --service-role EMR_DefaultRole \ --ec2-attributes InstanceProfile=EMR_EC2_DefaultRole \ --instance-fleets \ InstanceFleetType=MASTER,TargetOnDemandCapacity=1,InstanceTypeConfigs=['{InstanceType=m5.xlarge}'] \ InstanceFleetType=CORE,TargetOnDemandCapacity=1,InstanceTypeConfigs=['{InstanceType=m5.xlarge}']
Beispiel: Spot-Primär, Spot-Core mit Einzelinstanztyp, Standard VPC
aws emr create-cluster --release-label emr-5.3.1 --service-role EMR_DefaultRole \ --ec2-attributes InstanceProfile=EMR_EC2_DefaultRole \ --instance-fleets \ InstanceFleetType=MASTER,TargetSpotCapacity=1,\ InstanceTypeConfigs=['{InstanceType=m5.xlarge,BidPrice=0.5}'] \ InstanceFleetType=CORE,TargetSpotCapacity=1,\ InstanceTypeConfigs=['{InstanceType=m5.xlarge,BidPrice=0.5}']
Beispiel: Primär auf Abruf, gemischter Kern mit Einzelinstanztyp, einzelnes EC2 Subnetz
aws emr create-cluster --release-label emr-5.3.1 --service-role EMR_DefaultRole \ --ec2-attributes InstanceProfile=EMR_EC2_DefaultRole,SubnetIds=['subnet-ab12345c'] \ --instance-fleets \ InstanceFleetType=MASTER,TargetOnDemandCapacity=1,\ InstanceTypeConfigs=['{InstanceType=m5.xlarge}'] \ InstanceFleetType=CORE,TargetOnDemandCapacity=2,TargetSpotCapacity=6,\ InstanceTypeConfigs=['{InstanceType=m5.xlarge,BidPrice=0.5,WeightedCapacity=2}']
Beispiel: Primär auf Abruf, Spot-Core mit mehreren gewichteten Instance-Typen, Timeout für Spot, Subnetzbereich EC2
aws emr create-cluster --release-label emr-5.3.1 --service-role EMR_DefaultRole \ --ec2-attributes InstanceProfile=EMR_EC2_DefaultRole,SubnetIds=['subnet-ab12345c','subnet-de67890f'] \ --instance-fleets \ InstanceFleetType=MASTER,TargetOnDemandCapacity=1,\ InstanceTypeConfigs=['{InstanceType=m5.xlarge}'] \ InstanceFleetType=CORE,TargetSpotCapacity=11,\ InstanceTypeConfigs=['{InstanceType=m5.xlarge,BidPrice=0.5,WeightedCapacity=3}',\ '{InstanceType=m4.2xlarge,BidPrice=0.9,WeightedCapacity=5}'],\ LaunchSpecifications={SpotSpecification='{TimeoutDurationMinutes=120,TimeoutAction=SWITCH_TO_ON_DEMAND}'}
Beispiel: Primäre On-Demand-Instanz, gemischter Kern- und Task-Instance-Typ mit mehreren gewichteten Instance-Typen, Timeout für Core-Spot-Instances, Subnetzbereich EC2
aws emr create-cluster --release-label emr-5.3.1 --service-role EMR_DefaultRole \ --ec2-attributes InstanceProfile=EMR_EC2_DefaultRole,SubnetIds=['subnet-ab12345c','subnet-de67890f'] \ --instance-fleets \ InstanceFleetType=MASTER,TargetOnDemandCapacity=1,InstanceTypeConfigs=['{InstanceType=m5.xlarge}'] \ InstanceFleetType=CORE,TargetOnDemandCapacity=8,TargetSpotCapacity=6,\ InstanceTypeConfigs=['{InstanceType=m5.xlarge,BidPrice=0.5,WeightedCapacity=3}',\ '{InstanceType=m4.2xlarge,BidPrice=0.9,WeightedCapacity=5}'],\ LaunchSpecifications={SpotSpecification='{TimeoutDurationMinutes=120,TimeoutAction=SWITCH_TO_ON_DEMAND}'} \ InstanceFleetType=TASK,TargetOnDemandCapacity=3,TargetSpotCapacity=3,\ InstanceTypeConfigs=['{InstanceType=m5.xlarge,BidPrice=0.5,WeightedCapacity=3}']
Beispiel: Spot Primary, kein Core oder Task, EBS Amazon-Konfiguration, Standard VPC
aws emr create-cluster --release-label Amazon EMR 5.3.1 --service-role EMR_DefaultRole \ --ec2-attributes InstanceProfile=EMR_EC2_DefaultRole \ --instance-fleets \ InstanceFleetType=MASTER,TargetSpotCapacity=1,\ LaunchSpecifications={SpotSpecification='{TimeoutDurationMinutes=60,TimeoutAction=TERMINATE_CLUSTER}'},\ InstanceTypeConfigs=['{InstanceType=m5.xlarge,BidPrice=0.5,\ EbsConfiguration={EbsOptimized=true,EbsBlockDeviceConfigs=[{VolumeSpecification={VolumeType=gp2,\ SizeIn GB=100}},{VolumeSpecification={VolumeType=io1,SizeInGB=100,Iop s=100},VolumesPerInstance=4}]}}']
Beispiel: Mehrere benutzerdefinierte Instance-TypenAMIs, primärer On-Demand-Instance-Typ, On-Demand-Core
aws emr create-cluster --release-label Amazon EMR 5.3.1 --service-role EMR_DefaultRole \ --ec2-attributes InstanceProfile=EMR_EC2_DefaultRole \ --instance-fleets \ InstanceFleetType=MASTER,TargetOnDemandCapacity=1,\ InstanceTypeConfigs=['{InstanceType=m5.xlarge,CustomAmiId=ami-123456},{InstanceType=m6g.xlarge, CustomAmiId=ami-234567}'] \ InstanceFleetType=CORE,TargetOnDemandCapacity=1,\ InstanceTypeConfigs=['{InstanceType=m5.xlarge,CustomAmiId=ami-123456},{InstanceType=m6g.xlarge, CustomAmiId=ami-234567}']
Beispiel: Fügen Sie einem laufenden Cluster mit mehreren Instanztypen und mehreren benutzerdefinierten Instanztypen einen Task-Knoten hinzu AMIs
aws emr add-instance-fleet --cluster-id j-123456 --release-label Amazon EMR 5.3.1 \ --service-role EMR_DefaultRole \ --ec2-attributes InstanceProfile=EMR_EC2_DefaultRole \ --instance-fleet \ InstanceFleetType=Task,TargetSpotCapacity=1,\ InstanceTypeConfigs=['{InstanceType=m5.xlarge,CustomAmiId=ami-123456}',\ '{InstanceType=m6g.xlarge,CustomAmiId=ami-234567}']
Beispiel: Verwenden Sie eine JSON Konfigurationsdatei

Sie können Instance-Flottenparameter in einer JSON Datei konfigurieren und dann auf die JSON Datei als einzigen Parameter für Instance-Flotten verweisen. Der folgende Befehl verweist beispielsweise auf eine JSON Konfigurationsdatei: my-fleet-config.json

aws emr create-cluster --release-label emr-5.30.0 --service-role EMR_DefaultRole \ --ec2-attributes InstanceProfile=EMR_EC2_DefaultRole \ --instance-fleets file://my-fleet-config.json

Das Tool my-fleet-config.json file gibt Primär-, Kern- und Taskinstanzflotten an, wie im folgenden Beispiel gezeigt. Die Core-Instance-Flotte verwendet einen maximalen Spot-Preis (BidPrice) als Prozentsatz von On-Demand, während die Task- und Primärinstance-Flotten einen maximalen Spot-Preis (BidPriceAsPercentageofOnDemandPrice) als Zeichenfolge in verwenden. USD

[ { "Name": "Masterfleet", "InstanceFleetType": "MASTER", "TargetSpotCapacity": 1, "LaunchSpecifications": { "SpotSpecification": { "TimeoutDurationMinutes": 120, "TimeoutAction": "SWITCH_TO_ON_DEMAND" } }, "InstanceTypeConfigs": [ { "InstanceType": "m5.xlarge", "BidPrice": "0.89" } ] }, { "Name": "Corefleet", "InstanceFleetType": "CORE", "TargetSpotCapacity": 1, "TargetOnDemandCapacity": 1, "LaunchSpecifications": { "OnDemandSpecification": { "AllocationStrategy": "lowest-price", "CapacityReservationOptions": { "UsageStrategy": "use-capacity-reservations-first", "CapacityReservationResourceGroupArn": "String" } }, "SpotSpecification": { "AllocationStrategy": "capacity-optimized", "TimeoutDurationMinutes": 120, "TimeoutAction": "TERMINATE_CLUSTER" } }, "InstanceTypeConfigs": [ { "InstanceType": "m5.xlarge", "BidPriceAsPercentageOfOnDemandPrice": 100 } ] }, { "Name": "Taskfleet", "InstanceFleetType": "TASK", "TargetSpotCapacity": 1, "LaunchSpecifications": { "OnDemandSpecification": { "AllocationStrategy": "lowest-price", "CapacityReservationOptions": { "CapacityReservationPreference": "none" } }, "SpotSpecification": { "TimeoutDurationMinutes": 120, "TimeoutAction": "TERMINATE_CLUSTER" } }, "InstanceTypeConfigs": [ { "InstanceType": "m5.xlarge", "BidPrice": "0.89" } ] } ]

Zielkapazitäten für eine Instance-Flotte ändern

Verwenden Sie den Befehl modify-instance-fleet, um neue Zielkapazitäten für eine Instance-Flotte anzugeben. Sie müssen die Cluster-ID und die Instance-Flotten-ID angeben. Verwenden Sie den list-instance-fleets Befehl, um die Instance-Flotte IDs abzurufen.

aws emr modify-instance-fleet --cluster-id <cluster-id> \ --instance-fleet \ InstanceFleetId='<instance-fleet-id>',TargetOnDemandCapacity=1,TargetSpotCapacity=1

Eine Aufgaben-Instance-Flotte zu einem Cluster hinzufügen

Wenn ein Cluster nur über Primär- und Core-Instance-Flotten verfügt, können Sie den Befehl add-instance-fleet verwenden, um eine Aufgaben-Instance-Flotte hinzuzufügen. Sie können nur diesen Befehl verwenden, um Aufgaben-Instance-Flotten hinzuzufügen.

aws emr add-instance-fleet --cluster-id <cluster-id> --instance-fleet \ InstanceFleetType=TASK,TargetSpotCapacity=1,\ LaunchSpecifications={SpotSpecification='{TimeoutDurationMinutes=20,TimeoutAction=TERMINATE_CLUSTER}'},\ InstanceTypeConfigs=['{InstanceType=m5.xlarge,BidPrice=0.5}']

Konfigurationsdetails der Instance-Flotten in einem Cluster abrufen

Verwenden Sie den Befehl list-instance-fleets, um Konfigurationsdetails der Instance-Flotten in einem Cluster abzurufen. Der Befehl erfordert die Eingabe einer Cluster-ID. Das folgende Beispiel zeigt den Befehl und die Ausgabe für einen Cluster mit einer Primär-Aufgaben-Instance-Gruppe und einer Core-Aufgaben-Instance-Gruppe. Die vollständige Antwortsyntax finden Sie ListInstanceFleetsin der EMRAPIAmazon-Referenz.

list-instance-fleets --cluster-id <cluster-id>
{ "InstanceFleets": [ { "Status": { "Timeline": { "ReadyDateTime": 1488759094.637, "CreationDateTime": 1488758719.817 }, "State": "RUNNING", "StateChangeReason": { "Message": "" } }, "ProvisionedSpotCapacity": 6, "Name": "CORE", "InstanceFleetType": "CORE", "LaunchSpecifications": { "SpotSpecification": { "TimeoutDurationMinutes": 60, "TimeoutAction": "TERMINATE_CLUSTER" } }, "ProvisionedOnDemandCapacity": 2, "InstanceTypeSpecifications": [ { "BidPrice": "0.5", "InstanceType": "m5.xlarge", "WeightedCapacity": 2 } ], "Id": "if-1ABC2DEFGHIJ3" }, { "Status": { "Timeline": { "ReadyDateTime": 1488759058.598, "CreationDateTime": 1488758719.811 }, "State": "RUNNING", "StateChangeReason": { "Message": "" } }, "ProvisionedSpotCapacity": 0, "Name": "MASTER", "InstanceFleetType": "MASTER", "ProvisionedOnDemandCapacity": 1, "InstanceTypeSpecifications": [ { "BidPriceAsPercentageOfOnDemandPrice": 100.0, "InstanceType": "m5.xlarge", "WeightedCapacity": 1 } ], "Id": "if-2ABC4DEFGHIJ4" } ] }