Configurazione delle applicazioni per l'uso di una macchina virtuale Java specifica
Le versioni di Amazon EMR hanno versioni predefinite diverse di Java Virtual Machine (JVM). Questa pagina illustra il supporto JVM per diverse versioni e applicazioni.
Considerazioni
-
Per le versioni 5.0.0 e successive di Amazon EMR, la Java Virtual Machine (JVM) predefinita è Java 8.
-
Per le versioni 6.9.0 e successive di Amazon EMR, Trino supporta Java 17 per impostazione predefinita. Per ulteriori informazioni su Java 17 con Trino, consulta Aggiornamenti di Trino a Java 17
sul blog di Trino. -
Per le versioni 6.12.0 e successive di Amazon EMR, alcune applicazioni supportano anche Java 11 e 17. Per informazioni sulle versioni Java supportate per le applicazioni, consulta la Guida ai rilasci di Amazon EMR. Tieni presente che Amazon EMR supporta solo l'esecuzione di una versione di runtime in un cluster e non supporta l'esecuzione di nodi o applicazioni diversi su versioni di runtime diverse sullo stesso cluster.
Ricorda le seguenti considerazioni specifiche dell'applicazione quando scegli la versione di runtime:
Note sulla configurazione Java per applicazioni specifiche | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Applicazione | Note sulla configurazione Java | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Spark |
Per eseguire Spark con una versione Java non predefinita, devi configurare sia Spark che Hadoop. Per alcuni esempi, consulta Sovrascrittura della JVM.
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Spark RAPIDS |
Puoi eseguire RAPIDS con la versione Java configurata per Spark. |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Iceberg |
Puoi eseguire Iceberg con la versione Java configurata dell'applicazione che lo utilizza. |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Delta |
Puoi eseguire Delta con la versione Java configurata dell'applicazione che lo utilizza. |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Hudi |
Puoi eseguire Hudi con la versione Java configurata dell'applicazione che lo utilizza. |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Hive |
Per impostare la versione Java su 11 o 17 per Hive, configura l'impostazione JVM di Hadoop sulla versione Java che desideri utilizzare. |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
HBase |
Per aggiornare la JVM per HBase, modifica |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Flink |
Per aggiornare la JVM per Flink, modifica |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Oozie |
Per configurare Oozie per l'esecuzione su Java 11 o 17, configura Oozie Server, Oozie LauncherAM Launcher AM e modifica le configurazioni degli eseguibili e dei processi sul lato client. Puoi anche configurare |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Pig | Pig supporta solo Java 8. Non puoi usare Java 11 o 17 con Hadoop ed eseguire Pig sullo stesso cluster. |
Sovrascrittura della JVM
Per sostituire l'impostazione JVM per un rilascio di Amazon EMR, ad esempio per utilizzare Java 17 con un cluster che utilizza il rilascio 6.12.0 di Amazon EMR, fornisci l'impostazione JAVA_HOME
alla relativa classificazione dell'ambiente, che è
per tutte le applicazioni eccetto Flink. Per Flink, la classificazione dell'ambiente è application
-envflink-conf
. Per i passaggi per configurare il runtime Java con Flink, consulta Configurazione di Flink per l'esecuzione con Java 11.
Argomenti
Sostituisci l'impostazione JVM con Apache Spark
Quando usi Spark con Amazon EMR rilascio 6.12 e successivi, se scrivi un driver per l'invio in modalità cluster, il driver utilizza Java 8, ma puoi impostare l'ambiente in modo che gli esecutori utilizzino Java 11 o 17. E quando utilizzi Spark con rilasci di Amazon EMR precedenti a 5.x e scrivi un driver per l'invio in modalità cluster, il driver utilizza Java 7. Tuttavia, puoi impostare l'ambiente per garantire che gli esecutori utilizzino Java 8.
Per sostituire la JVM per Spark, ti consigliamo di impostare entrambe le classificazioni Hadoop e 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": {} }
Sostituisci l'impostazione JVM con Apache HBase
Per configurare HBase per l'utilizzo di Java 11, puoi impostare la seguente configurazione all'avvio del cluster.
[ { "Classification": "hbase-env", "Configurations": [ { "Classification": "export", "Configurations": [], "Properties": { "JAVA_HOME": "/usr/lib/jvm/jre-11" } } ], "Properties": {} } ]
Sostituzione dell'impostazione JVM con Apache Hadoop e Hive
L'esempio seguente mostra come impostare la JVM sulla versione 17 per Hadoop e Hive.
[ { "Classification": "hadoop-env", "Configurations": [ { "Classification": "export", "Configurations": [], "Properties": { "JAVA_HOME": "/usr/lib/jvm/jre-17" } } ], "Properties": {} } ]
Porte di servizio
Di seguito sono elencate le porte di servizio YARN e HDFS. Queste impostazioni riflettono i valori predefiniti di Hadoop. Gli altri servizi applicativi sono ospitati su porte predefinite, a meno che non sia diversamente documentato. Per ulteriori informazioni, consulta la documentazione di progetto dell'applicazione.
Impostazioni porta per YARN e HDFS | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Impostazione | Nome host/Porta | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
fs.default.name | impostazione predefinita (hdfs://emrDeterminedIP :8020) |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
dfs.datanode.address | valore di default (0.0.0.0:50010) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
dfs.datanode.http.address | valore di default (0.0.0.0:50075) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
dfs.datanode.https.address | valore di default (0.0.0.0:50475) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
dfs.datanode.ipc.address | valore di default (0.0.0.0:50020) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
dfs.http.address | valore di default (0.0.0.0:50070) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
dfs.https.address | valore di default (0.0.0.0:50470) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
dfs.secondary.http.address | valore di default (0.0.0.0:50090) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
yarn.nodemanager.address | valore di default (${yarn.nodemanager.hostname}:0) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
yarn.nodemanager.localizer.address | valore di default (${yarn.nodemanager.hostname}:8040) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
yarn.nodemanager.webapp.address | valore di default (${yarn.nodemanager.hostname}:8042) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
yarn.resourcemanager.address | valore di default (${yarn.resourcemanager.hostname}:8032) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
yarn.resourcemanager.admin.address | valore di default (${yarn.resourcemanager.hostname}:8033) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
yarn.resourcemanager.resource-tracker.address | valore di default (${yarn.resourcemanager.hostname}:8031) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
yarn.resourcemanager.scheduler.address | valore di default (${yarn.resourcemanager.hostname}:8030) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
yarn.resourcemanager.webapp.address | valore di default (${yarn.resourcemanager.hostname}:8088) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
yarn.web-proxy.address | valore di default (no-value) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
yarn.resourcemanager.hostname | emrDeterminedIP |
Nota
Il termine emrDeterminedIP
rappresenta un indirizzo IP generato dal piano di controllo Amazon EMR. Nella versione più recente, questa convenzione è stata rimossa, eccetto che per le impostazioni yarn.resourcemanager.hostname
e fs.default.name
.
Utenti delle applicazioni
Le applicazioni eseguono i processi come proprio utente. Ad esempio, le JVM Hive vengono eseguite come utente hive
, le JVM MapReduce come mapred
e così via. Questa procedura è illustrata nell'esempio di stato del processo seguente:
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