As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Configurar aplicações para usar uma Máquina Virtual Java específica
As versões do Amazon EMR têm diferentes versões Máquina Virtual Java (JVM) padrão. Esta página explica a compatibilidade da JVM para diferentes versões e aplicações.
Considerações
Para obter informações sobre as versões do Java compatíveis com aplicações, consulte as páginas das aplicações no Guia de lançamento do Amazon EMR.
-
O Amazon EMR só oferece suporte à execução de uma versão de runtime em um cluster e não oferece suporte à execução de nós ou aplicações diferentes em outras versões de runtime no mesmo cluster.
-
Para o Amazon EMR 7.x, a Máquina Virtual Java (JVM) padrão é Java 17 para aplicações compatíveis com Java 17, com exceção do Apache Livy. Para obter mais informações sobre as versões do JDK compatíveis com aplicações, consulte a página de lançamento correspondente no Guia de lançamento do Amazon EMR.
-
A partir do Amazon EMR 7.1.0, o Flink oferece suporte e está configurado para Java 17 por padrão. Para usar uma versão diferente do runtime do Java, substitua as configurações em
flink-conf
. Para obter mais informações sobre como configurar o Flink para usar o Java 8 ou o Java 11, consulte Configure Flink to run with Java 11. -
Para as séries 5.x e 6.x do Amazon EMR, a Máquina Virtual Java (JVM) padrão é Java 8.
-
Para as versões 6.12.0 e posteriores do Amazon EMR, algumas aplicações também oferecem suporte ao Java 11 e 17.
-
Para as versões 6.9.0 e posteriores do Amazon EMR, o Trino oferece suporte ao Java 17 como padrão. Para obter mais informações sobre o Java 17 com Trino, consulte Trino updates to Java 17
no blog do Trino.
-
Lembre-se das seguintes considerações específicas da aplicação ao escolher sua versão de runtime:
Aplicação | Notas sobre configurações do Java |
---|---|
Spark |
Para executar o Spark com uma versão Java que não seja padrão, é necessário configurar o Spark e o Hadoop. Para obter exemplos, consulte Substituir a JVM.
|
Spark RAPIDS |
É possível executar o RAPIDS com a versão Java configurada para o Spark. |
Iceberg |
Você pode executar o Iceberg com a versão Java configurada da aplicação que o está usando. |
Delta |
Você pode executar o Delta com a versão Java configurada da aplicação que o está usando. |
Hudi |
Você pode executar o Hudi com a versão Java configurada da aplicação que o está usando. |
Hadoop |
Para atualizar a JVM para o Hadoop, modifique |
Hive |
Para definir a versão Java como 11 ou 17 para Hive, defina a configuração da JVM do Hadoop para a versão do Java que você deseja usar. |
HBase |
Para atualizar a JVM para HBase, modifique. |
Flink |
Para atualizar a JVM para Flink, modifique |
Oozie |
Para configurar o Oozie para ser executado no Java 11 ou 17, configure o Oozie Server, o Oozie LauncherAM Launcher AM e altere as configurações de trabalho e executáveis do lado do cliente. Também é possível configurar |
Pig | O Pig é compatível apenas com Java 8. Não é possível usar o Java 11 ou 17 com o Hadoop e executar o Pig no mesmo cluster. |
Substituir a JVM
Para substituir a configuração da JVM para uma versão do Amazon EMR (por exemplo, para usar o Java 17 com um cluster que usa o Amazon EMR versão 6.12.0) forneça a configuração JAVA_HOME
para sua classificação de ambiente, que é
para todas as aplicações, exceto o Flink. Para o Flink, a classificação do ambiente é application
-envflink-conf
. Para obter as etapas para configurar o runtime Java com o Flink, consulte Configurar o Flink para ser executado com o Java 11.
Tópicos
Substituir a configuração da JVM usando o Apache Spark
Ao usar o Spark com o Amazon EMR versões 6.12 e posteriores, se você gravar um driver para envio no modo de cluster, o driver usará Java 8, mas é possível configurar o ambiente para que os executores usem Java 11 ou 17. E quando você usa o Spark com versões do Amazon EMR anteriores a 5.x e grava um driver para envio no modo de cluster, o driver usa o Java 7. No entanto, você pode configurar o ambiente para garantir que os executores usem o Java 8.
Para substituir a JVM do Spark, é recomendável definir as classificações do Hadoop e do 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": {} }
Substitua a configuração da JVM com o Apache HBase
Para configurar HBase para usar o Java 11, você pode definir a seguinte configuração ao iniciar o cluster.
[ { "Classification": "hbase-env", "Configurations": [ { "Classification": "export", "Configurations": [], "Properties": { "JAVA_HOME": "/usr/lib/jvm/jre-11" } } ], "Properties": {} } ]
Substituir a configuração da JVM usando o Apache Hadoop e o Hive
O exemplo a seguir mostra como definir a JVM para a versão 17 para Hadoop e Hive.
[ { "Classification": "hadoop-env", "Configurations": [ { "Classification": "export", "Configurations": [], "Properties": { "JAVA_HOME": "/usr/lib/jvm/jre-17" } } ], "Properties": {} } ]
Portas de serviço
A seguir estão as portas de serviço YARN e HDFS. Essas configurações refletem os padrões do Hadoop. Outros serviços de aplicativos são hospedados em portas padrão, a menos que documentado de outra forma. Para obter mais informações, consulte a documentação de projeto do aplicativo.
Configuração | Nome do host/Porta |
---|---|
|
(padrão) ( |
|
(padrão) ( |
|
(padrão) ( |
|
(padrão) ( |
|
(padrão) ( |
|
(padrão) ( |
|
(padrão) ( |
|
(padrão) ( |
|
(padrão) ( |
|
(padrão) ( |
|
(padrão) ( |
|
(padrão) ( |
|
(padrão) ( |
|
(padrão) ( |
|
(padrão) ( |
|
(padrão) ( |
|
(padrão) ( |
|
|
nota
O termo emrDeterminedIP
é um endereço IP gerado pelo plano de controle do Amazon EMR. Na versão mais recente, essa convenção foi eliminada, com exceção para as configurações yarn.resourcemanager.hostname
e fs.default.name
.
Usuários do aplicativo
Os aplicativos executarão processos como seus próprios usuários. Por exemplo, o Hive é JVMs executado como usuáriohive
, MapReduce JVMs executado como mapred
e assim por diante. Isso é demonstrado no exemplo a seguir de status de processo.
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