Wie behebe ich den AWS-Glue-Fehler „The specified subnet does not have enough free addresses to satisfy the request“?

Lesedauer: 4 Minute
0

Ich habe einen „Extract, Transform, Load (ETL)“-Job in AWS Glue ausgeführt. Er ist jedoch fehlgeschlagen und ich habe eine Fehlermeldung erhalten, die besagt, dass es im Subnetz nicht genügend freie IP-Adressen gibt.

Kurzbeschreibung

Wenn du einen AWS-Glue-ETL-Job ausführst, wird möglicherweise einer der folgenden Fehler angezeigt:

  • „The specified subnet does not have enough free addresses to satisfy the request. (Service: Amazon EC2; Statuscode: 400; Error Code: InsufficientFreeAddressesInSubnet; Request ID: my_request_id)“
  • „An error occurred calling o70.getDynamicFrame. Job 0 cancelled because SparkContext was shut down caused by threshold for executors failed after launch reached“

Die oben genannten Fehler treten aus den folgenden Gründen auf:

  • Der AWS-Glue-Job verwendet mehr Datenverarbeitungseinheiten (DPUs) als verfügbare IP-Adressen verfügbar sind.
  • Andere AWS-Services verwenden IP-Adressen im selben Subnetz.
  • Du hast die Elastic-Network-Schnittstellen nach Abschluss des Jobs nicht getrennt.

Lösung

Überprüfen, wie viele DPUs der Job verwendet, und die Anzahl der DPUs reduzieren

Stelle sicher, dass der Job abgeschlossen ist. Überprüfe dann, wie viele DPUs der Job verwendet hat, und ermittle die Anzahl der DPUs, die du entfernen kannst.

Gehe wie folgt vor, um zu überprüfen, wie viele DPUs der Job verwendet hat:

  1. Öffne die AWS Glue-Konsole.
  2. Wähle im Navigationsbereich Jobs aus.
  3. Wähle den Job und dann die Registerkarte Verlauf aus.
  4. Überprüfe die Anzahl der DPUs in der Spalte Maximale Kapazität.

Ermittle dann die Anzahl der DPUs, die aus dem Job entfernt werden sollen.

Die Anzahl der DPUs entspricht nicht der Anzahl der Netzwerkschnittstellen.

Jeder Worker benötigt eine Netzwerkschnittstelle, mit Ausnahme der folgenden Worker-Typen, für die jeweils eine zusätzliche Netzwerkschnittstelle erforderlich ist:

  • Standard-Worker-Typ (1 DPU pro Worker)
  • G1.X-Worker-Typ (1 DPU pro Worker)
  • G2.X-Worker-Typ (2 DPUs)

Wenn du beispielsweise einen Job mit 20 Workers auf einem G.2x ausführst, verwende die folgende Berechnung, um die Anzahl der IP-Adressen zu berechnen:

AWS Glue 2.0/3.0/4.0: 40 DPU = 19 Workers (Executors) + 1 Treiber = 20 IP-Adressen (kein Task-Runner in AWS Glue 2.0/3.0/4.0)

Gehe wie folgt vor, um die Anzahl der DPUs zu reduzieren:

  1. Öffne die AWS Glue-Konsole.
  2. Wähle im Navigationsbereich Jobs und dann den Job aus.
  3. Wähle die Dropdownliste Aktion und dann Job bearbeiten aus.
  4. Erweitere die Liste Sicherheitskonfiguration, Skriptbibliotheken und Jobparameter (optional).
  5. Gib im Feld Maximale Kapazität eine niedrigere Zahl für die maximale Anzahl von DPUs ein, die der Job verwenden kann.
  6. Speichere deine Änderungen und führe den Job dann erneut aus.

Anzahl der verfügbaren IP-Adressen überprüfen und ungenutzte Netzwerkschnittstellen löschen

Erhöhe zuerst die Anzahl der verfügbaren IP-Adressen im Subnetz.

Führe die folgenden Schritte aus:

  1. Öffne die AWS Glue-Konsole.
  2. Wähle im Navigationsbereich Verbindungen aus.
  3. Wähle die Verbindung aus, die dein Job verwendet.
  4. Wähle die Dropdownliste Aktion und dann Details anzeigen aus.
  5. Notiere dir das Subnetz.
  6. Öffne die Amazon-VPC-Konsole.
  7. Wähle im Navigationsbereich die Option Subnetze aus.
  8. Wähle in der Dropdownliste Subnetz das Subnetz aus, das die AWS-Glue-Verbindung verwendet.
  9. Überprüfe auf der Registerkarte Beschreibung das Feld Verfügbare IPv4-Adressen, um zu sehen, wie viele IP-Adressen im Subnetz verfügbar sind.
  10. Stelle sicher, dass das Subnetz über mehr verfügbare IP-Adressen verfügt, als für den AWS-Glue-Job erforderlich ist.

Wenn das Subnetz nicht über genügend verfügbare IP-Adressen verfügt, lösche alle ungenutzten Netzwerkschnittstellen.

Subnetz mit mehr verfügbaren IP-Adressen erstellen und verwenden

Wenn das vorhandene Subnetz nicht über genügend IP-Adressen verfügt, erstelle ein neues Subnetz in deiner Amazon VPC. Du kannst den ursprünglichen CIDR-Block verwenden oder einen neuen hinzufügen, um den Bereich zu erweitern. Stelle dann sicher, dass das neue Subnetz dieselbe Routing-Tabelle und dieselben Regeln für Netzwerk-Zugriffssteuerungslisten (Netzwerk-ACL) verwendet wie das ursprüngliche Subnetz. Wenn dein vorheriges Subnetz beispielsweise eine Standardroute zu einem Internet-Gateway hatte, muss dein neues Subnetz zu einem Internet-Gateway weitergeleitet werden.

AWS-Glue-Verbindung aktualisieren, um das neue Subnetz zu verwenden

Führe die folgenden Schritte aus:

  1. Öffne die AWS Glue-Konsole.
  2. Wähle im Navigationsbereich Verbindungen aus.
  3. Wähle die Verbindung aus, die dein AWS-Glue-Job verwendet.
  4. Wähle in der Dropdownliste Aktion die Option Verbindung bearbeiten aus.
  5. Wähle auf der Seite Eigenschaften deiner Verbindung einrichten die Option Weiter aus.
  6. Wähle auf der Seite Zugriff auf deinen Datenspeicher einrichten in der Dropdownliste Subnetz das neue Subnetz aus.
  7. Wähle Weiter und dann Fertigstellen aus.
  8. Führe den Job erneut aus.

Ähnliche Informationen

Jobeigenschaften für Spark-Jobs definieren

Amazon VPC für JDBC-Verbindungen zu Amazon RDS-Datenspeichern von AWS Glue aus einrichten.

AWS OFFICIAL
AWS OFFICIALAktualisiert vor 2 Monaten