設定應用程式以使用特定 Java 虛擬機器 - Amazon EMR

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

設定應用程式以使用特定 Java 虛擬機器

Amazon EMR 版本具有不同的默認 Java 虛擬機器(JVM)版本。此頁面說明對不同版本和應用程式的JVM支援。

考量事項

如需有關應用程式支援的 Java 版本的資訊,請參閱 Amazon EMR 版本指南中的應用程式頁面。

  • Amazon EMR 僅支援在叢集中執行一個執行階段版本,不支援在同一叢集上的不同執行階段版本上執行不同的節點或應用程式。

  • 對於 Amazon EMR 7.x,對於支持 Java 17 的應用程序,默認的 Java 虛擬機器(JVM)是 Java 17,但阿帕奇利維除外。如需有關應用程式支援JDK版本的詳細資訊,請參閱 Amazon 版本指南中對應的EMR版本頁面。

  • 從 Amazon EMR 7.1.0 開始,Flink 支持並默認設置為 Java 17。若要使用不同版本的 Java 執行階段,請覆寫中的設定flink-conf。如需有關將快顯連結設定為使用 Java 8 或 Java 11 的詳細資訊,請參閱將快顯連結設定為使用 Java 11 執行

  • 對於 Amazon EMR 5.x 和 6.x,默認的 Java 虛擬機(JVM)是 Java 8。

    • 對於 Amazon 6.12.0 及更高EMR版本,某些應用程式也支援 Java 11 和 17。

    • 對於 Amazon 6.9.0 及更高EMR版本,天合金支持 Java 17 作為默認版本。如需有關 Java 17 與 Trino 的詳細資訊,請參閱 Trino 部落格上的 Trino 對 Java 17 的更新

在選擇執行期版本時,請記住下列應用程式特定的考量事項:

應用程式特定的 Java 組態注意事項
應用程式 Java 組態注意事項

Spark

若要使用非預設 Java 版本執行 Spark,您必須同時設定 Spark 和 Hadoop。如需範例,請參閱 覆寫 JVM

  • spark-env 中設定 JAVA_HOME 以更新主要執行個體程序的 Java 執行期。例如,spark-submit、spark-shell 和 Spark 歷史記錄伺服器。

  • 修改 Hadoop 的配置來更新星火執行程序的 Java 運行時和 YARN ApplicationMaster

火花 RAPIDS

您可以RAPIDS使用配置的 Java 版本為星火運行。

Iceberg

您可以透過正在使用 Iceberg 的應用程式的已設定 Java 版本執行 Iceberg。

Delta

您可以透過正在使用 Delta 的應用程式的已設定 Java 版本執行 Delta。

Hudi

您可以透過正在使用 Hudi 的應用程式的已設定 Java 版本執行 Hudi。

Hadoop

若要更新的 Hadoop 的,JVM請修改hadoop-env。如需範例,請參閱 覆寫 JVM

Hive

若要將 Java 版本設定為 11 或 17 的蜂巢,請將 Hadoop JVM 設定設定為您要使用的 Java 版本。

HBase

若要更新JVM的HBase,請修改hbase-env。默認情況下,Amazon HBase JVM 根據 Hadoop 的JVM配置進行EMR設置,除非您覆蓋中hbase-env的設置。如需範例,請參閱 覆寫 JVM

Flink

若要更新 Flink 的,JVM請修改flink-conf。默認情況下,Amazon JVM 根據 Hadoop 的配置EMR設JVM置 Flink,除非您覆蓋中的設置。flink-conf如需詳細資訊,請參閱 將 Flink 設定為使用 Java 11 執行

Oozie

若要將 Oozie 設定為在 Java 11 或 17 上執行,請設定 Oozie 伺服器和 Oozie Launcher AM,並變更用戶端可執行檔和作業組態。您也可以將 EmbeddedOozieServer 設定為在 Java 17 上執行。如需詳細資訊,請參閱 設定適用於 Oozie 的 Java 版本

Pig

Pig 僅支援 Java 8。您無法將 Java 11 或 17 與 Hadoop 搭配使用並在相同叢集上執行 Pig。

覆寫 JVM

若要覆寫 Amazon EMR 版本的JVM設定 (例如,將 Java 17 與使用 Amazon EMR 版本 6.12.0 的叢集搭配使用),請將設定提供給其環境分類,該JAVA_HOME設定application-env適用於除 Flink 以外的所有應用程式。對於 Flink,環境分類為 flink-conf。如需使用 Flink 設定 Java 執行期的步驟,請參閱 將 Flink 設定為使用 Java 11 執行

覆蓋與阿帕奇星火JVM設置

當您在 Amazon 6.12 及更高EMR版本中使用 Spark 時,如果您在叢集模式下編寫提交的驅動程式,則驅動程式會使用 Java 8,但是您可以設定環境,以便執行者使用 Java 11 或 17。當您將 Spark 與 Amazon EMR 版本低於 5.x 的版本一起使用時,並且在集群模式下編寫用於提交的驅動程序時,驅動程序使用 Java 7。不過,您可以設定環境來確保執行程式使用 Java 8。

要覆蓋星火,我們建議您同時設置 Hadoop 和星火分類。JVM

{ "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": {} }

使用阿帕奇覆蓋JVM設置 HBase

若HBase要設定為使用 Java 11,您可以在啟動叢集時設定下列組態。

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

覆蓋與阿帕奇 Hadoop 和蜂巢的JVM設置

下面的示例演示了如何設置JVM為版本 17 的 Hadoop 和蜂巢。

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

服務連接埠

以下是YARN和HDFS服務端口。這些設定反映出 Hadoop 的預設值。其他應用程式服務託管於預設連接埠上,除非另有說明。如需詳細資訊,請參閱應用程式的專案文件。

和的連接埠設YARN定 HDFS
設定 主機名稱/連接埠

fs.default.name

默認(hdfs://emrDeterminedIP:8020

dfs.datanode.address

默認(0.0.0.0:50010

dfs.datanode.http.address

默認(0.0.0.0:50075

dfs.datanode.https.address

默認(0.0.0.0:50475

dfs.datanode.ipc.address

默認(0.0.0.0:50020

dfs.http.address

默認(0.0.0.0:50070

dfs.https.address

默認(0.0.0.0:50470

dfs.secondary.http.address

默認(0.0.0.0:50090

yarn.nodemanager.address

默認(${yarn.nodemanager.hostname}:0

yarn.nodemanager.localizer.address

默認(${yarn.nodemanager.hostname}:8040

yarn.nodemanager.webapp.address

默認(${yarn.nodemanager.hostname}:8042

yarn.resourcemanager.address

默認(${yarn.resourcemanager.hostname}:8032

yarn.resourcemanager.admin.address

默認(${yarn.resourcemanager.hostname}:8033

yarn.resourcemanager.resource-tracker.address

默認(${yarn.resourcemanager.hostname}:8031

yarn.resourcemanager.scheduler.address

默認(${yarn.resourcemanager.hostname}:8030

yarn.resourcemanager.webapp.address

默認(${yarn.resourcemanager.hostname}:8088

yarn.web-proxy.address

默認(no-value

yarn.resourcemanager.hostname

emrDeterminedIP

注意

該術語 emrDeterminedIP 是由 Amazon EMR 控制平面生成的 IP 地址。在較新的版本中,已移除此慣例,但 yarn.resourcemanager.hostnamefs.default.name 設定除外。

應用程式使用者

應用程式會以本身擁有的使用者身分執行程序。例如,蜂巢以用戶身份JVMs運 MapReduce JVMs行hive,運行身份mapred,等等。這會在下列程序狀態範例中示範。

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