

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
<a name="configuring-java8"></a>

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

## Pertimbangan-pertimbangan
<a name="configuring-java8-considerations"></a>

Untuk informasi tentang versi Java yang didukung untuk aplikasi, lihat halaman aplikasi di Panduan [Rilis Amazon EMR](emr-release-components.md).
+ 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 versi JDK yang didukung untuk aplikasi, lihat halaman rilis terkait di Panduan Rilis EMR 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](https://docs.aws.amazon.com/emr/latest/ReleaseGuide/flink-configure.html#flink-configure-java11) 11.
+ Untuk Amazon EMR 5.x dan 6.x, Java Virtual Machine (JVM) default adalah Java 8.
  + Untuk Amazon EMR rilis 6.12.0 dan lebih tinggi, beberapa aplikasi juga mendukung Java 11 dan 17. 
  + Untuk Amazon EMR rilis 6.9.0 dan lebih tinggi, Trino mendukung Java 17 sebagai default. Untuk informasi lebih lanjut tentang Java 17 dengan Trino, lihat [pembaruan Trino ke Java 17](https://trino.io/blog/2022/07/14/trino-updates-to-java-17.html) 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 [Ganti JVM](#configuring-java8-override). [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/emr/latest/ReleaseGuide/configuring-java8.html) | 
| Spark 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 [Ganti JVM](#configuring-java8-override). | 
| Hive | Untuk mengatur versi Java ke 11 atau 17 untuk Hive, konfigurasikan pengaturan Hadoop JVM ke versi Java yang ingin Anda gunakan.  | 
| HBase | Untuk memperbarui JVM untuk HBase, modifikasi. `hbase-env` Secara default, Amazon EMR menetapkan HBase JVM berdasarkan konfigurasi JVM untuk Hadoop kecuali Anda mengganti pengaturan di. `hbase-env` Sebagai contoh, lihat [Ganti JVM](#configuring-java8-override). | 
| Flink | Untuk memperbarui JVM untuk Flink, ubah. `flink-conf` Secara default, Amazon EMR menetapkan Flink JVM berdasarkan konfigurasi JVM untuk Hadoop kecuali Anda mengganti pengaturan di. `flink-conf` Untuk informasi selengkapnya, lihat [Konfigurasikan Flink untuk dijalankan dengan Java 11](flink-configure.md#flink-configure-java11). | 
| 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](oozie-java.md). | 
| Pig | Babi hanya mendukung Java 8. Anda tidak dapat menggunakan Java 11 atau 17 dengan Hadoop dan menjalankan Pig di cluster yang sama. | 

## Ganti JVM
<a name="configuring-java8-override"></a>

Untuk mengganti pengaturan JVM untuk rilis EMR Amazon - misalnya, menggunakan Java 17 dengan cluster yang menggunakan Amazon EMR rilis 6.12.0 - berikan `JAVA_HOME` pengaturan ke klasifikasi lingkungannya, yang untuk semua aplikasi kecuali Flink. `application-env` Untuk Flink, klasifikasi lingkungan adalah`flink-conf`. Untuk langkah-langkah untuk mengkonfigurasi runtime Java dengan Flink, lihat. [Konfigurasikan Flink untuk dijalankan dengan Java 11](flink-configure.md#flink-configure-java11)

**Topics**
+ [Ganti pengaturan JVM dengan Apache Spark](#configuring-java8-override-spark)
+ [Ganti pengaturan JVM dengan Apache HBase](#configuring-java8-override-hbase)
+ [Ganti pengaturan JVM dengan Apache Hadoop dan Hive](#configuring-java8-override-hadoop)

### Ganti pengaturan JVM dengan Apache Spark
<a name="configuring-java8-override-spark"></a>

Saat Anda menggunakan Spark dengan Amazon EMR rilis 6.12 dan yang lebih tinggi, Anda dapat mengatur lingkungan sehingga pelaksana menggunakan Java 11 atau 17. Dan ketika Anda menggunakan Spark dengan Amazon EMR rilis 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, atur pengaturan klasifikasi Spark. Dalam contoh ini, versi Java untuk Hadoop adalah sama, tetapi itu tidak diperlukan.

```
[
{
"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": {}
    }
]
```

Perhatikan bahwa ini adalah praktik terbaik yang direkomendasikan untuk Hadoop di Amazon EMR bahwa versi JVM harus konsisten di semua komponen Hadoop.

 Contoh berikut menunjukkan cara menambahkan parameter konfigurasi yang diperlukan untuk EMR 7.0.0\$1 untuk memastikan penggunaan versi Java yang konsisten di semua komponen.

```
[
  {
    "Classification": "spark-defaults",
    "Properties": {
      "spark.executorEnv.JAVA_HOME": "/usr/lib/jvm/java-1.8.0",
      "spark.yarn.appMasterEnv.JAVA_HOME": "/usr/lib/jvm/java-1.8.0"
    }
  },
  {
    "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 pengaturan JVM dengan Apache HBase
<a name="configuring-java8-override-hbase"></a>

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

```
[
    {
        "Classification": "hbase-env",
        "Properties": {},
        "Configurations": [
            {
                "Classification": "export",
                "Properties": {
                    "JAVA_HOME": "/usr/lib/jvm/jre-11",
                    "HBASE_OPTS": "-XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=70 -Dsun.net.inetaddr.ttl=5"
                },
                "Configurations": []
            }
        ]
    }
]
```

### Ganti pengaturan JVM dengan Apache Hadoop dan Hive
<a name="configuring-java8-override-hadoop"></a>

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

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

## Port layanan
<a name="configuring-java8-service-ports"></a>

Berikut ini adalah port layanan YARN dan HDFS. 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* ini adalah alamat IP yang dihasilkan oleh bidang kontrol EMR Amazon. Dalam versi yang lebih baru, konvensi ini telah dihapus, kecuali untuk pengaturan `yarn.resourcemanager.hostname` dan `fs.default.name`.

## Pengguna aplikasi
<a name="configuring-java8-application-users"></a>

Aplikasi menjalankan proses sebagai penggunanya sendiri. Misalnya, Hive JVMs berjalan sebagai pengguna`hive`, MapReduce JVMs jalankan sebagai`mapred`, 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
```