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 EMR versões da Amazon têm diferentes versões padrão do Java Virtual Machine (JVM). Esta página explica o JVM suporte para diferentes versões e aplicativos.
Considerações
Para obter informações sobre as versões Java suportadas para aplicativos, consulte as páginas do aplicativo no Amazon EMR Release Guide.
-
A Amazon EMR só suporta a execução de uma versão de tempo de execução em um cluster e não suporta a execução de diferentes nós ou aplicativos em diferentes versões de tempo de execução no mesmo cluster.
-
Para o Amazon EMR 7.x, a Java Virtual Machine (JVM) padrão é o Java 17 para aplicativos que oferecem suporte ao Java 17, com exceção do Apache Livy. Para obter mais informações sobre as JDK versões suportadas dos aplicativos, consulte a página de lançamento correspondente no Amazon EMR Release Guide.
-
A partir do Amazon EMR 7.1.0, o Flink suporta e está configurado para Java 17 por padrão. Para usar uma versão diferente do Java Runtime, 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 Configurar o Flink para ser executado com o Java 11. -
Para Amazon EMR 5.x e 6.x, a Java Virtual Machine (JVM) padrão é Java 8.
-
Para as EMR versões 6.12.0 e superiores da Amazon, alguns aplicativos também oferecem suporte ao Java 11 e 17.
-
Para as EMR versões 6.9.0 e superiores da Amazon, 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:
Aplicativo | 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 ver exemplos, consulte Substitua o JVM.
|
Faísca RAPIDS |
Você pode executar 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 o JVM para o Hadoop, modifique. |
Hive |
Para definir a versão Java como 11 ou 17 para o Hive, defina a JVM configuração do Hadoop para a versão Java que você deseja usar. |
HBase |
Para atualizar o JVM formulárioHBase, modifique |
Flink |
Para atualizar o JVM para o 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. |
Substitua o JVM
Para substituir a JVM configuração de uma EMR versão da Amazon — por exemplo, para usar o Java 17 com um cluster que usa a EMR versão 6.12.0 da Amazon — forneça a JAVA_HOME
configuração para sua classificação de ambiente, que é
para todos os aplicativos, 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
Substitua a JVM configuração com o Apache Spark
Quando você usa o Spark com as EMR versões 6.12 e posteriores da Amazon, se você escrever um driver para envio no modo de cluster, o driver usa o Java 8, mas você pode configurar o ambiente para que os executores usem o Java 11 ou 17. E quando você usa o Spark com EMR versões da Amazon inferiores a 5.x e escreve 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 o do JVM Spark, recomendamos que você defina 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 JVM configuração 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": {} } ]
Substitua a JVM configuração com o Apache Hadoop e o Hive
O exemplo a seguir mostra como definir a versão 17 JVM 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 YARN as portas HDFS de serviço. 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 EMR controle da Amazon. 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