Konfigurasikan aplikasi untuk menggunakan Java Virtual Machine tertentu - Amazon EMR

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Konfigurasikan aplikasi untuk menggunakan Java Virtual Machine tertentu

EMRRilis Amazon memiliki versi Java Virtual Machine (JVM) default yang berbeda. Halaman ini menjelaskan JVM dukungan untuk berbagai rilis dan aplikasi.

Pertimbangan

Untuk informasi tentang versi Java yang didukung untuk aplikasi, lihat halaman aplikasi di Panduan EMR Rilis Amazon.

  • Amazon EMR hanya mendukung menjalankan satu versi runtime dalam sebuah cluster, dan tidak mendukung menjalankan node atau aplikasi yang berbeda pada versi runtime yang berbeda pada cluster yang sama.

  • Untuk Amazon EMR 7.x, Java Virtual Machine (JVM) default adalah Java 17 untuk aplikasi yang mendukung Java 17, dengan pengecualian Apache Livy. Untuk informasi selengkapnya tentang JDK versi yang didukung untuk aplikasi, lihat halaman rilis terkait di Panduan EMR Rilis Amazon.

  • Dimulai dengan Amazon EMR 7.1.0, Flink mendukung dan diatur ke Java 17 secara default. Untuk menggunakan runtime Java versi yang berbeda, ganti pengaturan di. flink-conf Untuk informasi selengkapnya tentang mengonfigurasi Flink untuk menggunakan Java 8 atau Java 11, lihat Mengonfigurasi Flink untuk dijalankan dengan Java 11.

  • Untuk Amazon EMR 5.x dan 6.x, Java Virtual Machine (JVM) default adalah Java 8.

    • Untuk Amazon EMR merilis 6.12.0 dan lebih tinggi, beberapa aplikasi juga mendukung Java 11 dan 17.

    • Untuk EMR rilis Amazon 6.9.0 dan yang lebih tinggi, Trino mendukung Java 17 sebagai default. Untuk informasi lebih lanjut tentang Java 17 dengan Trino, lihat pembaruan Trino ke Java 17 di blog Trino.

Perhatikan pertimbangan khusus aplikasi berikut saat Anda memilih versi runtime:

Catatan konfigurasi Java khusus aplikasi
Aplikasi Catatan konfigurasi Java

Spark

Untuk menjalankan Spark dengan versi Java non-default, Anda harus mengkonfigurasi Spark dan Hadoop. Sebagai contoh, lihat Mengesampingkan JVM.

  • JAVA_HOMEKonfigurasikan spark-env untuk memperbarui runtime Java dari proses instance utama. Misalnya, spark-submit, spark-shell, dan Spark History Server.

  • Ubah konfigurasi Hadoop untuk memperbarui runtime Java dari pelaksana Spark dan YARN ApplicationMaster

Percikan RAPIDS

Anda dapat menjalankan RAPIDS dengan versi Java yang dikonfigurasi untuk Spark.

Gunung es

Anda dapat menjalankan Iceberg dengan versi Java yang dikonfigurasi dari aplikasi yang menggunakannya.

kuala

Anda dapat menjalankan Delta dengan versi Java yang dikonfigurasi dari aplikasi yang menggunakannya.

Hudi

Anda dapat menjalankan Hudi dengan versi Java yang dikonfigurasi dari aplikasi yang menggunakannya.

Hadoop

Untuk memperbarui JVM untuk Hadoop, modifikasi. hadoop-env Sebagai contoh, lihat Mengesampingkan JVM.

Hive

Untuk mengatur versi Java ke 11 atau 17 untuk Hive, konfigurasikan JVM pengaturan Hadoop ke versi Java yang ingin Anda gunakan.

HBase

Untuk memperbarui JVM forHBase, modifikasihbase-env. Secara default, Amazon EMR menetapkan HBase JVM berdasarkan JVM konfigurasi untuk Hadoop kecuali Anda mengganti pengaturan di. hbase-env Sebagai contoh, lihat Mengesampingkan JVM.

Flink

Untuk memperbarui JVM untuk Flink, ubahflink-conf. Secara default, Amazon EMR menetapkan Flink JVM berdasarkan JVM konfigurasi untuk Hadoop kecuali Anda mengganti pengaturan di. flink-conf Untuk informasi selengkapnya, lihat Konfigurasikan Flink untuk dijalankan dengan Java 11.

Oozie

Untuk mengonfigurasi Oozie agar berjalan di Java 11 atau 17, konfigurasikan Oozie Server, Oozie LauncherAM Launcher AM, dan ubah konfigurasi executable dan job sisi klien Anda. Anda juga dapat mengkonfigurasi EmbeddedOozieServer untuk berjalan di Java 17. Untuk informasi selengkapnya, lihat Konfigurasikan versi Java untuk Oozie.

Pig

Babi hanya mendukung Java 8. Anda tidak dapat menggunakan Java 11 atau 17 dengan Hadoop dan menjalankan Pig di cluster yang sama.

Mengesampingkan JVM

Untuk mengganti JVM pengaturan untuk EMR rilis Amazon - misalnya, menggunakan Java 17 dengan cluster yang menggunakan EMR rilis Amazon 6.12.0 - berikan JAVA_HOME pengaturan ke klasifikasi lingkungannya, yang application-env untuk semua aplikasi kecuali Flink. Untuk Flink, klasifikasi lingkungan adalahflink-conf. Untuk langkah-langkah untuk mengkonfigurasi runtime Java dengan Flink, lihat. Konfigurasikan Flink untuk dijalankan dengan Java 11

Ganti JVM pengaturan dengan Apache Spark

Saat Anda menggunakan Spark dengan Amazon EMR merilis 6.12 dan yang lebih tinggi, jika Anda menulis driver untuk pengiriman dalam mode cluster, driver menggunakan Java 8, tetapi Anda dapat mengatur lingkungan sehingga pelaksana menggunakan Java 11 atau 17. Dan ketika Anda menggunakan Spark dengan EMR rilis Amazon lebih rendah dari 5.x, dan Anda menulis driver untuk pengiriman dalam mode cluster, driver menggunakan Java 7. Namun, Anda dapat mengatur lingkungan untuk memastikan bahwa pelaksana menggunakan Java 8.

Untuk mengganti JVM untuk Spark, kami sarankan Anda mengatur klasifikasi Hadoop dan 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": {} }

Ganti JVM pengaturan dengan Apache HBase

Untuk mengkonfigurasi HBase untuk menggunakan Java 11, Anda dapat mengatur konfigurasi berikut ketika Anda meluncurkan cluster.

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

Ganti JVM pengaturan dengan Apache Hadoop dan Hive

Contoh berikut menunjukkan cara mengatur ke versi 17 JVM untuk Hadoop dan Hive.

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

Port layanan

Berikut ini adalah YARN dan port HDFS layanan. Pengaturan ini mencerminkan default Hadoop. Layanan aplikasi lain di-host di port default kecuali jika didokumentasikan berbeda. Untuk informasi lebih lanjut, lihat dokumentasi proyek aplikasinya.

Pengaturan port untuk YARN dan HDFS
Pengaturan Nama Host/Port

fs.default.name

default (hdfs://emrDeterminedIP:8020)

dfs.datanode.address

default (0.0.0.0:50010)

dfs.datanode.http.address

default (0.0.0.0:50075)

dfs.datanode.https.address

default (0.0.0.0:50475)

dfs.datanode.ipc.address

default (0.0.0.0:50020)

dfs.http.address

default (0.0.0.0:50070)

dfs.https.address

default (0.0.0.0:50470)

dfs.secondary.http.address

default (0.0.0.0:50090)

yarn.nodemanager.address

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

yarn.nodemanager.localizer.address

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

yarn.nodemanager.webapp.address

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

yarn.resourcemanager.address

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

yarn.resourcemanager.admin.address

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

yarn.resourcemanager.resource-tracker.address

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

yarn.resourcemanager.scheduler.address

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

yarn.resourcemanager.webapp.address

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

yarn.web-proxy.address

default (no-value)

yarn.resourcemanager.hostname

emrDeterminedIP

catatan

Istilah emrDeterminedIP adalah alamat IP yang dihasilkan oleh bidang EMR kontrol Amazon. Dalam versi yang lebih baru, konvensi ini telah dihapus, kecuali untuk pengaturan yarn.resourcemanager.hostname dan fs.default.name.

Pengguna aplikasi

Aplikasi menjalankan proses sebagai penggunanya sendiri. Misalnya, Hive JVMs berjalan sebagai penggunahive, MapReduce JVMs jalankan sebagaimapred, dan sebagainya. Hal ini ditunjukkan dalam contoh status proses berikut.

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