Configuration des applications pour l'utilisation d'une machine virtuelle Java spécifique - Amazon EMR

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Configuration des applications pour l'utilisation d'une machine virtuelle Java spécifique

Les EMR versions d'Amazon proposent différentes versions par défaut de Java Virtual Machine (JVM). Cette page explique la JVM prise en charge des différentes versions et applications.

Considérations

Pour plus d'informations sur les versions Java prises en charge pour les applications, consultez les pages relatives aux applications dans le Amazon EMR Release Guide.

  • Amazon EMR ne prend en charge que l'exécution d'une seule version d'exécution dans un cluster, et ne prend pas en charge l'exécution de différents nœuds ou applications sur différentes versions d'exécution sur le même cluster.

  • Pour Amazon EMR 7.x, la machine virtuelle Java par défaut (JVM) est Java 17 pour les applications compatibles avec Java 17, à l'exception d'Apache Livy. Pour plus d'informations sur les JDK versions prises en charge pour les applications, consultez la page de publication correspondante dans le Amazon EMR Release Guide.

  • À partir d'Amazon EMR 7.1.0, Flink prend en charge Java 17 et est configuré sur Java 17 par défaut. Pour utiliser une version différente de l'environnement d'exécution Java, remplacez les paramètres définis dansflink-conf. Pour plus d'informations sur la configuration de Flink pour utiliser Java 8 ou Java 11, voir Configurer Flink pour fonctionner avec Java 11.

  • Pour Amazon EMR 5.x et 6.x, la machine virtuelle Java par défaut (JVM) est Java 8.

    • Pour les EMR versions 6.12.0 et supérieures d'Amazon, certaines applications prennent également en charge Java 11 et 17.

    • Pour les EMR versions 6.9.0 et supérieures d'Amazon, Trino prend en charge Java 17 par défaut. Pour plus d'informations sur Java 17 avec Trino, consultez Trino updates to Java 17 sur le blog de Trino.

Tenez compte des considérations spécifiques à l'application suivantes lorsque vous choisissez votre version d'exécution :

Remarques de configuration Java spécifiques à l'application
Application Notes sur la configuration de Java

Spark

Pour exécuter Spark avec une version de Java autre que celle par défaut, vous devez configurer à la fois Spark et Hadoop. Pour obtenir des exemples, consultez Remplacez le JVM.

  • Configurez JAVA_HOME dans spark-env pour mettre à jour le runtime Java des processus de l'instance principale. Par exemple, spark-submit, spark-shell et Spark History Server.

  • Modifiez la configuration Hadoop pour mettre à jour le runtime Java des exécuteurs Spark et du YARN ApplicationMaster

Étincelle RAPIDS

Vous pouvez exécuter RAPIDS avec la version Java configurée pour Spark.

Iceberg

Vous pouvez exécuter Iceberg avec la version Java configurée de l'application qui l'utilise.

Delta

Vous pouvez exécuter Delta avec la version Java configurée de l'application qui l'utilise.

Hudi

Vous pouvez exécuter Hudi avec la version Java configurée de l'application qui l'utilise.

Hadoop

Pour mettre à jour le JVM pour Hadoop, modifiez. hadoop-env Pour obtenir des exemples, consultez Remplacez le JVM.

Hive

Pour définir la version Java sur 11 ou 17 pour Hive, configurez le JVM paramètre Hadoop sur la version Java que vous souhaitez utiliser.

HBase

Pour mettre à jour le JVM formulaireHBase, modifiez-lehbase-env. Par défaut, Amazon EMR définit le en HBase JVM fonction de la JVM configuration de Hadoop, sauf si vous remplacez les paramètres dans. hbase-env Pour obtenir des exemples, consultez Remplacez le JVM.

Flink

Pour mettre à jour le JVM for Flink, flink-conf modifiez-le. Par défaut, Amazon EMR définit le Flink en JVM fonction de la JVM configuration de Hadoop, sauf si vous remplacez les paramètres dans. flink-conf Pour plus d’informations, consultez Configurer Flink pour qu'il fonctionne avec Java 11.

Oozie

Pour configurer Oozie pour qu'il fonctionne sur Java 11 ou 17, configurez Oozie Server, le Oozie LauncherAM Launcher AM et modifiez les configurations de vos exécutables et tâches côté client. Vous pouvez également configurer EmbeddedOozieServer pour l'exécuter sur Java 17. Pour plus d’informations, consultez Configurer la version Java pour Oozie.

Pig

Pig ne supporte que Java 8. Vous ne pouvez pas utiliser Java 11 ou 17 avec Hadoop et exécuter Pig sur le même cluster.

Remplacez le JVM

Pour remplacer le JVM paramètre d'une EMR version d'Amazon (par exemple, pour utiliser Java 17 avec un cluster utilisant la EMR version 6.12.0 d'Amazon), fournissez le JAVA_HOME paramètre correspondant à sa classification d'environnement, qui s'applique à toutes application-env les applications sauf Flink. Pour Flink, la classification de l'environnement est flink-conf. Pour connaître les étapes de configuration de l'environnement d'exécution Java avec Flink, consultez Configurer Flink pour qu'il fonctionne avec Java 11.

Remplacer le JVM paramètre par Apache Spark

Lorsque vous utilisez Spark avec les EMR versions 6.12 et supérieures d'Amazon, si vous écrivez un pilote à soumettre en mode cluster, le pilote utilise Java 8, mais vous pouvez configurer l'environnement de telle sorte que les exécuteurs utilisent Java 11 ou 17. Et lorsque vous utilisez Spark avec des EMR versions d'Amazon inférieures à la version 5.x et que vous écrivez un pilote à soumettre en mode cluster, le pilote utilise Java 7. Vous pouvez toutefois configurer l'environnement de manière à ce que les exécuteurs utilisent Java 8.

Pour remplacer le JVM for Spark, nous vous recommandons de définir à la fois les classifications Hadoop et 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": {} }

Remplacer le JVM paramètre par Apache HBase

Pour configurer HBase pour utiliser Java 11, vous pouvez définir la configuration suivante lorsque vous lancez le cluster.

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

Remplacez le JVM paramètre par Apache Hadoop et Hive

L'exemple suivant montre comment définir la JVM version 17 pour Hadoop et Hive.

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

Ports de service

Les ports suivants sont YARN des ports HDFS de service. Ces paramètres reflètent les valeurs par défaut de Hadoop. D'autres services d'applications sont hébergés sur les ports par défaut, sauf indication contraire. Pour de plus amples informations, veuillez consulter la documentation du projet de l'application.

Paramètres de port pour YARN et HDFS
Paramètre Nom d'hôte/Port

fs.default.name

par défaut (hdfs://emrDeterminedIP:8020)

dfs.datanode.address

par défaut (0.0.0.0:50010)

dfs.datanode.http.address

par défaut (0.0.0.0:50075)

dfs.datanode.https.address

par défaut (0.0.0.0:50475)

dfs.datanode.ipc.address

par défaut (0.0.0.0:50020)

dfs.http.address

par défaut (0.0.0.0:50070)

dfs.https.address

par défaut (0.0.0.0:50470)

dfs.secondary.http.address

par défaut (0.0.0.0:50090)

yarn.nodemanager.address

par défaut (${yarn.nodemanager.hostname}:0)

yarn.nodemanager.localizer.address

par défaut (${yarn.nodemanager.hostname}:8040)

yarn.nodemanager.webapp.address

par défaut (${yarn.nodemanager.hostname}:8042)

yarn.resourcemanager.address

par défaut (${yarn.resourcemanager.hostname}:8032)

yarn.resourcemanager.admin.address

par défaut (${yarn.resourcemanager.hostname}:8033)

yarn.resourcemanager.resource-tracker.address

par défaut (${yarn.resourcemanager.hostname}:8031)

yarn.resourcemanager.scheduler.address

par défaut (${yarn.resourcemanager.hostname}:8030)

yarn.resourcemanager.webapp.address

par défaut (${yarn.resourcemanager.hostname}:8088)

yarn.web-proxy.address

par défaut (no-value)

yarn.resourcemanager.hostname

emrDeterminedIP

Note

Le terme emrDeterminedIP est une adresse IP générée par le plan de EMR contrôle Amazon. Dans la version la plus récente, cette convention a été supprimée, sauf pour les paramètres yarn.resourcemanager.hostname et fs.default.name.

Utilisateurs de l'application

Les applications exécutent des processus comme s’il s’agissait de leur propre utilisateur. Par exemple, Hive JVMs s'exécute en tant qu'utilisateurhive, MapReduce JVMs exécute en tant qu'utilisateurmapred, etc. Ceci est illustré dans l'exemple d'état des processus suivant.

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