本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
配置应用程序来使用特定 Java 虚拟机
Amazon EMR 版本具有不同的默认 Java 虚拟机 (JVM) 版本。本页说明了对不同版本和应用程序的JVM支持。
注意事项
有关应用程序支持的 Java 版本的信息,请参阅 Amazon EMR 发行指南中的应用程序页面。
-
Amazon EMR 仅支持在一个集群中运行一个运行时版本,不支持在同一集群上的不同运行时版本上运行不同的节点或应用程序。
-
对于亚马逊 EMR 7.x,支持 Java 17 的应用程序的默认 Java 虚拟机 (JVM) 为 Java 17,Apache Livy 除外。有关应用程序支持的JDK版本的更多信息,请参阅《Amazon 发行指南》中的相应EMR发布页面。
-
从亚马逊 EMR 7.1.0 开始,Flink 支持并默认设置为 Java 17。要使用其他版本的 Java 运行时,请覆盖中的设置
flink-conf
。有关将 Flink 配置为使用 Java 8 或 Java 11 的更多信息,请参阅将 Flink 配置为使用 Java 11 运行。 -
对于亚马逊 EMR 5.x 和 6.x,默认 Java 虚拟机 (JVM) 是 Java 8。
-
对于亚马逊EMR版本 6.12.0 及更高版本,某些应用程序还支持 Java 11 和 17。
-
对于亚马逊6.9.0及更高EMR版本,Trino默认支持Java 17。有关 Trino 上 Java 17 的更多信息,请参阅 Trino 博客上的 Trino updates to Java 17
。
-
在选择运行时系统版本时,请记住以下特定于应用程序的注意事项:
特定于应用程序的 Java 配置说明 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
应用程序 | Java 配置说明 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Spark |
要使用非默认 Java 版本运行 Spark,必须同时配置 Spark 和 Hadoop。有关示例,请参阅覆盖 JVM。
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
火花 RAPIDS |
你可以RAPIDS使用为 Spark 配置的 Java 版本运行。 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Iceberg |
您可以使用正在使用 Iceberg 的应用程序的已配置 Java 版本来运行 Iceberg。 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Delta |
您可以使用正在使用 Delta 的应用程序的已配置 Java 版本来运行 Delta。 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Hudi |
您可以使用正在使用 Hudi 的应用程序的已配置 Java 版本来运行 Hudi。 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Hadoop |
要更新JVM适用于 Hadoop 的,请进行修改。 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Hive |
要将 Hive 的 Java 版本设置为 11 或 17,请将 Hadoop JVM 设置配置为要使用的 Java 版本。 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
HBase |
要更新 fo JVM rHBase,请修改 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Flink |
要更新 Flink JVM 的,请进行修改 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Oozie |
要将 Oozie 配置为在 Java 11 或 17 上运行,请配置 Oozie Server、Oozie LauncherAM Launcher AM,然后更改客户端可执行文件和作业配置。您也可以将 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Pig | Pig 仅支持 Java 8。您无法在 Hadoop 中使用 Java 11 或 17,也不能在同一个集群上运行 Pig。 |
覆盖 JVM
要覆盖亚马逊EMR版本的JVM设置(例如,在使用 Amazon 6.12.0 EMR 版本的集群中使用 Java 17),请为其环境分类提供该JAVA_HOME
设置,该设置
适用于除了 Flink 之外的所有应用程序。对于 Flink 来说,环境分类是 application
-envflink-conf
。有关使用 Flink 配置 Java 运行时系统的步骤,请参阅 将 Flink 配置为使用 Java 11 运行。
使用 Apache Spark 覆盖该JVM设置
在 Amazon 6.12 及更高EMR版本中使用 Spark 时,如果您编写驱动程序以在集群模式下提交,则驱动程序使用 Java 8,但您可以将环境设置为执行程序使用 Java 11 或 17。而且,当你在 Amazon EMR 版本低于 5.x 的情况下使用 Spark,并编写驱动程序以在集群模式下提交时,驱动程序使用 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 覆盖该JVM设置 HBase
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 的版本设置为版本 17。JVM
[ { "Classification": "hadoop-env", "Configurations": [ { "Classification": "export", "Configurations": [], "Properties": { "JAVA_HOME": "/usr/lib/jvm/jre-17" } } ], "Properties": {} } ]
服务端口
以下是YARN和HDFS服务端口。这些设置反映 Hadoop 默认值。其它应用程序服务托管在默认端口上,除非另有指定。有关更多信息,请参阅应用程序的项目文档。
YARN和的端口设置 HDFS | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
设置 | 主机名/端口 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
默认 ( |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
默认 ( |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
默认 ( |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
默认 ( |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
默认 ( |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
默认 ( |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
默认 ( |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
默认 ( |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
默认 ( |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
默认 ( |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
默认 ( |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
默认 ( |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
默认 ( |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
默认 ( |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
默认 ( |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
默认 ( |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
默认 ( |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
注意
这个词 emrDeterminedIP
是由 Amazon EMR 控制平面生成的 IP 地址。在较新的版本中,已删除该约定,但 yarn.resourcemanager.hostname
和 fs.default.name
设置除外。
应用程序用户
应用程序以自己的用户身份运行进程。例如,Hive 以用户身份JVMs运行hive
、以用户身份 MapReduce JVMs运行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