

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

# Konfigurasikan aplikasi
<a name="emr-configure-apps"></a>

Untuk menimpa konfigurasi default untuk aplikasi, Anda dapat menyediakan objek konfigurasi. Anda dapat menggunakan sintaks singkatan untuk menyediakan konfigurasi, atau Anda dapat menggunakan referensi objek konfigurasi dalam file JSON. Objek konfigurasi terdiri dari klasifikasi, properti, dan konfigurasi bersarang opsional. Properti sesuai dengan pengaturan aplikasi yang ingin Anda ubah. Anda dapat menentukan beberapa klasifikasi untuk beberapa aplikasi dalam objek JSON tunggal.

**Awas**  
Operasi Amazon EMR Deskripsikan dan Daftar API memancarkan pengaturan khusus dan dapat dikonfigurasi, yang digunakan sebagai bagian dari alur kerja EMR Amazon, dalam teks biasa. Untuk memberikan informasi sensitif, seperti kata sandi, dalam pengaturan ini, lihat [Menyimpan data konfigurasi sensitif di AWS Secrets Manager](https://docs.aws.amazon.com/emr/latest/ReleaseGuide/storing-sensitive-data.html).

Klasifikasi konfigurasi yang tersedia bervariasi berdasarkan versi rilis Amazon EMR. Untuk daftar klasifikasi konfigurasi yang didukung dalam versi rilis tertentu, lihat halaman untuk versi rilis di bawah[Tentang Rilis Amazon EMR](emr-release-components.md).

Berikut ini adalah contoh file JSON untuk daftar konfigurasi.

```
[
  {
    "Classification": "core-site",
    "Properties": {
      "hadoop.security.groups.cache.secs": "250"
    }
  },
  {
    "Classification": "mapred-site",
    "Properties": {
      "mapred.tasktracker.map.tasks.maximum": "2",
      "mapreduce.map.sort.spill.percent": "0.90",
      "mapreduce.tasktracker.reduce.tasks.maximum": "5"
    }
  }
]
```

Klasifikasi konfigurasi sering kali memetakan ke file konfigurasi spesifik-aplikasi. Misalnya, klasifikasi `hive-site` memetakan ke pengaturan di file konfigurasi `hive-site.xml` untuk Hive. Pengecualian untuk ini adalah tindakan bootstrap yang tidak lagi didukung `configure-daemons`, yang digunakan untuk mengatur parameter lingkungan seperti `--namenode-heap-size`. Pilihan seperti ini akan dimasukkan ke dalam klasifikasi `hadoop-env` dan `yarn-env` dengan klasifikasi eksport bersarang mereka sendiri. Jika ada klasifikasi yang berakhiran dengan `env`, gunakan sub-klasifikasi ekspor. 

Pengecualian lainnya adalah `s3get`, yang digunakan untuk menempatkan objek `EncryptionMaterialsProvider` pelanggan pada setiap simpul dalam sebuah klaster untuk digunakan dalam enkripsi di sisi klien. Sebuah opsi ditambahkan ke dalam klasifikasi `emrfs-site` untuk tujuan ini.

Berikut ini adalah contoh klasifikasi `hadoop-env`.

```
[
  {
    "Classification": "hadoop-env",
    "Properties": {
      
    },
    "Configurations": [
      {
        "Classification": "export",
        "Properties": {
          "HADOOP_DATANODE_HEAPSIZE": "2048",
          "HADOOP_NAMENODE_OPTS": "-XX:GCTimeRatio=19"
        },
        "Configurations": [
          
        ]
      }
    ]
  }
]
```

Berikut ini adalah contoh klasifikasi yarn-env.

```
[
  {
    "Classification": "yarn-env",
    "Properties": {
      
    },
    "Configurations": [
      {
        "Classification": "export",
        "Properties": {
          "YARN_RESOURCEMANAGER_OPTS": "-Xdebug -Xrunjdwp:transport=dt_socket"
        },
        "Configurations": [
          
        ]
      }
    ]
  }
]
```

Pengaturan berikut bukan milik file konfigurasi tetapi digunakan oleh Amazon EMR untuk kemungkinan melakukan konfigurasi dengan beberapa pengaturan atas nama Anda.


**Pengaturan terkurasi oleh Amazon EMR**  

| Aplikasi | Klasifikasi label rilis | Properti yang valid | Kapan harus menggunakan | 
| --- | --- | --- | --- | 
| Spark | spark | maximizeResourceAllocation | Konfigurasikan pelaksana untuk memanfaatkan sumber daya maksimum setiap simpul. | 

**Topics**
+ [Konfigurasikan aplikasi saat Anda membuat klaster](emr-configure-apps-create-cluster.md)
+ [Lakukan konfigurasi ulang pada grup instans di klaster yang sedang berjalan](emr-configure-apps-running-cluster.md)
+ [Menyimpan data konfigurasi sensitif di AWS Secrets Manager](storing-sensitive-data.md)
+ [Konfigurasikan aplikasi untuk menggunakan Java Virtual Machine tertentu](configuring-java8.md)

# Konfigurasikan aplikasi saat Anda membuat klaster
<a name="emr-configure-apps-create-cluster"></a>

Saat membuat klaster, Anda dapat mengganti konfigurasi default untuk aplikasi menggunakan konsol Amazon EMR, AWS Command Line Interface (AWS CLI), atau SDK. AWS 

Untuk mengganti konfigurasi default untuk aplikasi, Anda menentukan nilai kustom dalam klasifikasi konfigurasi. Klasifikasi konfigurasi sesuai dengan file XHTML konfigurasi untuk aplikasi, seperti`hive-site.xml`. 

Klasifikasi konfigurasi bervariasi menurut versi rilis Amazon EMR. Untuk daftar klasifikasi konfigurasi yang tersedia dalam versi rilis tertentu, lihat halaman detail rilis. Misalnya, [Amazon EMR merilis](emr-640-release.md#emr-640-class) 6.4.0.

## Sediakan konfigurasi di konsol tersebut ketika Anda membuat sebuah klaster
<a name="emr-configure-apps-create-cluster-console"></a>

Untuk menyediakan konfigurasi, navigasikan ke halaman **Buat klaster** dan perluas **pengaturan Perangkat Lunak**. Anda kemudian dapat memasukkan konfigurasi secara langsung dengan menggunakan JSON atau sintaks singkat yang ditunjukkan dalam teks bayangan di konsol tersebut. Jika tidak, Anda dapat memberikan URI Amazon S3 untuk file dengan objek `Configurations` JSON.

Untuk menyediakan konfigurasi untuk grup instans, pilih klaster dalam daftar cluster Anda, lalu pilih tab **Konfigurasi.** Dalam tabel **konfigurasi grup Instance**, pilih grup instans yang akan diedit, lalu pilih Konfigurasi **ulang**.

## Menyediakan konfigurasi menggunakan AWS CLI saat Anda membuat klaster
<a name="emr-configure-apps-create-cluster-cli"></a>

Anda dapat menyediakan konfigurasi untuk **create-cluster** dengan menyediakan path ke file JSON yang disimpan secara lokal atau di Amazon S3. Contoh berikut mengasumsikan bahwa Anda menggunakan peran default untuk Amazon EMR dan bahwa peran tersebut telah dibuat. Jika Anda perlu membuat peran, jalankan `aws emr create-default-roles` terlebih dahulu.

Jika konfigurasi Anda ada di direktori lokal Anda, maka Anda dapat menggunakan contoh perintah berikut.

```
aws emr create-cluster --use-default-roles --release-label emr-7.12.0 --applications Name=Hive \
--instance-type m5.xlarge --instance-count 3 --configurations file://./configurations.json
```

Jika konfigurasi Anda berada di jalur Amazon S3, Anda harus menyiapkan solusi berikut sebelum meneruskan jalur Amazon S3 ke perintah. `create-cluster`

```
#!/bin/sh
# Assume the ConfigurationS3Path is not public, and its present in the same AWS account as the EMR cluster
ConfigurationS3Path="s3://amzn-s3-demo-bucket/config.json"
# Get a presigned HTTP URL for the s3Path
ConfigurationURL=`aws s3 presign $ConfigurationS3Path --expires-in 300`
# Fetch the presigned URL, and minify the JSON so that it spans only a single line
Configurations=`curl $ConfigurationURL | jq -c .`
aws emr create-cluster --use-default-roles --release-label emr-5.34.0 --instance-type m5.xlarge --instance-count 2 --applications Name=Hadoop Name=Spark --configurations $Configurations
```

## Sediakan konfigurasi menggunakan Java SDK ketika Anda membuat sebuah klaster
<a name="emr-configure-apps-create-cluster-sdk"></a>

Kutipan program berikut menunjukkan cara untuk menyediakan konfigurasi menggunakan AWS SDK untuk Java.

```
Application hive = new Application().withName("Hive");

Map<String,String> hiveProperties = new HashMap<String,String>();
	hiveProperties.put("hive.join.emit.interval","1000");
	hiveProperties.put("hive.merge.mapfiles","true");
	    
Configuration myHiveConfig = new Configuration()
	.withClassification("hive-site")
	.withProperties(hiveProperties);

RunJobFlowRequest request = new RunJobFlowRequest()
	.withName("Create cluster with ReleaseLabel")
	.withReleaseLabel("emr-5.20.0")
	.withApplications(hive)
	.withConfigurations(myHiveConfig)
	.withServiceRole("EMR_DefaultRole")
	.withJobFlowRole("EMR_EC2_DefaultRole")
	.withInstances(new JobFlowInstancesConfig()
		.withEc2KeyName("myEc2Key")
		.withInstanceCount(3)
		.withKeepJobFlowAliveWhenNoSteps(true)
		.withMasterInstanceType("m4.large")
		.withSlaveInstanceType("m4.large")
	);
```

# Lakukan konfigurasi ulang pada grup instans di klaster yang sedang berjalan
<a name="emr-configure-apps-running-cluster"></a>

Dengan Amazon EMR versi 5.21.0 dan terbaru, Anda dapat melakukan konfigurasi ulang pada aplikasi klaster dan menentukan klasifikasi konfigurasi tambahan untuk masing-masing grup instans pada klaster yang sedang berjalan. Untuk melakukannya, Anda dapat menggunakan konsol EMR Amazon, AWS Command Line Interface (AWS CLI), atau SDK AWS .

Saat Anda memperbarui konfigurasi aplikasi untuk grup instans di konsol EMR Amazon yang baru, konsol mencoba menggabungkan konfigurasi baru dengan konfigurasi yang ada untuk membuat konfigurasi baru yang aktif. Dalam kasus yang tidak biasa di mana Amazon EMR tidak dapat menggabungkan konfigurasi, konsol memberi tahu Anda. 

Setelah Anda mengirimkan permintaan konfigurasi ulang untuk grup instans, Amazon EMR menetapkan nomor versi untuk spesifikasi konfigurasi baru. Anda dapat melacak nomor versi konfigurasi, atau status grup instans, dengan melihat CloudWatch peristiwa. Untuk informasi selengkapnya, lihat [Memantau CloudWatch Acara](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-manage-cloudwatch-events.html).

**catatan**  
Anda hanya dapat menimpa, dan bukannya menghapus, konfigurasi klaster yang ditentukan selama pembuatan klaster. Jika ada perbedaan antara konfigurasi yang ada dan file yang Anda sediakan, maka Amazon EMR akan me-reset konfigurasi yang telah dimodifikasi secara manual, misalnya konfigurasi yang telah Anda modifikasi saat terhubung ke klaster Anda menggunakan SSH, ke klaster default untuk grup instans yang ditentukan. 

## Pertimbangan saat Anda melakukan konfigurasi ulang grup instans
<a name="emr-configure-apps-running-cluster-considerations"></a>

**Tindakan konfigurasi ulang**  
Saat Anda mengirimkan permintaan konfigurasi ulang menggunakan konsol EMR Amazon,AWS CLI(), atau AWS Command Line Interface SDK, Amazon EMR AWS akan memeriksa file konfigurasi on-cluster yang ada. Jika ada perbedaan antara konfigurasi yang ada dan file yang Anda sediakan, maka Amazon EMR akan memulai tindakan konfigurasi ulang, melakukan restart pada beberapa aplikasi, dan me-reset konfigurasi yang dimodifikasi secara manual, misalnya konfigurasi yang telah Anda modifikasi saat terhubung ke klaster Anda menggunakan SSH, ke klaster default untuk grup instans yang sudah ditentukan.   
Amazon EMR melakukan beberapa tindakan default selama setiap konfigurasi ulang grup instans. Tindakan default ini mungkin bertentangan dengan kustomisasi klaster yang telah Anda buat, dan mengakibatkan kegagalan konfigurasi ulang. Untuk informasi tentang cara memecahkan masalah kegagalan konfigurasi ulang, lihat [Pecahkan masalah konfigurasi ulang grup instans](#emr-configure-apps-running-cluster-troubleshoot).
Amazon EMR juga memulai tindakan konfigurasi ulang untuk klasifikasi konfigurasi yang Anda tentukan dalam permintaan Anda. Untuk daftar lengkap tindakan ini, lihat bagian Klasifikasi Konfigurasi untuk versi Amazon EMR yang Anda gunakan. Misalnya, [Klasifikasi Konfigurasi 6.2.0](emr-620-release.md#emr-620-class).  
Panduan Rilis Amazon EMR hanya mencantumkan tindakan konfigurasi ulang yang dimulai dengan Amazon EMR versi 5.32.0 dan 6.2.0.

**Gangguan layanan**  
Amazon EMR mengikuti proses bergulir untuk melakukan konfigurasi ulang instans dalam grup instans Tugas dan Core. Hanya 10 persen instans yang ada dalam grup instans yang dimodifikasi dan di-restart pada suatu waktu. Proses ini membutuhkan waktu lebih lama untuk selesai tetapi mengurangi kemungkinan gagal aplikasi yang mungkin terjadi dalam sebuah klaster yang berjalan.   
Untuk menjalankan tugas YARN selama restart YARN, Anda dapat membuat klaster Amazon EMR dengan beberapa simpul utama atau atur `yarn.resourcemanager.recovery.enabled` menjadi `true` di klasifikasi konfigurasi `yarn-site` Anda. Untuk informasi selengkapnya tentang penggunaan beberapa node master, lihat [YARN ketersediaan tinggi ResourceManager](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-plan-ha-applications.html#emr-plan-ha-applications-YARN).

**Validasi aplikasi**  
Amazon EMR memeriksa apakah setiap aplikasi di klaster berjalan setelah proses restart konfigurasi ulang. Jika ada aplikasi yang tidak tersedia, maka operasi konfigurasi ulang secara keseluruhan gagal. Jika operasi rekonfigurasi gagal, maka Amazon EMR akan membalikkan parameter konfigurasi ke versi kerja sebelumnya.  
Untuk menghindari gagal konfigurasi ulang, kami merekomendasikan Anda untuk hanya menginstal aplikasi di klaster Anda yang Anda rencanakan untuk digunakan. Kami juga merekomendasikan Anda untuk memastikan semua aplikasi klaster dalam keadaan sehat dan berjalan sebelum Anda mengirimkan permintaan konfigurasi ulang.

**Jenis konfigurasi ulang**  
Anda dapat mengkonfigurasi ulang grup instans dengan salah satu dari dua cara:  
+ **Menimpa.** Metode konfigurasi ulang default dan satu-satunya yang tersedia di Amazon EMR rilis lebih awal dari 5.35.0 dan 6.6.0. Metode konfigurasi ulang ini tanpa pandang bulu menimpa file on-cluster dengan set konfigurasi yang baru dikirimkan. Metode ini menghapus setiap perubahan pada file konfigurasi yang dibuat di luar API konfigurasi ulang.
+ **Gabungkan**. Metode konfigurasi ulang yang didukung untuk Amazon EMR merilis 5.35.0 dan 6.6.0 dan yang lebih baru, kecuali dari konsol EMR Amazon, di mana tidak ada versi yang mendukungnya. Metode konfigurasi ulang ini menggabungkan konfigurasi yang baru dikirimkan dengan konfigurasi yang sudah ada di cluster. Opsi ini hanya menambah atau memodifikasi konfigurasi baru yang Anda kirimkan. Ini mempertahankan konfigurasi yang ada.
Amazon EMR terus menimpa beberapa konfigurasi Hadoop penting yang diperlukan untuk memastikan bahwa layanan berjalan dengan benar.

**Batasan**

Ketika Anda melakukan konfigurasi ulang pada grup instans di klaster yang sedang berjalan, pertimbangkan keterbatasan-keterbatasan berikut:
+ Aplikasi non-yarn dapat gagal selama restart atau menyebabkan masalah klaster, terutama jika aplikasi tidak dikonfigurasi dengan benar. Klaster yang mendekati penggunaan memori dan CPU maksimum dapat mengalami masalah setelah proses restart. Hal ini terutama berlaku untuk grup instans utama.
+ Anda tidak dapat mengirimkan permintaan konfigurasi ulang ketika grup instans sedang diubah ukurannya. Jika konfigurasi ulang dimulai sementara grup instans sedang diubah ukurannya, maka konfigurasi ulang tidak akan memulai sampai perubahan ukuran grup instans telah selesai, dan sebaliknya. 
+ Setelah melakukan konfigurasi ulang terhadap grup instans, Amazon EMR akan melakukan restart pada aplikasi untuk mengizinkan konfigurasi baru berlaku. Gagal tugas atau perilaku aplikasi tak terduga lainnya mungkin terjadi jika aplikasi sedang digunakan saat konfigurasi ulang dilakukan. 
+ Jika konfigurasi ulang untuk grup instans gagal, maka Amazon EMR akan membalikkan parameter konfigurasi ke versi kerja sebelumnya. Jika proses pembalikan juga gagal, maka Anda harus mengirimkan permintaan `ModifyInstanceGroup` baru untuk memulihkan grup instans dari keadaan `SUSPENDED`.
+ Permintaan konfigurasi ulang untuk klasifikasi konfigurasi Phoenix hanya didukung di Amazon EMR versi 5.23.0 dan setelahnya, dan tidak didukung di Amazon EMR versi 5.21.0 atau 5.22.0. 
+ Permintaan konfigurasi ulang untuk klasifikasi HBase konfigurasi hanya didukung di Amazon EMR versi 5.30.0 dan yang lebih baru, dan tidak didukung di Amazon EMR versi 5.23.0 hingga 5.29.0. 
+ Amazon EMR mendukung permintaan konfigurasi ulang aplikasi pada cluster EMR Amazon dengan beberapa node utama hanya di Amazon EMR versi 5.27.0 dan yang lebih baru.
+ Mengkonfigurasi ulang `hdfs-encryption-zones` klasifikasi atau klasifikasi konfigurasi KMS Hadoop tidak didukung pada kluster EMR Amazon dengan beberapa node primer.
+ Amazon EMR saat ini tidak mendukung permintaan konfigurasi ulang tertentu untuk penjadwal kapasitas yang memerlukan memulai ulang YARN. ResourceManager Misalnya, Anda tidak dapat menghapus antrean sepenuhnya.

## Lakukan konfigurasi ulang pada grup instans di konsol tersebut
<a name="emr-configure-apps-running-cluster-console"></a>

**catatan**  
Konsol EMR Amazon tidak mendukung konfigurasi ulang tipe **Gabungan**.

1. [Buka konsol EMR Amazon di /emr https://console.aws.amazon.com](https://console.aws.amazon.com/emr)

1. Dalam daftar klaster di bawah **Nama**, pilih klaster aktif yang ingin Anda konfigurasi ulang.

1. Buka halaman detail klaster untuk klaster tersebut, dan buka tab **Konfigurasi**. 

1. Di daftar drop-down **Filter**, pilih grup instans yang ingin Anda konfigurasi ulang. 

1. Di menu drop-down **Konfigurasi ulang**, pilih **Mengedit tabel** atau **Mengedit file JSON**.
   + **Mengedit tabel** - Dalam tabel klasifikasi konfigurasi, edit properti dan nilai untuk konfigurasi yang ada, atau pilih **Tambahkan konfigurasi** untuk menyediakan klasifikasi konfigurasi tambahan. 
   + **Mengedit file JSON** - Masukkan konfigurasi secara langsung di JSON, atau gunakan sintaks singkatan (ditunjukkan dalam teks bayangan). Jika tidak, sediakan URI Amazon S3 untuk file dengan objek `Configurations` JSON.
**catatan**  
Kolom **Sumber** dalam tabel klasifikasi konfigurasi menunjukkan apakah konfigurasi disediakan ketika Anda membuat sebuah klaster, atau ketika Anda menentukan konfigurasi tambahan untuk grup instans ini. Anda dapat mengedit konfigurasi untuk grup instans dari kedua sumber. Anda tidak dapat menghapus konfigurasi klaster awal, tetapi Anda dapat menimpa mereka untuk grup instans.   
Anda juga dapat menambahkan atau mengedit klasifikasi konfigurasi bersarang langsung di tabel. Misalnya, untuk menyediakan sub-klasifikasi `export` tambahan `hadoop-env`, tambahkan klasifikasi konfigurasi `hadoop.export` dalam tabel. Kemudian, berikan properti dan nilai khusus untuk klasifikasi ini. 

1. (Opsional) Pilih **Terapkan konfigurasi ini ke semua grup instans aktif**.

1. Simpan perubahan.

## Lakukan konfigurasi ulang grup instans menggunakan CLI
<a name="emr-configure-apps-running-cluster-cli"></a>

Gunakan perintah **modify-instance-groups** untuk menentukan konfigurasi baru untuk grup instans di klaster yang sedang berjalan.

**catatan**  
Dalam contoh berikut, ganti *<j-2AL4XXXXXX5T9>* dengan ID cluster Anda, dan ganti *<ig-1xxxxxxx9>* dengan ID grup instans Anda.

**Example – Ganti konfigurasi untuk grup instans**  
Contoh berikut mereferensikan file JSON konfigurasi yang dipanggil `instanceGroups.json` untuk mengedit properti pemeriksa kesehatan NodeManager disk YARN untuk grup instance.  

1. Siapkan klasifikasi konfigurasi Anda, dan simpan sebagai `instanceGroups.json` di direktori yang sama di mana Anda akan menjalankan perintah.

   ```
   [
      {
         "InstanceGroupId":"<ig-1xxxxxxx9>",
         "Configurations":[
            {
               "Classification":"yarn-site",
               "Properties":{
                  "yarn.nodemanager.disk-health-checker.enable":"true",
                  "yarn.nodemanager.disk-health-checker.max-disk-utilization-per-disk-percentage":"100.0"
               },
               "Configurations":[]
            }
         ]
      }
   ]
   ```

1. Jalankan perintah berikut.

   ```
   aws emr modify-instance-groups --cluster-id <j-2AL4XXXXXX5T9> \
   --instance-groups file://instanceGroups.json
   ```

**Example – Menambahkan konfigurasi ke grup instans**  
Jika Anda ingin menambahkan konfigurasi ke grup instans, Anda harus menyertakan semua konfigurasi yang telah ditentukan sebelumnya untuk grup instans di permintaan `ModifyInstanceGroup`. Jika tidak, konfigurasi yang ditentukan sebelumnya akan dihapus.  
Contoh berikut menambahkan properti untuk pemeriksa memori NodeManager virtual YARN. Konfigurasi juga menyertakan nilai yang ditentukan sebelumnya untuk pemeriksa kesehatan NodeManager disk YARN sehingga nilainya tidak akan ditimpa.  

1. Siapkan konten berikut di `instanceGroups.json` dan simpan di direktori yang sama dimana anda akan menjalankan perintahnya.

   ```
   [
      {
         "InstanceGroupId":"<ig-1xxxxxxx9>",
         "Configurations":[
            {
               "Classification":"yarn-site",
               "Properties":{
                  "yarn.nodemanager.disk-health-checker.enable":"true",
                  "yarn.nodemanager.disk-health-checker.max-disk-utilization-per-disk-percentage":"100.0",
                  "yarn.nodemanager.vmem-check-enabled":"true",
                  "yarn.nodemanager.vmem-pmem-ratio":"3.0"
               },
               "Configurations":[]
            }
         ]
      }
   ]
   ```

1. Jalankan perintah berikut.

   ```
   aws emr modify-instance-groups --cluster-id <j-2AL4XXXXXX5T9> \
   --instance-groups file://instanceGroups.json
   ```

**Example — Tambahkan konfigurasi ke grup instance dengan konfigurasi ulang tipe **Gabung****  
Bila Anda ingin menggunakan metode konfigurasi ulang **Overwrite** default untuk menambahkan konfigurasi, Anda harus menyertakan semua konfigurasi yang ditentukan sebelumnya untuk grup instance tersebut dalam permintaan baru Anda. `ModifyInstanceGroup` Jika tidak, **Timpa akan menghapus** konfigurasi yang Anda tentukan sebelumnya. Anda tidak perlu melakukan ini dengan **Merge reconfiguration**. Sebagai gantinya, Anda harus memastikan bahwa permintaan Anda hanya menyertakan konfigurasi baru yang disertakan.  
Contoh berikut menambahkan properti untuk pemeriksa memori NodeManager virtual YARN. Karena ini adalah konfigurasi ulang tipe **Gabungan**, ini tidak menimpa nilai yang ditentukan sebelumnya untuk pemeriksa kesehatan NodeManager disk YARN.  

1. Siapkan konten berikut di `instanceGroups.json` dan simpan di direktori yang sama dimana anda akan menjalankan perintahnya.

   ```
   [
      {"InstanceGroupId":"<ig-1xxxxxxx9>",
       "ReconfigurationType" :"MERGE",
         "Configurations":[
            {"Classification":"yarn-site",
               "Properties":{
                  "yarn.nodemanager.vmem-check-enabled":"true",
                  "yarn.nodemanager.vmem-pmem-ratio":"3.0"
               },
               "Configurations":[]
            }
         ]
      }
   ]
   ```

1. Jalankan perintah berikut.

   ```
   aws emr modify-instance-groups --cluster-id <j-2AL4XXXXXX5T9> \
   --instance-groups file://instanceGroups.json
   ```

**Example – Hapus konfigurasi untuk grup instans**  
Untuk menghapus konfigurasi untuk grup instans, kirimkan permintaan konfigurasi ulang baru yang mengecualikan konfigurasi sebelumnya.   
Anda hanya dapat menimpa konfigurasi *Klaster* awal. Anda tidak dapat menghapusnya.
Misalnya, untuk menghapus konfigurasi pemeriksa kesehatan NodeManager disk YARN dari contoh sebelumnya, kirimkan yang baru `instanceGroups.json` dengan konten berikut.   

```
[
   {
      "InstanceGroupId":"<ig-1xxxxxxx9>",
      "Configurations":[
         {
            "Classification":"yarn-site",
            "Properties":{
               "yarn.nodemanager.vmem-check-enabled":"true",
               "yarn.nodemanager.vmem-pmem-ratio":"3.0"
            },
            "Configurations":[]
         }
      ]
   }
]
```
Untuk menghapus semua konfigurasi dalam permintaan konfigurasi ulang terakhir Anda, kirimkan permintaan konfigurasi ulang dengan konfigurasi array kosong. Misalnya,   

```
[
   {
      "InstanceGroupId":"<ig-1xxxxxxx9>",
      "Configurations":[]
   }
]
```

**Example – Melakukan konfigurasi ulang dan mengubah ukuran grup instans dalam satu permintaan**  
JSON contoh berikut menunjukkan cara melakukan konfigurasi ulang dan mengubah ukuran grup instans dalam permintaan yang sama.  

```
[
   {
      "InstanceGroupId":"<ig-1xxxxxxx9>",
      "InstanceCount":5,
      "EC2InstanceIdsToTerminate":["i-123"],
      "ForceShutdown":true,
      "ShrinkPolicy":{
         "DecommissionTimeout":10,
         "InstanceResizePolicy":{
            "InstancesToTerminate":["i-123"],
            "InstancesToProtect":["i-345"],
            "InstanceTerminationTimeout":20
         }
      },
      "Configurations":[
         {
            "Classification":"yarn-site",
            "Configurations":[],
            "Properties":{
               "yarn.nodemanager.disk-health-checker.enable":"true",
               "yarn.nodemanager.disk-health-checker.max-disk-utilization-per-disk-percentage":"100.0"
            }
         }
      ]
   }
]
```

## Lakukan konfigurasi ulang grup instans menggunakan Java SDK
<a name="emr-configure-apps-running-cluster-sdk"></a>

**catatan**  
Dalam contoh berikut, ganti *<j-2AL4XXXXXX5T9>* dengan ID cluster Anda, dan ganti *<ig-1xxxxxxx9>* dengan ID grup instans Anda.

Potongan kode berikut menyediakan konfigurasi baru untuk grup instans menggunakan AWS SDK untuk Java.

```
AWSCredentials credentials = new BasicAWSCredentials("access-key", "secret-key");
AmazonElasticMapReduce emr = new AmazonElasticMapReduceClient(credentials);

Map<String,String> hiveProperties = new HashMap<String,String>();
hiveProperties.put("hive.join.emit.interval","1000");
hiveProperties.put("hive.merge.mapfiles","true");
        
Configuration configuration = new Configuration()
    .withClassification("hive-site")
    .withProperties(hiveProperties);
    
InstanceGroupModifyConfig igConfig = new InstanceGroupModifyConfig()
    .withInstanceGroupId("<ig-1xxxxxxx9>")
    .withReconfigurationType("MERGE");
    .withConfigurations(configuration);

ModifyInstanceGroupsRequest migRequest = new ModifyInstanceGroupsRequest()
    .withClusterId("<j-2AL4XXXXXX5T9>")
    .withInstanceGroups(igConfig);

emr.modifyInstanceGroups(migRequest);
```

Potongan kode berikut menghapus konfigurasi yang telah ditentukan sebelumnya untuk grup instans dengan menyediakan array kosong konfigurasi.

```
List<Configuration> configurations = new ArrayList<Configuration>();

InstanceGroupModifyConfig igConfig = new InstanceGroupModifyConfig()
    .withInstanceGroupId("<ig-1xxxxxxx9>")
    .withConfigurations(configurations);

ModifyInstanceGroupsRequest migRequest = new ModifyInstanceGroupsRequest()
    .withClusterId("<j-2AL4XXXXXX5T9>")
    .withInstanceGroups(igConfig);

emr.modifyInstanceGroups(migRequest);
```

## Pecahkan masalah konfigurasi ulang grup instans
<a name="emr-configure-apps-running-cluster-troubleshoot"></a>

Jika proses konfigurasi ulang untuk grup instans gagal, Amazon EMR mengembalikan konfigurasi ulang dan mencatat pesan kegagalan menggunakan peristiwa Amazon. CloudWatch Peristiwa ini menyediakan ringkasan singkat dari kegagalan konfigurasi ulang. Ia mendaftar instans yang konfigurasi ulangnya gagal dan pesan kegagalan yang sesuai. Berikut ini adalah contoh pesan kegagalan.

```
The reconfiguration operation for instance group ig-1xxxxxxx9 in Amazon EMR cluster j-2AL4XXXXXX5T9 (ExampleClusterName) 
failed at 2021-01-01 00:00 UTC and took 2 minutes to fail. Failed configuration version is example12345. 
Failure message: Instance i-xxxxxxx1, i-xxxxxxx2, i-xxxxxxx3 failed with message "This is an example failure message".
```

Untuk mengumpulkan lebih banyak data tentang kegagalan konfigurasi ulang, Anda dapat memeriksa simpul yang menyediakan log. Dengan melakukan hal ini akan sangat berguna saat Anda menerima pesan seperti berikut.

```
i-xxxxxxx1 failed with message “Unable to complete transaction and some changes were applied.”
```

------
#### [ On the node ]

**Untuk mengakses simpul yang menyediakan log dengan menghubungkan ke sebuah simpul**

1. Gunakan SSH untuk terhubung ke simpul di mana konfigurasi ulang gagal dilakukan. Untuk instruksi, lihat [Connect ke instans Linux Anda](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AccessingInstances.html) di *Amazon EC2* *Panduan Pengguna untuk Instans Linux*.

1. Arahkan ke direktori berikut, yang berisi simpul yang menyediakan berkas log.

   ```
   /mnt/var/log/provision-node/
   ```

1. Buka subdirektori `reports` dan cari simpul yang menyediakan laporan untuk konfigurasi ulang Anda. Direktori `reports` mengatur log berdasarkan nomor versi konfigurasi ulang, pengenal unik universal (UUID), alamat IP instans Amazon EC2, dan stempel waktu. Setiap laporan adalah file YAML terkompresi yang berisi informasi rinci tentang proses konfigurasi ulang.

   Berikut ini adalah contoh nama dan path file laporan.

   ```
   /reports/2/ca598xxx-cxxx-4xxx-bxxx-6dbxxxxxxxxx/ip-10-73-xxx-xxx.ec2.internal/202104061715.yaml.gz
   ```

1. Anda dapat memeriksa laporan menggunakan penampil file seperti `zless`, seperti pada contoh berikut.

   ```
   zless 202104061715.yaml.gz
   ```

------
#### [ Amazon S3 ]

**Untuk mengakses simpul yang menyediakan log menggunakan Amazon S3**

1. Masuk ke Konsol Manajemen AWS dan buka konsol Amazon S3 di. [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)

1. Buka bucket Amazon S3 yang Anda tetapkan saat Anda mengkonfigurasi klaster untuk mengarsip berkas log.

1. Arahkan ke folder berikut, yang berisi simpul yang menyediakan berkas log:

   ```
   amzn-s3-demo-bucket/elasticmapreduce/<cluster id>/node/<instance id>/provision-node/
   ```

1. Buka folder `reports` dan cari simpul yang menyediakan laporan untuk konfigurasi ulang Anda. Folder `reports` mengatur log berdasarkan nomor versi konfigurasi ulang, pengenal unik universal (UUID), alamat IP instans Amazon EC2, dan stempel waktu. Setiap laporan adalah file YAML terkompresi yang berisi informasi rinci tentang proses konfigurasi ulang.

   Berikut ini adalah contoh nama dan path file laporan.

   ```
   /reports/2/ca598xxx-cxxx-4xxx-bxxx-6dbxxxxxxxxx/ip-10-73-xxx-xxx.ec2.internal/202104061715.yaml.gz
   ```

1. Untuk melihat berkas log, Anda dapat mengunduhnya dari Amazon S3 ke mesin lokal Anda sebagai file teks. Untuk instruksi, lihat [Mengunduh objek](https://docs.aws.amazon.com/AmazonS3/latest/userguide/download-objects.html).

------

Setiap file berkas log berisi rincian laporan penyediaan rinci untuk konfigurasi ulang terkait. Untuk menemukan informasi pesan kesalahan, Anda dapat mencari tingkat log `err` laporan. Format laporan tergantung pada versi Amazon EMR pada klaster Anda. 

Contoh berikut menunjukkan informasi kesalahan untuk Amazon EMR versi rilis lebih awal dari 5.32.0 dan 6.2.0.

```
- !ruby/object:Puppet::Util::Log
      level: !ruby/sym err
      tags: 
        - err
      message: "Example detailed error message."
      source: Puppet
      time: 2021-01-01 00:00:00.000000 +00:00
```

Amazon EMR versi rilis 5.32.0 dan 6.2.0 dan setelahnya menggunakan format berikut sebagai gantinya.

```
- level: err
  message: 'Example detailed error message.'
  source: Puppet
  tags:
  - err
  time: '2021-01-01 00:00:00.000000 +00:00'
  file: 
  line:
```

# Menyimpan data konfigurasi sensitif di AWS Secrets Manager
<a name="storing-sensitive-data"></a>

EMR Amazon menjelaskan dan mencantumkan operasi API yang memancarkan data konfigurasi kustom (seperti `DescribeCluster` dan`ListInstanceGroups`) melakukannya dalam teks biasa. Amazon EMR terintegrasi dengan AWS Secrets Manager sehingga Anda dapat menyimpan data Anda di Secrets Manager dan menggunakan ARN rahasia dalam konfigurasi Anda. Dengan cara ini, Anda tidak meneruskan data konfigurasi sensitif ke Amazon EMR dalam teks biasa dan memaparkannya ke eksternal. APIs Jika Anda menunjukkan bahwa pasangan kunci-nilai berisi ARN untuk rahasia yang disimpan di Secrets Manager, Amazon EMR mengambil rahasia ini saat mengirimkan data konfigurasi ke cluster. Amazon EMR tidak mengirim anotasi saat menggunakan eksternal APIs untuk menampilkan konfigurasi.

## Buat rahasia
<a name="create-secret"></a>

Untuk membuat rahasia, ikuti langkah-langkah di [Buat AWS Secrets Manager rahasia](https://docs.aws.amazon.com/secretsmanager/latest/userguide/create_secret.html) di *Panduan AWS Secrets Manager Pengguna*. Pada **Langkah 3**, Anda harus memilih bidang **Plaintext** untuk memasukkan nilai sensitif Anda.

Perhatikan bahwa meskipun Secrets Manager mengizinkan rahasia berisi hingga 65536 byte, Amazon EMR membatasi panjang gabungan kunci properti (tidak termasuk anotasi) dan nilai rahasia yang diambil menjadi 1024 karakter.

## Berikan akses EMR Amazon untuk mengambil rahasianya
<a name="grant-access"></a>

Amazon EMR menggunakan peran layanan IAM untuk menyediakan dan mengelola cluster untuk Anda. Peran layanan untuk Amazon EMR mendefinisikan tindakan yang diizinkan untuk Amazon EMR saat menyediakan sumber daya dan melakukan tugas tingkat layanan yang tidak dilakukan dalam konteks instans Amazon EC2 yang berjalan dalam klaster. [Untuk informasi selengkapnya tentang peran layanan, lihat [Peran layanan untuk Amazon EMR (peran EMR) dan Menyesuaikan peran IAM](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-iam-role.html).](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-iam-roles-custom.html)

Untuk mengizinkan Amazon EMR mengambil nilai rahasia dari Secrets Manager, tambahkan pernyataan kebijakan berikut ke peran EMR Amazon saat meluncurkan klaster.

```
{
   "Sid":"AllowSecretsRetrieval",
   "Effect":"Allow",
   "Action":"secretsmanager:GetSecretValue",
   "Resource":[
      "arn:aws:secretsmanager:<region>:<aws-account-id>:secret:<secret-name>"
   ]
}
```

Jika Anda membuat rahasia dengan pengelola pelanggan AWS KMS key, Anda juga harus menambahkan `kms:Decrypt` izin ke peran EMR Amazon untuk kunci yang Anda gunakan. Untuk informasi lebiih lanjut, lihat [Autentikasi dan pengendalian akses untuk AWS Secrets Manager](https://docs.aws.amazon.com/secretsmanager/latest/userguide/auth-and-access.html) di *Panduan Pengguna AWS Secrets Manager *.

## Gunakan rahasia dalam klasifikasi konfigurasi
<a name="config-secret"></a>

Anda dapat menambahkan `EMR.secret@` anotasi ke properti konfigurasi apa pun untuk menunjukkan bahwa pasangan nilai kunci-nya berisi ARN untuk rahasia yang disimpan di Secrets Manager.

Contoh berikut menunjukkan bagaimana memberikan ARN rahasia dalam klasifikasi konfigurasi:

```
{
   "Classification":"core-site",
   "Properties":{
      "presto.s3.access-key":"<sensitive-access-key>",
      "EMR.secret@presto.s3.secret-key":"arn:aws:secretsmanager:<region>:<aws-account-id>:secret:<secret-name>"
   }
}
```

Saat Anda membuat klaster dan mengirimkan konfigurasi beranotasi, Amazon EMR memvalidasi properti konfigurasi. Jika konfigurasi Anda valid, Amazon EMR menghapus anotasi dari konfigurasi dan mengambil rahasia dari Secrets Manager untuk membuat konfigurasi yang sebenarnya sebelum menerapkannya ke cluster:

```
{
   "Classification":"core-site",
   "Properties":{
      "presto.s3.access-key":"<sensitive-access-key>",
      "presto.s3.secret-key":"<my-secret-key-retrieved-from-Secrets-Manager>"
   }
}
```

Saat Anda memanggil tindakan seperti`DescribeCluster`, Amazon EMR mengembalikan konfigurasi aplikasi saat ini di cluster. Jika properti konfigurasi aplikasi ditandai sebagai berisi ARN rahasia, maka konfigurasi aplikasi yang dikembalikan oleh `DescribeCluster` panggilan berisi ARN dan bukan nilai rahasia. Ini memastikan bahwa nilai rahasia hanya terlihat di cluster:

```
{
   "Classification":"core-site",
   "Properties":{
      "presto.s3.access-key":"<sensitive-access-key>",
      "presto.s3.secret-key":"arn:aws:secretsmanager:<region>:<aws-account-id>:secret:<secret-name>"
   }
}
```

## Perbarui nilai rahasia
<a name="update-secret"></a>

Amazon EMR mengambil nilai rahasia dari konfigurasi beranotasi setiap kali grup instans terlampir memulai, mengonfigurasi ulang, atau mengubah ukuran. Anda dapat menggunakan Secrets Manager untuk mengubah nilai rahasia yang digunakan dalam konfigurasi klaster yang sedang berjalan. Saat melakukannya, Anda dapat mengirimkan permintaan konfigurasi ulang ke setiap grup instans yang ingin Anda terima nilai yang diperbarui. Untuk informasi selengkapnya tentang cara mengkonfigurasi ulang grup instans, dan hal-hal yang perlu dipertimbangkan saat melakukannya, lihat[Lakukan konfigurasi ulang pada grup instans di klaster yang sedang berjalan](emr-configure-apps-running-cluster.md).

# 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
```