Mulai dari EMR 3.49.0 dan 5.15.0, EMR secara dinamis menetapkan nilai memori default untuk komponen YARN saat pembuatan kluster berdasarkan tipe instans yang dipilih dan layanan yang diterapkan. Anda dapat menyesuaikan nilai-nilai tersebut di Konsol EMR setelah kluster dibuat.
Jika komponen YARN menerima memori lebih sedikit dari yang diharapkan setelah inisialisasi kluster, periksa dua hal berikut:
Jumlah layanan yang diterapkan di kluster. EMR mendistribusikan memori yang tersedia ke seluruh layanan yang diterapkan, sehingga semakin banyak layanan, semakin sedikit memori per komponen.
Apakah spesifikasi instans Elastic Compute Service (ECS) di kelompok node memenuhi kebutuhan memori semua layanan yang diterapkan.
Ukuran heap memory untuk komponen YARN
Pada tab Configure di halaman layanan YARN di Konsol EMR, atur parameter berikut di yarn-env.sh atau mapred-env.sh. Semua parameter berlaku di tingkat kluster dan memerlukan restart komponen agar diterapkan.
Component | Parameter | Config file | When to adjust | Constraints |
ResourceManager |
| yarn-env.sh | Volume tinggi pekerjaan kecil menyebabkan ResourceManager menjadi lambat | Nilai minimum: 1024. Restart ResourceManager untuk menerapkan. |
NodeManager |
| yarn-env.sh | Pengumpulan sampah (GC) penuh terjadi karena Shuffle Service menggunakan memori NodeManager secara berlebihan | Restart NodeManager untuk menerapkan. |
WebAppProxyServer |
| yarn-env.sh | Nilai default tidak mencukupi | Restart WebAppProxyServer untuk menerapkan. |
TimelineServer |
| yarn-env.sh | Nilai default tidak mencukupi | Restart TimelineServer untuk menerapkan. |
TimelineServer |
| yarn-env.sh | Tekanan memori langsung (direct memory pressure) pada TimelineServer | Nilai minimum: 512m. Restart TimelineServer untuk menerapkan. |
MRHistoryServer |
| mapred-env.sh | Nilai default tidak mencukupi | Restart MRHistoryServer untuk menerapkan. |
Konfigurasi resource kluster untuk YARN
Pada tab Configure di halaman layanan YARN di Konsol EMR, atur parameter yarn-site.xml berikut.
Batas alokasi penjadwal
Parameter ini berlaku di tingkat kluster dan mengontrol batas atas serta batas bawah resource per container. Perubahan memerlukan restart ResourceManager.
Parameter | Description | Default | When to adjust |
| Memori maksimum yang dapat diminta oleh satu container dari penjadwal | — | Tingkatkan untuk workload yang mengirimkan pekerjaan single-container besar. Nilai yang terlalu tinggi dapat menyebabkan fragmentasi resource. |
| Memori minimum yang dapat diminta oleh satu container dari penjadwal | — | Jarang perlu disesuaikan. |
| vCPU maksimum yang dapat diminta oleh satu container dari penjadwal | 32 | Tingkatkan untuk workload yang mengirimkan pekerjaan single-container besar. Nilai yang terlalu tinggi dapat menyebabkan fragmentasi resource. |
| vCPU minimum yang dapat diminta oleh satu container dari penjadwal | 1 | Jarang perlu disesuaikan. |
Batas resource NodeManager
Parameter ini berlaku di tingkat kelompok node. Saat mengonfigurasinya, pilih Node group level configuration di Konsol EMR—jika tidak, perubahan tidak akan berlaku. EMR mendukung tipe instans campuran di berbagai kelompok node, dengan semua instans ECS dalam satu kelompok node memiliki tipe instans yang sama. Mengonfigurasi resource NodeManager di tingkat kelompok node mencegah node yang lebih kecil kelebihan beban dan node yang lebih besar tidak dimanfaatkan secara optimal.
Parameter | Description | Default | When to adjust |
| Total memori fisik yang tersedia untuk NodeManager guna menjalankan container | Ditetapkan saat pembuatan kluster berdasarkan tipe instans | Konfigurasikan berdasarkan penerapan kluster Anda. Restart NodeManager untuk menerapkan. |
| Total vCPU yang tersedia untuk NodeManager guna menjalankan container | Jumlah vCPU untuk tipe instans tersebut. Untuk tipe instans berkapasitas memori tinggi, nilai default adalah dua kali jumlah vCPU tipe instans berkapasitas memori reguler. | Sesuaikan berdasarkan karakteristik workload. Restart NodeManager untuk menerapkan. |
Hubungan antara memori penjadwal dan NodeManager
yarn.scheduler.maximum-allocation-mb harus lebih besar daripada yarn.nodemanager.resource.memory-mb agar pekerjaan dijadwalkan dengan benar.
Perhatikan hal-hal berikut saat mengelola kedua parameter ini:
EMR memungkinkan Anda mengonfigurasi kedua parameter saat membuat kluster atau saat melakukan scaling out dengan menambahkan kelompok node untuk pertama kalinya.
Saat Anda meningkatkan spesifikasi instans kelompok node atau mengubah secara manual
yarn.nodemanager.resource.memory-mb,yarn.scheduler.maximum-allocation-mbtidak diperbarui secara otomatis. Perbarui secara manual sesuai kebutuhan.Pertama kali Anda mengonfigurasi
yarn.scheduler.maximum-allocation-mbuntuk kelompok node baru, ResourceManager tidak secara otomatis direstart. Restart ResourceManager secara manual agar perubahan diterapkan.
Restart ResourceManager dapat menyebabkan pekerjaan yang sedang berjalan gagal. Lakukan restart tersebut pada jam sepi.