Configuración de aplicaciones para utilizar una máquina virtual de Java específica - Amazon EMR

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Configuración de aplicaciones para utilizar una máquina virtual de Java específica

EMRLas versiones de Amazon tienen diferentes versiones predeterminadas de Java Virtual Machine (JVM). En esta página se explica la JVM compatibilidad con diferentes versiones y aplicaciones.

Consideraciones

Para obtener información sobre las versiones de Java compatibles con las aplicaciones, consulte las páginas de aplicaciones de la Amazon EMR Release Guide.

  • Amazon EMR solo admite la ejecución de una versión de tiempo de ejecución en un clúster y no admite la ejecución de diferentes nodos o aplicaciones en diferentes versiones de tiempo de ejecución del mismo clúster.

  • En Amazon EMR 7.x, la máquina virtual Java predeterminada (JVM) es Java 17 para las aplicaciones compatibles con Java 17, con la excepción de Apache Livy. Para obtener más información sobre las JDK versiones compatibles de las aplicaciones, consulta la página de lanzamiento correspondiente en la Guía de versiones de AmazonEMR.

  • A partir de Amazon EMR 7.1.0, Flink admite Java 17 y está configurado en Java 17 de forma predeterminada. Para usar una versión diferente del motor de ejecución de Java, anule la configuración de. flink-conf Para obtener más información sobre cómo configurar Flink para que utilice Java 8 o Java 11, consulte Configurar Flink para que se ejecute con Java 11.

  • Para Amazon EMR 5.x y 6.x, la máquina virtual Java predeterminada (JVM) es Java 8.

    • Para las EMR versiones 6.12.0 y posteriores de Amazon, algunas aplicaciones también son compatibles con Java 11 y 17.

    • Para las EMR versiones 6.9.0 y superiores de Amazon, Trino es compatible con Java 17 de forma predeterminada. Para obtener más información sobre Java 17 con Trino, consulte Trino updates to Java 17 en el blog de Trino.

Tenga en cuenta las siguientes consideraciones específicas de la aplicación al elegir la versión del tiempo de ejecución:

Notas de configuración de Java específicas de aplicaciones
Aplicación Notas de configuración de Java

Spark

Para ejecutar Spark con una versión de Java no predeterminada, debe configurar tanto Spark como Hadoop. Para ver ejemplos, consulte Anule la JVM.

  • Configure JAVA_HOME en spark-env para actualizar el tiempo de ejecución de Java de los procesos de la instancia principal. Por ejemplo, spark-submit, spark-shell y el servidor de historial de Spark.

  • Modifique la configuración de Hadoop para actualizar el tiempo de ejecución de Java de los ejecutores de Spark y el YARN ApplicationMaster

Spark RAPIDS

Puede ejecutarlo RAPIDS con la versión Java configurada para Spark.

Iceberg

Puede ejecutar Iceberg con la versión de Java configurada de la aplicación que lo utiliza.

Delta

Puede ejecutar Delta con la versión Java configurada de la aplicación que la utiliza.

Hudi

Puede ejecutar Hudi con la versión Java configurada de la aplicación que la utiliza.

Hadoop

Para actualizarlo JVM para Hadoop, modifíquelo. hadoop-env Para ver ejemplos, consulte Anule la JVM.

Hive

Para establecer la versión de Java en 11 o 17 para Hive, configure la JVM configuración de Hadoop en función de la versión de Java que desee utilizar.

HBase

Para actualizar el formulario, JVM modifíqueloHBase. hbase-env De forma predeterminada, Amazon lo EMR establece en HBase JVM función de la JVM configuración de Hadoop, a menos que se anule la configuración de. hbase-env Para ver ejemplos, consulte Anule la JVM.

Flink

Para actualizarlo JVM para Flink, modifíquelo. flink-conf De forma predeterminada, Amazon EMR establece el Flink en JVM función de la JVM configuración de Hadoop, a menos que se anule la configuración de. flink-conf Para obtener más información, consulte Configuración de Flink para que se ejecute con Java 11.

Oozie

A fin de configurar Oozie para que se ejecute en Java 11 o 17, configure el servidor de Oozie, Oozie LauncherAM Launcher AM y cambie las configuraciones de los trabajos y los ejecutables del cliente. También puede configurar EmbeddedOozieServer para que se ejecute en Java 17. Para obtener más información, consulte Configurar la versión Java para Oozie.

Pig

Pig solo es compatible con Java 8. No puede usar Java 11 ni 17 con Hadoop y ejecutar Pig en el mismo clúster.

Anule la JVM

Para anular la JVM configuración de una EMR versión de Amazon (por ejemplo, para usar Java 17 con un clúster que utilice la EMR versión 6.12.0 de Amazon), introduzca la JAVA_HOME configuración en su clasificación de entorno, que es application-env para todas las aplicaciones excepto Flink. En el caso de Flink, la clasificación de entorno es flink-conf. Para ver los pasos de configuración del tiempo de ejecución de Java con Flink, consulte Configuración de Flink para que se ejecute con Java 11.

Anule la configuración con Apache Spark JVM

Cuando usas Spark con las EMR versiones 6.12 y posteriores de Amazon, si escribes un controlador para su envío en modo clúster, el controlador usa Java 8, pero puedes configurar el entorno para que los ejecutores usen Java 11 o 17. Y cuando usas Spark con EMR versiones de Amazon anteriores a 5.x y escribes un controlador para enviarlo en modo clúster, el controlador usa Java 7. Sin embargo, defina el entorno para asegurarse de que los ejecutores utilizan Java 8.

Para sustituir la JVM de Spark, te recomendamos que establezcas las clasificaciones de Hadoop y 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": {} }

Anule la configuración con Apache JVM HBase

HBasePara configurar el uso de Java 11, puede establecer la siguiente configuración al lanzar el clúster.

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

Anule la JVM configuración con Apache Hadoop y Hive

El siguiente ejemplo muestra cómo configurarlo en la versión 17 JVM para Hadoop y Hive.

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

Puertos de servicio

Los siguientes son puertos de servicioYARN. HDFS Estos ajustes reflejan los valores predeterminados de Hadoop. Otros servicios de aplicaciones se alojan en puertos predeterminados a menos que se documente lo contrario. Para obtener más información, consulte la documentación del proyecto de la aplicación.

Configuración de puertos para YARN y HDFS
Opción Nombre de host/puerto

fs.default.name

predeterminado (hdfs://emrDeterminedIP:8020)

dfs.datanode.address

predeterminado (0.0.0.0:50010)

dfs.datanode.http.address

predeterminado (0.0.0.0:50075)

dfs.datanode.https.address

predeterminado (0.0.0.0:50475)

dfs.datanode.ipc.address

predeterminado (0.0.0.0:50020)

dfs.http.address

predeterminado (0.0.0.0:50070)

dfs.https.address

predeterminado (0.0.0.0:50470)

dfs.secondary.http.address

predeterminado (0.0.0.0:50090)

yarn.nodemanager.address

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

yarn.nodemanager.localizer.address

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

yarn.nodemanager.webapp.address

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

yarn.resourcemanager.address

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

yarn.resourcemanager.admin.address

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

yarn.resourcemanager.resource-tracker.address

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

yarn.resourcemanager.scheduler.address

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

yarn.resourcemanager.webapp.address

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

yarn.web-proxy.address

predeterminado (no-value)

yarn.resourcemanager.hostname

emrDeterminedIP

nota

El término emrDeterminedIP es una dirección IP generada por el plano de EMR control de Amazon. En la versión más reciente, esta convención se ha eliminado, excepto para la configuración yarn.resourcemanager.hostname y fs.default.name.

Usuarios de la aplicación

Las aplicaciones ejecutarán procesos como su propio usuario. Por ejemplo, Hive JVMs se ejecuta como usuariohive, se MapReduce JVMs ejecuta comomapred, etc. Esto se demuestra en el siguiente ejemplo del estado de proceso.

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