Kapazitätsreservierungen mit Instance-Flotten verwenden - 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.

Kapazitätsreservierungen mit Instance-Flotten verwenden

Um On-Demand-Instance-Flotten mit Optionen für Kapazitätsreservierungen zu starten, fügen Sie zusätzliche Servicerollenberechtigungen hinzu, die für die Nutzung von Kapazitätsreservierungsoptionen erforderlich sind. Da Optionen zur Kapazitätsreservierung zusammen mit der On-Demand-Zuweisungsstrategie verwendet werden müssen, müssen Sie auch die für die Zuweisungsstrategie erforderlichen Berechtigungen in Ihre Servicerolle und verwaltete Richtlinie aufnehmen. Weitere Informationen finden Sie unter Zuweisungsstrategie-Berechtigungen.

Amazon EMR unterstützt sowohl offene als auch gezielte Kapazitätsreservierungen. Die folgenden Themen zeigen Konfigurationen von Instance-Flotten, die Sie zusammen mit der RunJobFlow-Aktion oder dem create-cluster-Befehl verwenden können, um Instance-Flotten mithilfe von On-Demand-Kapazitätsreservierungen zu starten.

Offene Kapazitätsreservierungen nach bestmöglichem Bemühen verwenden

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. Es kann jedoch nicht garantiert werden, dass Ihre Kapazitätsreservierungen genutzt werden. Für die Bereitstellung des Clusters bewertet Amazon EMR alle in der Startanforderung angegebenen Instance-Pools und verwendet den Pool mit dem niedrigsten Preis, der über ausreichend Kapazität verfügt, um alle angeforderten Core-Knoten zu starten. Verfügbare offene Kapazitätsreservierungen, die dem Instance-Pool entsprechen, werden automatisch angewendet. Wenn verfügbare offene Kapazitätsreservierungen nicht mit dem Instance-Pool übereinstimmen, bleiben sie ungenutzt.

Sobald die Core-Knoten bereitgestellt sind, wird die Availability Zone ausgewählt und repariert. Amazon EMR stellt Aufgabenknoten in Instance-Pools bereit, beginnend mit den günstigsten zuerst, in der ausgewählten Availability Zone, bis alle Aufgabenknoten bereitgestellt sind. Verfügbare offene Kapazitätsreservierungen, die den Instance-Pools entsprechen, werden automatisch angewendet.

Im Folgenden finden Sie Anwendungsfälle der Amazon-EMR-Kapazitätszuweisungslogik für die Nutzung offener Kapazitätsreservierungen nach bestem Wissen.

Beispiel 1: Der Instance-Pool mit dem niedrigsten Preis in der Startanfrage verfügt über verfügbare offene Kapazitätsreservierungen

In diesem Fall führt Amazon EMR Kapazität im Instance-Pool mit On-Demand-Instances mit dem niedrigsten Preis ein. Ihre verfügbaren offenen Kapazitätsreservierungen in diesem Instance-Pool werden automatisch verwendet.

On-Demand-Strategie Niedrigster Preis
Angeforderte Kapazität 100
Instance-Typ c5.xlarge m5.xlarge r5.xlarge
Verfügbare offene Kapazitätsreservierung 150 100 100
Preis auf Abruf $ $$ $$$
Bereitgestellte Instances 100 - -
Offene Kapazitätsreservierung verwendet 100 - -
Verfügbare offene Kapazitätsreservierung 50 100 100

Nachdem die Instance-Flotte gestartet wurde, können Sie describe-capacity-reservations ausführen, um zu sehen, wie viele ungenutzte Kapazitätsreservierungen verbleiben.

Beispiel 2: Für den Instance-Pool mit dem niedrigsten Preis in der Startanfrage sind keine offenen Kapazitätsreservierungen verfügbar

In diesem Fall führt Amazon EMR Kapazität im Instance-Pool mit On-Demand-Instances mit dem niedrigsten Preis ein. Ihre offenen Kapazitätsreservierungen bleiben jedoch ungenutzt.

On-Demand-Strategie Niedrigster Preis
Angeforderte Kapazität 100
Instance-Typ c5.xlarge m5.xlarge r5.xlarge

Verfügbare offene Kapazitätsreservierung

- - 100
Preis auf Abruf $ $$ $$$
Bereitgestellte Instances 100 - -
Offene Kapazitätsreservierung verwendet - - -
Verfügbare offene Kapazitätsreservierung - - 100

Konfigurieren Sie Instance-Flotten so, dass offene Kapazitätsreservierungen nach bestem Wissen und Gewissen verwendet werden

Wenn Sie die RunJobFlow-Aktion verwenden, um einen auf Instance-Flotten basierenden Cluster zu erstellen, legen Sie für die On-Demand-Zuweisungsstrategie die Optionen lowest-price und CapacityReservationPreference für Kapazitätsreservierungen auf open fest. Wenn Sie dieses Feld leer lassen, setzt Amazon EMR alternativ die Kapazitätsreservierungspräferenz der On-Demand-Instance standardmäßig auf open.

"LaunchSpecifications": {"OnDemandSpecification": { "AllocationStrategy": "lowest-price", "CapacityReservationOptions": { "CapacityReservationPreference": "open" } } }

Sie können auch die Amazon-EMR-CLI verwenden, um mithilfe von offenen Kapazitätsreservierungen einen auf Instance-Flotten basierenden Cluster zu erstellen.

aws emr create-cluster \ --name 'open-ODCR-cluster' \ --release-label emr-5.30.0 \ --service-role EMR_DefaultRole \ --ec2-attributes SubnetId=subnet-22XXXX01,InstanceProfile=EMR_EC2_DefaultRole \ --instance-fleets InstanceFleetType=MASTER,TargetOnDemandCapacity=1,InstanceTypeConfigs=['{InstanceType=c4.xlarge}'] \ InstanceFleetType=CORE,TargetOnDemandCapacity=100,InstanceTypeConfigs=['{InstanceType=c5.xlarge},{InstanceType=m5.xlarge},{InstanceType=r5.xlarge}'],\ LaunchSpecifications={OnDemandSpecification='{AllocationStrategy=lowest-price,CapacityReservationOptions={CapacityReservationPreference=open}}'}

Wobei gilt,

  • open-ODCR-cluster wird durch den Namen des Clusters ersetzt, der offenen Kapazitätsreservierungen verwendet.

  • subnet-22XXXX01 wird durch die Subnetz-ID ersetzt.

Zuerst offene Kapazitätsreservierungen verwenden

Sie können sich dafür entscheiden, bei der Bereitstellung eines Amazon-EMR-Clusters die Zuweisungsstrategie mit dem niedrigsten Preis außer Kraft zu setzen und zuerst verfügbare offene Kapazitätsreservierungen zu verwenden. In diesem Fall bewertet Amazon EMR alle Instance-Pools mit Kapazitätsreservierungen, die in der Startanfrage angegeben wurden, und verwendet den Pool mit dem niedrigsten Preis, der über ausreichend Kapazität verfügt, um alle angeforderten Core-Knoten zu starten. Wenn keiner der Instance-Pools mit Kapazitätsreservierungen über ausreichend Kapazität für die angeforderten Core-Knoten verfügt, greift Amazon EMR auf den im vorherigen Thema beschriebenen bestmöglichen Fall zurück. Das heißt, Amazon EMR bewertet alle in der Startanfrage angegebenen Instance-Pools neu und verwendet den Pool mit dem niedrigsten Preis, der über ausreichende Kapazität verfügt, um alle angeforderten Core-Knoten zu starten. Verfügbare offene Kapazitätsreservierungen, die dem Instance-Pool entsprechen, werden automatisch angewendet. Wenn verfügbare offene Kapazitätsreservierungen nicht mit dem Instance-Pool übereinstimmen, bleiben sie ungenutzt.

Sobald die Core-Knoten bereitgestellt sind, wird die Availability Zone ausgewählt und repariert. Amazon EMR stellt Aufgabenknoten in der ausgewählten Availability Zone in Instance-Pools mit Kapazitätsreservierungen bereit, beginnend mit den günstigsten zuerst, bis alle Aufgabenknoten bereitgestellt sind. Amazon EMR verwendet zuerst die verfügbaren offenen Kapazitätsreservierungen, die für jeden Instance-Pool in der ausgewählten Availability Zone verfügbar sind, und verwendet nur bei Bedarf die niedrigste Preisstrategie, um alle verbleibenden Aufgabenknoten bereitzustellen.

Im Folgenden finden Sie Anwendungsfälle der Amazon-EMR-Kapazitätszuweisungslogik, bei der zuerst offene Kapazitätsreservierungen verwendet werden.

Beispiel 1: Der Instance-Pool mit verfügbaren offenen Kapazitätsreservierungen in der Startanfrage verfügt über ausreichend Kapazität für Core-Knoten

In diesem Fall startet Amazon EMR Kapazität im Instance-Pool mit verfügbaren offenen Kapazitätsreservierungen, unabhängig vom Preis des Instance-Pools. Daher werden Ihre offenen Kapazitätsreservierungen wann immer möglich genutzt, bis alle Core-Knoten bereitgestellt sind.

On-Demand-Strategie Niedrigster Preis
Angeforderte Kapazität 100
Nutzungsstrategie use-capacity-reservations-first
Instance-Typ c5.xlarge m5.xlarge r5.xlarge
Verfügbare offene Kapazitätsreservierung - - 150
Preis auf Abruf $ $$ $$$
Bereitgestellte Instances - - 100
Offene Kapazitätsreservierung verwendet - - 100
Verfügbare offene Kapazitätsreservierung - - 50

Beispiel 2: Der Instance-Pool mit verfügbaren Reservierungen für offene Kapazitäten in der Startanfrage verfügt nicht über genügend Kapazität für Core-Knoten

In diesem Fall greift Amazon EMR auf die Einführung von Core-Knoten zurück und verwendet dabei die niedrigste Preisstrategie, wobei Kapazitätsreservierungen bestmöglich genutzt werden.

On-Demand-Strategie Niedrigster Preis
Angeforderte Kapazität 100
Nutzungsstrategie use-capacity-reservations-first
Instance-Typ c5.xlarge m5.xlarge r5.xlarge
Verfügbare offene Kapazitätsreservierung 10 50 50
Preis auf Abruf $ $$ $$$
Bereitgestellte Instances 100 - -
Offene Kapazitätsreservierung verwendet 10 - -
Verfügbare Reservierungen für offene Kapazitäten - 50 50

Nachdem die Instance-Flotte gestartet wurde, können Sie describe-capacity-reservations ausführen, um zu sehen, wie viele ungenutzte Kapazitätsreservierungen verbleiben.

Konfigurieren Sie Instance-Flotten so, dass sie zuerst offene Kapazitätsreservierungen verwenden

Wenn Sie die RunJobFlow-Aktion verwenden, um einen auf Instance-Flotten basierenden Cluster zu erstellen, legen Sie für die On-Demand-Zuweisungsstrategie die Optionen lowest-price und UsageStrategy für CapacityReservationOptions auf use-capacity-reservations-first fest.

"LaunchSpecifications": {"OnDemandSpecification": { "AllocationStrategy": "lowest-price", "CapacityReservationOptions": { "UsageStrategy": "use-capacity-reservations-first" } } }

Sie können auch die Amazon-EMR-CLI verwenden, um einen auf Instance-Flotten basierenden Cluster zu erstellen, indem Sie zunächst Kapazitätsreservierungen verwenden.

aws emr create-cluster \ --name 'use-CR-first-cluster' \ --release-label emr-5.30.0 \ --service-role EMR_DefaultRole \ --ec2-attributes SubnetId=subnet-22XXXX01,InstanceProfile=EMR_EC2_DefaultRole \ --instance-fleets \ InstanceFleetType=MASTER,TargetOnDemandCapacity=1,InstanceTypeConfigs=['{InstanceType=c4.xlarge}'] \ InstanceFleetType=CORE,TargetOnDemandCapacity=100,InstanceTypeConfigs=['{InstanceType=c5.xlarge},{InstanceType=m5.xlarge},{InstanceType=r5.xlarge}'],\ LaunchSpecifications={OnDemandSpecification='{AllocationStrategy=lowest-price,CapacityReservationOptions={UsageStrategy=use-capacity-reservations-first}}'}

Wobei gilt,

  • use-CR-first-cluster wird durch den Namen des Clusters ersetzt, der offenen Kapazitätsreservierungen verwendet.

  • subnet-22XXXX01 wird durch die Subnetz-ID ersetzt.

Zuerst gezielte Kapazitätsreservierungen verwenden

Wenn Sie einen Amazon-EMR-Cluster bereitstellen, können Sie sich dafür entscheiden, die Zuweisungsstrategie mit dem niedrigsten Preis außer Kraft zu setzen und zuerst die verfügbaren gezielten Kapazitätsreservierungen zu verwenden. In diesem Fall bewertet Amazon EMR alle Instance-Pools mit gezielten Kapazitätsreservierungen, die in der Startanfrage angegeben wurden, und wählt den Pool mit dem niedrigsten Preis aus, der über ausreichend Kapazität verfügt, um alle angeforderten Core-Knoten zu starten. Wenn keiner der Instance-Pools mit gezielten Kapazitätsreservierungen über ausreichende Kapazitäten für Core-Knoten verfügt, fällt Amazon EMR auf den zuvor beschriebenen Fall der besten Bemühung zurück. Das heißt, Amazon EMR bewertet alle in der Startanforderung angegebenen Instance-Pools neu und wählt den Pool mit dem niedrigsten Preis aus, der über ausreichende Kapazität verfügt, um alle angeforderten Core-Knoten zu starten. Verfügbare offene Kapazitätsreservierungen, die dem Instance-Pool entsprechen, werden automatisch übernommen. Gezielte Kapazitätsreservierungen bleiben jedoch ungenutzt.

Sobald die Core-Knoten bereitgestellt sind, wird die Availability Zone ausgewählt und repariert. Amazon EMR stellt Aufgabenknoten in Instance-Pools mit gezielten Kapazitätsreservierungen bereit, beginnend mit den günstigsten zuerst, in der ausgewählten Availability Zone, bis alle Aufgabenknoten bereitgestellt sind. Amazon EMR versucht zunächst, die verfügbaren gezielten Kapazitätsreservierungen zu verwenden, die für jeden Instance-Pool in der ausgewählten Availability Zone verfügbar sind. Nur bei Bedarf verwendet Amazon EMR dann die Strategie mit dem niedrigsten Preis, um alle verbleibenden Aufgabenknoten bereitzustellen.

Im Folgenden finden Sie Anwendungsfälle der Amazon-EMR-Kapazitätszuweisungslogik, bei der zunächst gezielte Kapazitätsreservierungen verwendet werden.

Beispiel 1: Der Instance-Pool mit verfügbaren gezielten Kapazitätsreservierungen in der Startanfrage verfügt über ausreichend Kapazität für Core-Knoten

In diesem Fall startet Amazon EMR Kapazität im Instance-Pool mit verfügbaren gezielten Kapazitätsreservierungen, unabhängig vom Preis des Instance-Pools. Daher werden Ihre gezielten Kapazitätsreservierungen wann immer möglich genutzt, bis alle Core-Knoten bereitgestellt sind.

On-Demand-Strategie Niedrigster Preis
Nutzungsstrategie use-capacity-reservations-first
Angeforderte Kapazität 100
Instance-Typ c5.xlarge m5.xlarge r5.xlarge
Verfügbare gezielte Kapazitätsreservierungen - - 150
Preis auf Abruf $ $$ $$$
Bereitgestellte Instances - - 100
Gezielte Kapazitätsreservierung genutzt - - 100
Verfügbare gezielte Kapazitätsreservierungen - - 50
Beispiel 2: Der Instance-Pool mit verfügbaren gezielten Kapazitätsreservierungen in der Startanfrage verfügt nicht über ausreichende Kapazität für Core-Knoten
On-Demand-Strategie Niedrigster Preis
Angeforderte Kapazität 100
Nutzungsstrategie use-capacity-reservations-first
Instance-Typ c5.xlarge m5.xlarge r5.xlarge
Verfügbare gezielte Kapazitätsreservierungen 10 50 50
Preis auf Abruf $ $$ $$$
Bereitgestellte Instances 100 - -
Gezielte Kapazitätsreservierungen verwendet 10 - -
Verfügbare gezielte Kapazitätsreservierungen - 50 50

Nachdem die Instance-Flotte gestartet wurde, können Sie describe-capacity-reservations ausführen, um zu sehen, wie viele ungenutzte Kapazitätsreservierungen verbleiben.

Instance-Flotten so konfigurieren, dass sie zuerst gezielte Kapazitätsreservierungen verwenden

Wenn Sie die RunJobFlow-Aktion verwenden, um einen auf Instance-Flotten basierenden Cluster zu erstellen, legen Sie für die On-Demand-Zuweisungsstrategie die Optionen lowest-price und UsageStrategy für CapacityReservationOptions auf use-capacity-reservations-first und CapacityReservationResourceGroupArn für CapacityReservationOptions auf <your resource group ARN> fest. Weitere Informationen finden Sie unter Arbeiten mit Kapazitätsreservierungen im Amazon EC2 EC2-Benutzerhandbuch.

"LaunchSpecifications": {"OnDemandSpecification": { "AllocationStrategy": "lowest-price", "CapacityReservationOptions": { "UsageStrategy": "use-capacity-reservations-first", "CapacityReservationResourceGroupArn": "arn:aws:resource-groups:sa-east-1:123456789012:group/MyCRGroup" } } }

Wobei arn:aws:resource-groups:sa-east-1:123456789012:group/MyCRGroup durch Ihren Ressourcengruppen-ARN ersetzt wird.

Sie können auch die Amazon-EMR-CLI verwenden, um mithilfe gezielter Kapazitätsreservierungen einen auf Instance-Flotten basierenden Cluster zu erstellen.

aws emr create-cluster \ --name 'targeted-CR-cluster' \ --release-label emr-5.30.0 \ --service-role EMR_DefaultRole \ --ec2-attributes SubnetId=subnet-22XXXX01,InstanceProfile=EMR_EC2_DefaultRole \ --instance-fleets InstanceFleetType=MASTER,TargetOnDemandCapacity=1,InstanceTypeConfigs=['{InstanceType=c4.xlarge}'] \ InstanceFleetType=CORE,TargetOnDemandCapacity=100,\ InstanceTypeConfigs=['{InstanceType=c5.xlarge},{InstanceType=m5.xlarge},{InstanceType=r5.xlarge}'],\ LaunchSpecifications={OnDemandSpecification='{AllocationStrategy=lowest-price,CapacityReservationOptions={UsageStrategy=use-capacity-reservations-first,CapacityReservationResourceGroupArn=arn:aws:resource-groups:sa-east-1:123456789012:group/MyCRGroup}}'}

Wobei gilt,

  • targeted-CR-cluster wird mithilfe von gezielten Kapazitätsreservierungen durch den Namen Ihres Clusters ersetzt.

  • subnet-22XXXX01 wird durch die Subnetz-ID ersetzt.

  • arn:aws:resource-groups:sa-east-1:123456789012:group/MyCRGroup wird durch Ihren Ressourcengruppe-ARN ersetzt.

Vermeiden Sie es, verfügbare offene Kapazitätsreservierungen zu verwenden

Wenn Sie vermeiden möchten, dass Ihre offenen Kapazitätsreservierungen beim Start eines Amazon-EMR-Clusters unerwartet in Anspruch genommen werden, legen Sie die On-Demand-Zuweisungsstrategie auf lowest-price und CapacityReservationPreference für CapacityReservationOptionsauf none. Andernfalls setzt Amazon EMR die Kapazitätsreservierungspräferenz der On-Demand-Instance standardmäßig auf open und versucht, verfügbare offene Kapazitätsreservierungen nach bestem Wissen zu verwenden.

"LaunchSpecifications": {"OnDemandSpecification": { "AllocationStrategy": "lowest-price", "CapacityReservationOptions": { "CapacityReservationPreference": "none" } } }

Sie können auch die Amazon-EMR-CLI verwenden, um einen auf einer Instance-Flotte basierenden Cluster zu erstellen, ohne offene Kapazitätsreservierungen zu verwenden.

aws emr create-cluster \ --name 'none-CR-cluster' \ --release-label emr-5.30.0 \ --service-role EMR_DefaultRole \ --ec2-attributes SubnetId=subnet-22XXXX01,InstanceProfile=EMR_EC2_DefaultRole \ --instance-fleets \ InstanceFleetType=MASTER,TargetOnDemandCapacity=1,InstanceTypeConfigs=['{InstanceType=c4.xlarge}'] \ InstanceFleetType=CORE,TargetOnDemandCapacity=100,InstanceTypeConfigs=['{InstanceType=c5.xlarge},{InstanceType=m5.xlarge},{InstanceType=r5.xlarge}'],\ LaunchSpecifications={OnDemandSpecification='{AllocationStrategy=lowest-price,CapacityReservationOptions={CapacityReservationPreference=none}}'}

Wobei gilt,

  • none-CR-cluster wird durch den Namen Ihres Clusters ersetzt, der keine offenen Kapazitätsreservierungen verwendet.

  • subnet-22XXXX01 wird durch die Subnetz-ID ersetzt.

Szenarien für die Verwendung von Kapazitätsreservierungen

In den folgenden Szenarien können Sie von der Verwendung von Kapazitätsreservierungen profitieren.

Szenario 1: Rotation eines Clusters mit langer Laufzeit mithilfe von Kapazitätsreservierungen

Wenn Sie einen Cluster mit langer Laufzeit rotieren, stellen Sie möglicherweise strenge Anforderungen an die Instance-Typen und Availability Zones für die neuen Instances, die Sie bereitstellen. Mit Kapazitätsreservierungen können Sie die Kapazitätssicherung verwenden, um die Cluster-Rotation ohne Unterbrechungen abzuschließen.

Cluster-Rotation unter Verwendung verfügbarer Kapazitätsreservierungen
Szenario 2: Bereitstellung aufeinanderfolgender kurzlebiger Cluster mithilfe von Kapazitätsreservierungen

Sie können Kapazitätsreservierungen auch verwenden, um eine Gruppe aufeinanderfolgender, kurzlebiger Cluster für einzelne Workloads bereitzustellen, sodass, wenn Sie einen Cluster beenden, der nächste Cluster die Kapazitätsreservierungen nutzen kann. Sie können gezielte Kapazitätsreservierungen verwenden, um sicherzustellen, dass nur die vorgesehenen Cluster die Kapazitätsreservierungen nutzen.

Kurzlebige Cluster-Bereitstellung, bei der verfügbare Kapazitätsreservierungen verwendet werden