選取您的 Cookie 偏好設定

我們使用提供自身網站和服務所需的基本 Cookie 和類似工具。我們使用效能 Cookie 收集匿名統計資料,以便了解客戶如何使用我們的網站並進行改進。基本 Cookie 無法停用,但可以按一下「自訂」或「拒絕」以拒絕效能 Cookie。

如果您同意,AWS 與經核准的第三方也會使用 Cookie 提供實用的網站功能、記住您的偏好設定,並顯示相關內容,包括相關廣告。若要接受或拒絕所有非必要 Cookie,請按一下「接受」或「拒絕」。若要進行更詳細的選擇,請按一下「自訂」。

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

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

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

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

Amazon EMR 發行版本具有不同的預設 Java 虛擬機器 (JVM) 版本。本頁說明不同發行版本和應用程式的 JVM 支援。

考量事項

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

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

  • 對於 Amazon EMR 7.x,預設 Java Virtual Machine (JVM) 為 Java 17,適用於支援 Java 17 的應用程式,但 Apache Livy 除外。如需有關應用程式支援的 JDK 版本的詳細資訊,請參閱《Amazon EMR 版本指南》中的對應版本頁面。

  • 從 Amazon EMR 7.1.0 開始,Flink 預設支援 和 ,設定為 Java 17。若要使用不同版本的 Java 執行期,請覆寫 中的設定flink-conf。如需設定 Flink 以使用 Java 8 或 Java 11 的詳細資訊,請參閱設定 Flink 以搭配 Java 11 執行

  • 對於 Amazon EMR 5.x 及 6.x 版,預設 Java Virtual Machine (JVM) 為 Java 8。

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

    • 對於 Amazon EMR 6.9.0 版及更高版本,Trino 支援 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 組態以更新 Spark 執行程式和 YARN ApplicationMaster 的 Java 執行期

Spark RAPIDS

您可以使用為 Spark 設定的 Java 版本來執行 RAPIDS。

Iceberg

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

Delta

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

Hudi

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

Hadoop

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

Hive

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

HBase

若要更新用於 HBase 的 JVM,請修改 hbase-env。依預設,Amazon EMR 根據 Hadoop 的 JVM 組態設定 HBase JVM,除非您覆寫 hbase-env 中的設定。如需範例,請參閱 覆寫 JVM

Flink

若要更新用於 Flink 的 JVM,請修改 flink-conf。依預設,Amazon EMR 根據 Hadoop 的 JVM 組態設定 Flink JVM,除非您覆寫 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 設定,對於除 Flink 之外的所有應用程式都為 application-env。對於 Flink,環境分類為 flink-conf。如需使用 Flink 設定 Java 執行期的步驟,請參閱 將 Flink 設定為使用 Java 11 執行

使用 Apache Spark 覆寫 JVM 設定

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

若要覆寫用於 Spark 的 JVM,建議您同時設定 Hadoop 和 Spark 分類。

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

使用 Apache HBase 覆寫 JVM 設定

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

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

使用 Apache Hadoop 和 Hive 覆寫 JVM 設定

下列範例顯示如何將 Hadoop 和 Hive 的 JVM 設定為第 17 版。

[ { "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 設定除外。

應用程式使用者

應用程式會以本身擁有的使用者身分執行程序。例如,Hive JVM 會以使用者 hive 的身分執行,MapReduce JVM 會以 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
隱私權網站條款Cookie 偏好設定
© 2025, Amazon Web Services, Inc.或其附屬公司。保留所有權利。