Anwendungen für die Verwendung einer bestimmten Java Virtual Machine 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.

Anwendungen für die Verwendung einer bestimmten Java Virtual Machine konfigurieren

EMRAmazon-Versionen haben unterschiedliche Standardversionen von Java Virtual Machine (JVM). Auf dieser Seite wird die JVM Unterstützung für verschiedene Versionen und Anwendungen erklärt.

Überlegungen

Informationen zu den unterstützten Java-Versionen für Anwendungen finden Sie auf den Anwendungsseiten im Amazon EMR Release Guide.

  • Amazon unterstützt EMR nur die Ausführung einer Runtime-Version in einem Cluster und unterstützt nicht die Ausführung verschiedener Knoten oder Anwendungen auf verschiedenen Runtime-Versionen auf demselben Cluster.

  • Für Amazon EMR 7.x ist Java 17 die standardmäßige Java Virtual Machine (JVM) für Anwendungen, die Java 17 unterstützen, mit Ausnahme von Apache Livy. Weitere Informationen zu den unterstützten JDK Versionen für Anwendungen finden Sie auf der entsprechenden Release-Seite im Amazon EMR Release Guide.

  • Ab Amazon EMR 7.1.0 unterstützt Flink Java 17 und ist standardmäßig auf Java 17 eingestellt. Um eine andere Version der Java-Runtime zu verwenden, überschreiben Sie die Einstellungen in. flink-conf Weitere Informationen zur Konfiguration von Flink für die Verwendung von Java 8 oder Java 11 finden Sie unter Konfigurieren von Flink für die Ausführung mit Java 11.

  • Für Amazon EMR 5.x und 6.x ist Java 8 die standardmäßige Java Virtual Machine (JVM).

    • Für EMR Amazon-Versionen 6.12.0 und höher unterstützen einige Anwendungen auch Java 11 und 17.

    • Für EMR Amazon-Versionen 6.9.0 und höher unterstützt Trino standardmäßig Java 17. Weitere Informationen über Java 17 mit Trino finden Sie unter Trino-Updates für Java 17 im Trino-Blog.

Beachten Sie bei der Auswahl Ihrer Laufzeit-Version die folgenden anwendungsspezifischen Überlegungen:

Anwendungsspezifische Java-Konfigurationshinweise
Anwendung Hinweise zur Java-Konfigurationen

Spark

Um Spark mit einer nicht standardmäßigen Java-Version auszuführen, müssen Sie sowohl Spark als auch Hadoop konfigurieren. Beispiele finden Sie unter Überschreiben Sie die JVM.

  • Konfigurieren Sie JAVA_HOME in spark-env, um die Java-Laufzeit der primären Instanceprozesse zu aktualisieren. Zum Beispiel spark-submit, spark-shell und Spark History Server.

  • Ändern Sie die Hadoop-Konfiguration, um die Java-Laufzeit der Spark-Executors und der YARN ApplicationMaster

Spark RAPIDS

Sie können RAPIDS mit der konfigurierten Java-Version für Spark arbeiten.

Iceberg

Sie können Iceberg mit der konfigurierten Java-Version der Anwendung ausführen, die es verwendet.

Delta

Sie können Delta mit der konfigurierten Java-Version der Anwendung ausführen, die es verwendet.

Hudi

Sie können Hudi mit der konfigurierten Java-Version der Anwendung ausführen, die es verwendet.

Hadoop

Um das JVM für Hadoop zu aktualisieren, ändern Siehadoop-env. Beispiele finden Sie unter Überschreiben Sie die JVM.

Hive

Um die Java-Version für Hive auf 11 oder 17 festzulegen, konfigurieren Sie die JVM Hadoop-Einstellung auf die Java-Version, die Sie verwenden möchten.

HBase

Um das JVM für zu aktualisierenHBase, ändern Sie es. hbase-env Standardmäßig EMR legt Amazon das HBase JVM basierend auf der JVM Konfiguration für Hadoop fest, sofern Sie die Einstellungen in hbase-env nicht überschreiben. Beispiele finden Sie unter Überschreiben Sie die JVM.

Flink

Um das JVM für Flink zu aktualisieren, ändern Sie. flink-conf Standardmäßig EMR legt Amazon den Flink auf der JVM Grundlage der JVM Konfiguration für Hadoop fest, sofern Sie die Einstellungen in nicht überschreiben. flink-conf Weitere Informationen finden Sie unter Flink für die Ausführung mit Java 11 konfigurieren.

Oozie

Um Oozie für die Ausführung unter Java 11 oder 17 zu konfigurieren, konfigurieren Sie Oozie Server, den Oozie LauncherAM Launcher AM und ändern Sie Ihre clientseitigen ausführbaren Dateien und Auftragskonfigurationen. Sie können EmbeddedOozieServer auch für die Ausführung unter Java 17 konfigurieren. Weitere Informationen finden Sie unter Die Java-Version für Oozie konfigurieren.

Pig

Pig unterstützt nur Java 8. Sie können Java 11 oder 17 nicht mit Hadoop verwenden und Pig auf demselben Cluster ausführen.

Überschreiben Sie die JVM

Um die JVM Einstellung für eine EMR Amazon-Version zu überschreiben — zum Beispiel um Java 17 mit einem Cluster zu verwenden, der Amazon EMR Version 6.12.0 verwendet — geben Sie die JAVA_HOME Einstellung an die Umgebungsklassifizierung an, die application-env für alle Anwendungen außer Flink gilt. Für Flink lautet die Umgebungsklassifizierung flink-conf. Schritte zur Konfiguration der Java-Laufzeit mit Flink finden Sie unter Flink für die Ausführung mit Java 11 konfigurieren.

Überschreiben Sie die JVM Einstellung mit Apache Spark

Wenn Sie Spark mit EMR Amazon-Versionen 6.12 und höher verwenden und einen Treiber für die Einreichung im Cluster-Modus schreiben, verwendet der Treiber Java 8, aber Sie können die Umgebung so einstellen, dass die Executoren Java 11 oder 17 verwenden. Und wenn Sie Spark mit EMR Amazon-Versionen unter 5.x verwenden und einen Treiber für die Einreichung im Cluster-Modus schreiben, verwendet der Treiber Java 7. Die Umgebung kann dann aber so eingestellt werden, dass die Executors Java 8 verwenden.

Um den JVM für Spark zu überschreiben, empfehlen wir, dass Sie sowohl die Hadoop- als auch die Spark-Klassifizierung festlegen.

{ "Classification": "hadoop-env", "Configurations": [ { "Classification": "export", "Configurations": [], "Properties": { "JAVA_HOME": "/usr/lib/jvm/java-1.8.0" } } ], "Properties": {} }, { "Classification": "spark-env", "Configurations": [ { "Classification": "export", "Configurations": [], "Properties": { "JAVA_HOME": "/usr/lib/jvm/java-1.8.0" } } ], "Properties": {} }

Überschreiben Sie die JVM Einstellung mit Apache HBase

Um die Verwendung von Java 11 HBase zu konfigurieren, können Sie beim Starten des Clusters die folgende Konfiguration festlegen.

[ { "Classification": "hbase-env", "Configurations": [ { "Classification": "export", "Configurations": [], "Properties": { "JAVA_HOME": "/usr/lib/jvm/jre-11" } } ], "Properties": {} } ]

Überschreiben Sie die JVM Einstellung mit Apache Hadoop und Hive

Das folgende Beispiel zeigt, wie Sie die für Hadoop und Hive JVM auf Version 17 setzen.

[ { "Classification": "hadoop-env", "Configurations": [ { "Classification": "export", "Configurations": [], "Properties": { "JAVA_HOME": "/usr/lib/jvm/jre-17" } } ], "Properties": {} } ]

Service-Ports

Im Folgenden sind YARN HDFS Service-Ports aufgeführt. Diese Einstellungen stellen die Hadoop-Standardwerte dar. Andere Anwendungsservices werden bei Standard-Ports gehostet, sofern nicht anders dokumentiert. Weitere Informationen enthält die Projektdokumentation der Anwendung.

Porteinstellungen für YARN und HDFS
Einstellung Hostname/Port

fs.default.name

Standard (hdfs://emrDeterminedIP:8020)

dfs.datanode.address

Standard (0.0.0.0:50010)

dfs.datanode.http.address

Standard (0.0.0.0:50075)

dfs.datanode.https.address

Standard (0.0.0.0:50475)

dfs.datanode.ipc.address

Standard (0.0.0.0:50020)

dfs.http.address

Standard (0.0.0.0:50070)

dfs.https.address

Standard (0.0.0.0:50470)

dfs.secondary.http.address

Standard (0.0.0.0:50090)

yarn.nodemanager.address

Standard (${yarn.nodemanager.hostname}:0)

yarn.nodemanager.localizer.address

Standard (${yarn.nodemanager.hostname}:8040)

yarn.nodemanager.webapp.address

Standard (${yarn.nodemanager.hostname}:8042)

yarn.resourcemanager.address

Standard (${yarn.resourcemanager.hostname}:8032)

yarn.resourcemanager.admin.address

Standard (${yarn.resourcemanager.hostname}:8033)

yarn.resourcemanager.resource-tracker.address

Standard (${yarn.resourcemanager.hostname}:8031)

yarn.resourcemanager.scheduler.address

Standard (${yarn.resourcemanager.hostname}:8030)

yarn.resourcemanager.webapp.address

Standard (${yarn.resourcemanager.hostname}:8088)

yarn.web-proxy.address

Standard (no-value)

yarn.resourcemanager.hostname

emrDeterminedIP

Anmerkung

Der Begriff emrDeterminedIP ist eine IP-Adresse, die von der EMR Amazon-Steuerebene generiert wird. In der neueren Version wurde diese Konvention entfernt, mit Ausnahme der Einstellungen yarn.resourcemanager.hostname und fs.default.name.

Anwendungsbenutzer

Die Anwendungen führen Prozesse als deren eigene Benutzer aus. Zum Beispiel Hive „Als Benutzer JVMs ausführen“ hivemapred, „ MapReduce JVMsAusführen als“ usw. Dies wird im folgenden Prozessstatusbeispiel gezeigt.

USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND hive 6452 0.2 0.7 853684 218520 ? Sl 16:32 0:13 /usr/lib/jvm/java-openjdk/bin/java -Xmx256m -Dhive.log.dir=/var/log/hive -Dhive.log.file=hive-metastore.log -Dhive.log.threshold=INFO -Dhadoop.log.dir=/usr/lib/hadoop hive 6557 0.2 0.6 849508 202396 ? Sl 16:32 0:09 /usr/lib/jvm/java-openjdk/bin/java -Xmx256m -Dhive.log.dir=/var/log/hive -Dhive.log.file=hive-server2.log -Dhive.log.threshold=INFO -Dhadoop.log.dir=/usr/lib/hadoop/l hbase 6716 0.1 1.0 1755516 336600 ? Sl Jun21 2:20 /usr/lib/jvm/java-openjdk/bin/java -Dproc_master -XX:OnOutOfMemoryError=kill -9 %p -Xmx1024m -ea -XX:+UseConcMarkSweepGC -XX:+CMSIncrementalMode -Dhbase.log.dir=/var/ hbase 6871 0.0 0.7 1672196 237648 ? Sl Jun21 0:46 /usr/lib/jvm/java-openjdk/bin/java -Dproc_thrift -XX:OnOutOfMemoryError=kill -9 %p -Xmx1024m -ea -XX:+UseConcMarkSweepGC -XX:+CMSIncrementalMode -Dhbase.log.dir=/var/ hdfs 7491 0.4 1.0 1719476 309820 ? Sl 16:32 0:22 /usr/lib/jvm/java-openjdk/bin/java -Dproc_namenode -Xmx1000m -Dhadoop.log.dir=/var/log/hadoop-hdfs -Dhadoop.log.file=hadoop-hdfs-namenode-ip-10-71-203-213.log -Dhadoo yarn 8524 0.1 0.6 1626164 211300 ? Sl 16:33 0:05 /usr/lib/jvm/java-openjdk/bin/java -Dproc_proxyserver -Xmx1000m -Dhadoop.log.dir=/var/log/hadoop-yarn -Dyarn.log.dir=/var/log/hadoop-yarn -Dhadoop.log.file=yarn-yarn- yarn 8646 1.0 1.2 1876916 385308 ? Sl 16:33 0:46 /usr/lib/jvm/java-openjdk/bin/java -Dproc_resourcemanager -Xmx1000m -Dhadoop.log.dir=/var/log/hadoop-yarn -Dyarn.log.dir=/var/log/hadoop-yarn -Dhadoop.log.file=yarn-y mapred 9265 0.2 0.8 1666628 260484 ? Sl 16:33 0:12 /usr/lib/jvm/java-openjdk/bin/java -Dproc_historyserver -Xmx1000m -Dhadoop.log.dir=/usr/lib/hadoop/logs -Dhadoop.log.file=hadoop.log -Dhadoop.home.dir=/usr/lib/hadoop