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.
Konfiguration von IPv6-Subnetzen für serverlose EMR-Anwendungen
Mit Amazon EMR Serverless können Sie Ihre Apache Spark- und Apache Hive-Jobs über IPv6 in Ihrer Amazon Virtual Private Cloud (Amazon VPC) ausführen. Wenn Sie Dual-Stack (IPv4 und IPv6) oder IPv6-only Subnetze bereitstellen, führt EMR Serverless Ihre Jobs im Adressierungsmodus dieser Subnetze aus. Ihre Jobs können dann IPv6-Endpunkte in Ihrer VPC und externe IPv6-Endpunkte erreichen. IPv6-only Subnetze werden automatisch über IPv6 ausgeführt. Für Dual-Stack-Subnetze aktivieren Sie IPv6 mit einer Konfigurationseigenschaft, wie unter beschrieben. Konfiguration der IPv6-Eigenschaften
Grundlegendes zu den wichtigsten Vorteilen
Die Ausführung von serverlosen EMR-Anwendungen über IPv6 bietet die folgenden Vorteile.
-
Größerer Adressraum — IPv6 bietet einen viel größeren Adressraum als IPv4, wodurch Sie eine Überlastung der IPv4-Adressen in VPCs und Subnetzen vermeiden können, in denen viele Worker laufen.
-
Dual-stack und IPv6-only Netzwerke — Führen Sie Jobs in Dual-Stack-Subnetzen aus, die sowohl IPv4 als auch IPv6 verwenden, oder in IPv6-only Subnetzen, um Netzwerkstandards und Compliance-Anforderungen zu erfüllen, die IPv6 erfordern.
-
Konnektivität zu IPv6-Endpunkten — Ihre Spark- und Hive-Jobs können IPv6-Endpunkte und -Dienste in Ihrer VPC und externe IPv6-Endpunkte erreichen.
-
Flexible Aktivierung — Subnetze laufen automatisch über IPv6. IPv6-only Für Dual-Stack-Subnetze aktivieren Sie IPv6 mit einer einzigen Konfigurationseigenschaft, sodass Sie kontrollieren können, wann IPv6 gilt.
So bestimmt EMR Serverless den Adressierungsmodus
EMR Serverless bestimmt den Adressierungsmodus Ihrer Anwendung anhand der von Ihnen bereitgestellten Subnetze.
-
IPv4-only Subnetze — Die Anwendung wird genau wie zuvor ausgeführt IPv4-only. Es gibt keine Verhaltensänderung für bestehende Anwendungen.
-
Dual-stack Subnetze — Die Anwendung wird ausgeführt, IPv4-only sofern Sie IPv6 nicht mit der unter beschriebenen Konfigurationseigenschaft aktivieren. Konfiguration der IPv6-Eigenschaften Wenn Sie IPv6 aktivieren, kann die Anwendung sowohl IPv4 als auch IPv6 verwenden.
-
IPv6-only Subnetze — Die Anwendung wird ausgeführt. IPv6-only Dies ist in allen Release-Versionen verfügbar.
Wenn Sie mehr als ein Subnetz bereitstellen, führt EMR Serverless die gesamte Anwendung in dem einen Adressierungsmodus aus, den jedes Subnetz in der Gruppe unterstützt. Wenn die Subnetze keinen gemeinsamen Modus haben, lehnt EMR Serverless die Anfrage ab. In den folgenden Fällen werden die Arten von Subnetzen beschrieben, die eine Gruppe in beliebiger Anzahl und in beliebiger Kombination enthalten kann.
-
IPv4-only und IPv6-only — EMR Serverless lehnt das Set mit einem Validierungsfehler ab.
-
IPv6-only und Dual-Stack — Das Set wird ausgeführt IPv6-only, einschließlich aller Dual-Stack-Subnetze im Set. Stellen Sie sicher, dass jedes Subnetz in der Gruppe, einschließlich aller Dual-Stack-Subnetze, die Voraussetzungen unter erfüllt. Erfüllung der VPC- und Subnetzvoraussetzungen
-
IPv4-only und Dual-Stack — Das Set wird ausgeführt IPv4-only, einschließlich aller Dual-Stack-Subnetze in der Gruppe.
EMR Serverless bewertet bei jedem Start der Anwendung den Adressierungsmodus anhand der aktuellen Subnetze und der Konfiguration. Eine laufende Anwendung behält den Modus bei, in dem sie gestartet wurde, sodass eine Änderung erst beim nächsten Start wirksam wird.
Die Definitionen von IPv4-only Dual-Stack und IPv6-only Subnetzen finden Sie unter Subnetze für Ihre VPC im Amazon Virtual Private Cloud Cloud-Benutzerhandbuch.
Erfüllung der VPC- und Subnetzvoraussetzungen
Sie sind dafür verantwortlich, Ihre VPC und Subnetze so zu konfigurieren, dass IPv6-Verkehr Ihre Datenspeicher und die AWS Dienste, die Ihre Jobs verwenden, erreichen kann. Konfigurieren Sie Folgendes in Ihrer eigenen VPC, bevor Sie IPv6-Jobs ausführen.
Eine schrittweise Anleitung finden Sie im Amazon Virtual Private Cloud Cloud-Benutzerhandbuch.
-
Ordnen Sie dem Subnetz einen IPv6-Block mit Classless Inter-Domain Routing (CIDR) zu. Jeder Dual-Stack oder jedes IPv6-only Subnetz muss über einen IPv6-CIDR-Block verfügen. Weitere Informationen finden Sie unter Hinzufügen oder Entfernen eines IPv6-CIDR-Blocks aus Ihrem Subnetz und IPv6-Unterstützung für Ihre VPC im Amazon Virtual Private Cloud Cloud-Benutzerhandbuch.
-
Aktivieren Sie die automatische Zuweisung der IPv6-Adresse für das Subnetz. Das Subnetz muss automatisch IPv6-Adressen zuweisen, damit Ihre Anwendung IPv6-Konnektivität erhält. Weitere Informationen finden Sie unter Ändern der IP-Adressierungsattribute Ihres Subnetzes im Amazon Virtual Private Cloud Cloud-Benutzerhandbuch.
-
Aktivieren Sie DNS64 (DNS-based IPv6-to-IPv4 Übersetzung) im Subnetz und geben Sie einen ausgehenden NAT64-Pfad (Netzwerkadressübersetzung von IPv6 nach IPv4) an (). IPv6-only Eine IPv6-only Anwendung benötigt dies, um IPv4-only Endpunkte zu erreichen (z. B. Dienste, die noch keine IPv6-Adresse veröffentlichen). Aktivieren Sie DNS64 im Subnetz und leiten Sie den synthetisierten
64:ff9b::/96Datenverkehr über ein NAT-Gateway weiter, das NAT64 ausführt. Eine Dual-Stack-Anwendung kann IPv4-only Endpunkte über IPv4 erreichen und benötigt dies nicht. Weitere Informationen finden Sie unter DNS64 und NAT64 sowie NAT-Gateways im Amazon Virtual Private Cloud Cloud-Benutzerhandbuch. -
Stellen Sie ein Internet-Gateway nur für ausgehenden privaten IPv6-Verkehr bereit. Damit ein privates Subnetz ausgehende IPv6-Verbindungen initiieren kann, ohne eingehende Verbindungen aus dem Internet anzunehmen, fügen Sie ein Internet-Gateway für ausgehenden Datenverkehr und eine Route zu diesem hinzu.
::/0Weitere Informationen finden Sie unter Aktivieren von ausgehendem IPv6-Verkehr mithilfe eines Internet-Gateways für ausgehenden Datenverkehr im Amazon Virtual Private Cloud Cloud-Benutzerhandbuch. -
Erlauben Sie den ausgehenden IPv6-Verkehr, den Ihre Jobs benötigen, in Ihren Sicherheitsgruppen. Es gelten die bestehenden EMR Serverless Security Group Regeln. Informationen zur allgemeinen Einrichtung von VPC und Sicherheitsgruppen finden Sie unterKonfiguration des VPC-Zugriffs für serverlose EMR-Anwendungen zur Verbindung mit Daten.
IPv6 für Ihre Anwendung konfigurieren
Sie konfigurieren IPv6, wenn Sie eine Anwendung erstellen, oder ändern es später, indem Sie eine vorhandene Anwendung aktualisieren. In beiden Fällen leitet EMR Serverless den Adressierungsmodus von den Subnetzen in ab--network-configuration, wie unter beschrieben. So bestimmt EMR Serverless den Adressierungsmodus Für Dual-Stack-Subnetze aktivieren Sie auch IPv6 mit der unter beschriebenen Eigenschaft. Für IPv6-only Subnetze ist keine Eigenschaft Konfiguration der IPv6-Eigenschaften erforderlich.
So erstellen Sie eine Anwendung
Mit dem folgenden Verfahren wird eine Spark-Anwendung erstellt, die Dual-Stack-Subnetze verwendet und IPv6 aktiviert. Bevor Sie beginnen, stellen Sie sicher, dass jedes Subnetz, das Sie verwenden möchten, die Anforderungen in erfüllt. Erfüllung der VPC- und Subnetzvoraussetzungen
Der folgende AWS CLI Befehl erstellt eine Spark-Anwendung mit Dual-Stack-Subnetzen und aktiviert IPv6:
aws emr-serverless create-application \ --type SPARK \ --namemy-application-name\ --release-label emr-7.14.0 \ --network-configuration '{ "subnetIds": ["subnet-id-1", "subnet-id-2"], "securityGroupIds": ["security-group-id"] }' \ --runtime-configuration '[ { "classification": "spark-defaults", "properties": { "spark.emr-serverless.networking.ipv6.enabled": "true" } } ]' \ --regionAWS_REGION
Ersetzen Sie die folgenden Werte:
-
my-application-name— Der Name, den Sie Ihrer Anwendung geben möchten. -
subnet-id-1,subnet-id-2— Die IDs der Dual-Stack-Subnetze, die Sie verwenden möchten. -
security-group-id— Die ID der Sicherheitsgruppe, die Sie anhängen möchten. -
AWS_REGION— Der AWS-Region Ort, an dem Sie die Anwendung erstellen möchten.
In Dual-Stack-Subnetzen verwendet der Job standardmäßig IPv4. Damit Spark IPv6 bevorzugt, legen Sie die unter beschriebenen Engine-Preference-Eigenschaften fest. Konfiguration der IPv6-Eigenschaften Verwenden Sie für eine Hive-Anwendung die hive-site Klassifizierung --type HIVE und die Eigenschaft. hive.emr-serverless.networking.ipv6.enabled
Anmerkung
Lassen Sie bei IPv6-only Subnetzen den Wert aus. --runtime-configuration Die Anwendung wird automatisch über IPv6 ausgeführt, und Sie legen weder die Eigenschaften „Aktivierung“ noch „Engine-Preference“ fest.
Um eine bestehende Anwendung zu aktualisieren
-
Beenden Sie die Anwendung, falls sie ausgeführt wird.
-
Aktualisieren Sie die Anwendung, während sie sich im
STOPPEDStatusCREATEDoder befindet. Geben Sie die gewünschten Subnetze an und fügen Sie bei--network-configurationDual-Stack-Subnetzen die Aktivierungseigenschaft in ein.--runtime-configurationParameter, die Sie nicht angeben, behalten ihre aktuellen Werte.Der folgende AWS CLI Befehl aktualisiert die Anwendung mit den neuen Subnetzen und der Eigenschaft enablement:
aws emr-serverless update-application \ --application-idapplication-id\ --network-configuration '{ "subnetIds": ["subnet-id-1", "subnet-id-2"], "securityGroupIds": ["security-group-id"] }' \ --runtime-configuration '[ { "classification": "spark-defaults", "properties": { "spark.emr-serverless.networking.ipv6.enabled": "true" } } ]' \ --regionAWS_REGIONErsetzen Sie die folgenden Werte:
-
application-id— Die ID der Anwendung, die Sie aktualisieren möchten. -
subnet-id-1,subnet-id-2— Die IDs der Subnetze, die Sie verwenden möchten. -
security-group-id— Die ID der Sicherheitsgruppe, die Sie anhängen möchten. -
AWS_REGION— Die AWS-Region der Anwendung.
-
-
Starten Sie die Anwendung. EMR Serverless wendet den Adressierungsmodus beim Start an.
Konfiguration der IPv6-Eigenschaften
Die folgenden Eigenschaften steuern IPv6 für Ihre Anwendung und Jobs. Legen Sie die Aktivierungseigenschaft auf Anwendungsebene in fest. runtimeConfiguration Legen Sie die Eigenschaften der Engine-Einstellungen auf Auftragsebene fest, in sparkSubmitParameters für Spark oder with für Hive. --hiveconf
| Engine | Eigenschaft | Wo haben Sie es eingestellt | Standard | Gilt für | Hinweise |
|---|---|---|---|---|---|
| Spark | spark.emr-serverless.networking.ipv6.enabled |
spark-defaults(AnwendungruntimeConfiguration) |
false |
Dual-stack | Aktiviert IPv6 in Dual-Stack-Subnetzen. |
| Spark | spark.emr-serverless.driverEnv.SPARK_PREFER_IPV6 |
sparkSubmitParameters(Beruf) |
false |
Dual-stack (Optional) | Sorgt dafür, dass der Spark-Treiber IPv6 bevorzugt. Wird automatisch für IPv6-only Subnetze festgelegt. Nicht für IPv4-only Subnetze festlegen. |
| Spark | spark.executorEnv.SPARK_PREFER_IPV6 |
sparkSubmitParameters(Beruf) |
false |
Dual-stack (Optional) | Sorgt dafür, dass Spark-Executoren IPv6 bevorzugen. Wird automatisch für Subnetze festgelegt. IPv6-only Nicht für IPv4-only Subnetze festlegen. |
| Hive | hive.emr-serverless.networking.ipv6.enabled |
hive-site(AnwendungruntimeConfiguration) |
false |
Dual-stack | Entspricht der Spark-Aktivierungseigenschaft für Hive-Anwendungen. |
| Hive | JAVA_TOOL_OPTIONS=-Djava.net.preferIPv6Addresses=true |
--hiveconf(Beruf) |
Nicht gesetzt | Dual-stack (Optional) | Dadurch bevorzugt Hive IPv6. Wird automatisch in Subnetzen festgelegt. IPv6-only Nicht für IPv4-only Subnetze festlegen. |
In Dual-Stack-Subnetzen sind sowohl IPv4 als auch IPv6 verfügbar, und die Engine verwendet standardmäßig IPv4. Damit die Engine IPv6 bevorzugt, legen Sie die Engine-Präferenzeigenschaften für Ihre Engine fest. In IPv6-only Subnetzen legt EMR Serverless die IPv6-Präferenz für Sie fest, sodass Sie diese Eigenschaften nicht festlegen. In IPv4-only Subnetzen sollten Sie die Engine-Präferenzeigenschaften nicht festlegen. Da kein IPv6 verfügbar ist, schlägt der Job daher fehl, wenn Sie IPv6 bevorzugen.
Im folgenden Beispiel wird die Spark-Engine so eingestellt, dass sie IPv6 in einem Job bevorzugt. sparkSubmitParameters
--conf spark.emr-serverless.driverEnv.SPARK_PREFER_IPV6=true --conf spark.executorEnv.SPARK_PREFER_IPV6=true
Wichtig
Erzwingen Sie den IPv4-Stack in der JVM nicht -Djava.net.preferIPv4Stack=true in einem beliebigen Adressierungsmodus (indem Sie beispielsweise spark.driver.extraJavaOptions oder einstellenspark.executor.extraJavaOptions).
Weitere Informationen zur Deklaration runtimeConfiguration auf Anwendungsebene finden Sie unter Standardanwendungskonfiguration für EMR Serverless. Weitere Informationen zur Weitergabe von Engine-Konfigurationen finden Sie unter Verwenden von Spark-Konfigurationen bei der Ausführung von EMR Serverless-Jobs und Verwenden von Hive-Konfigurationen beim Ausführen von EMR Serverless-Jobs.
Überlegungen und Einschränkungen
-
Der Adressierungsmodus kann nicht über die API festgelegt werden. Um ihn zu ändern, ändern Sie Ihre Subnetze (oder die
spark.emr-serverless.networking.ipv6.enabledOpt-in-Eigenschaft für Dual-Stack-Subnetze) und starten Sie die Anwendung neu. -
IPv4-only und IPv6-only Subnetze können nicht in einer Anwendung gemischt werden.
-
Ihr Jobcode und alle SDKs, Treiber oder Endpoints, die er verwendet, müssen IPv6 unterstützen, wenn die Anwendung ausgeführt wird. IPv6-only Mit EMR Serverless erhalten Sie IPv6-Konnektivität. Ihr Anwendungscode oder die Endgeräte von Drittanbietern werden dadurch nicht verändert.
Fehlerbehebung
Dieses Thema hilft Ihnen dabei, häufig auftretende IPv6-Netzwerkprobleme mit serverlosen EMR-Anwendungen zu diagnostizieren und zu beheben, darunter DNS-Auflösungsfehler, fehlende automatisch zugewiesene IPv6-Adressen, unerwartete IPv4-Nutzung und Fehler bei der Subnetzüberprüfung. Im Folgenden werden Symptome beschrieben, die bei der Ausführung von IPv6-Aufträgen auftreten können, und es wird beschrieben, wie Sie bei den einzelnen Problemen vorgehen können.
Fehler bei der DNS-Auflösung () UnknownHostException
Dies kann bei einer IPv6-only Anwendung passieren, wenn im Subnetz DNS64 oder ein NAT64-Ausgangspfad fehlt, sodass Jobs die benötigten Endpunkte nicht erreichen können. Aktivieren Sie DNS64 und stellen Sie in jedem Subnetz der Anwendung ein NAT-Gateway für NAT64 bereit, wie weiter oben in diesem Thema unter beschrieben. Erfüllung der VPC- und Subnetzvoraussetzungen
Dual-stack Das Subnetz weist IPv6-Adressen nicht automatisch zu
Dies kann passieren, wenn einem Subnetz ein IPv6-CIDR-Block zugeordnet ist, aber IPv6-Adressen nicht automatisch zugewiesen werden, sodass die Anwendung nicht die erwartete IPv6-Konnektivität erhält. Aktivieren Sie die automatische Zuweisung der IPv6-Adresse für das Subnetz, wie weiter oben in diesem Thema beschrieben, und starten Sie dann einen neuen Job. Die Einstellung gilt nur für Ressourcen, die erstellt wurden, nachdem Sie sie geändert haben.
Job läuft über IPv4 in einer Dual-Stack-Anwendung
In Dual-Stack-Subnetzen kann dies aus einem von zwei Gründen geschehen. Erstens haben Sie IPv6 nicht mit der Konfigurationseigenschaft aktiviert, sodass die Anwendung ausgeführt wird. IPv4-only Zweitens haben Sie IPv6 aktiviert, aber die Engine nicht so eingestellt, dass sie es bevorzugt, sodass die Engine IPv4 verwendet. Bestätigen Sie sowohl die Aktivierungseigenschaft als auch die Engine-Preference-Eigenschaften unter. Konfiguration der IPv6-Eigenschaften
Job schlägt fehl mit UnresolvedAddressException
Dies kann passieren, wenn der Job den IPv4-Stack in der JVM erzwingt. Entfernen Sie -Djava.net.preferIPv4Stack=true (und alle gleichwertigen Einstellungen) aus Ihrer Job-Konfiguration und reichen Sie den Job erneut ein. Siehe Konfiguration der IPv6-Eigenschaften.
Die Anfrage schlägt mit einem Validierungsfehler bei inkompatiblen Subnetzen fehl
Dies kann passieren, wenn Sie Subnetze angeben, die nicht zusammen ausgeführt werden können, z. B. wenn Subnetze mit IPv4-only Subnetzen gemischt sind, oder wenn die spark.emr-serverless.networking.ipv6.enabled Opt-in-Eigenschaft auf „solange die Anwendung ein IPv6-only Subnetz enthält“ gesetzt ist. true IPv4-only Überprüfen Sie Ihre Subnetze anhandSo bestimmt EMR Serverless den Adressierungsmodus, passen Sie sie oder die Opt-in-Eigenschaft an und versuchen Sie es erneut mit der Anfrage.