Pada EMR versi 3.49.0 dan 5.15.0 serta versi yang lebih baru, EMR secara dinamis menyesuaikan pengaturan memori default untuk komponen selama pembuatan kluster berdasarkan tipe instans dan layanan yang dipilih. Perilaku ini menggantikan konfigurasi default statis yang digunakan pada versi sebelumnya. Topik ini menjelaskan cara mengonfigurasi ukuran memori heap untuk komponen YARN dan menggunakan konfigurasi sumber daya YARN.
Setelah kluster EMR diinisialisasi, jika memori yang dialokasikan ke komponen YARN terlalu kecil, periksa apakah terlalu banyak layanan diterapkan di kluster tersebut. EMR mengalokasikan sumber daya berdasarkan layanan yang diterapkan. Jika Anda menerapkan banyak layanan, alokasi memori untuk komponen YARN mungkin berkurang. Selain itu, pastikan spesifikasi instans Elastic Compute Service (ECS) dalam kelompok node mencukupi untuk memenuhi kebutuhan memori layanan yang diterapkan di kluster EMR.
Anda dapat menyesuaikan pengaturan parameter komponen YARN di konsol EMR setelah kluster EMR dibuat.
Konfigurasi Ukuran Memori Heap untuk Komponen YARN
Pada tab Configure halaman layanan YARN di konsol EMR, konfigurasikan parameter-parameter berikut. Tabel berikut menjelaskan parameter-parameter tersebut.
Nama Komponen | File Konfigurasi | Parameter | Ruang Lingkup Efektif | Catatan |
ResourceManager | yarn-env.sh | YARN_RESOURCEMANAGER_HEAPSIZE | Tingkat Kluster | Nilai minimum adalah 1024. Jika terdapat banyak pekerjaan kecil, Anda dapat meningkatkan ukuran memori heap. Jika Anda meningkatkan ukuran memori heap, Anda harus me-restart komponen ResourceManager agar perubahan berlaku. |
NodeManager | yarn-env.sh | YARN_NODEMANAGER_HEAPSIZE | Tingkat Kluster | Jika full garbage collection (GC) terjadi karena komponen Shuffle Service menggunakan banyak memori dari komponen NodeManager, Anda dapat meningkatkan ukuran memori heap. Jika Anda meningkatkan ukuran memori heap, Anda harus me-restart komponen NodeManager agar perubahan diterapkan. |
WebAppProxyServer | yarn-env.sh | YARN_PROXYSERVER_HEAPSIZE | Tingkat Kluster | Jika Anda menyesuaikan nilai parameter ini, Anda harus me-restart komponen WebAppProxyServer agar perubahan diterapkan. |
TimelineServer | yarn-env.sh | YARN_TIMELINESERVER_HEAPSIZE | Tingkat Kluster | Jika Anda menyesuaikan nilai parameter ini, Anda harus me-restart komponen TimelineServer agar perubahan diterapkan. |
TimelineServer | yarn-env.sh |
| Tingkat Kluster | Ukuran maksimum memori langsung untuk TimelineServer. Nilai minimum parameter ini adalah 512m. Jika Anda menyesuaikan nilai parameter ini, Anda harus me-restart komponen TimelineServer agar perubahan diterapkan. |
MRHistoryServer | mapred-env.sh | HADOOP_JOB_HISTORYSERVER_HEAPSIZE | Tingkat Kluster | Jika Anda menyesuaikan nilai parameter ini, Anda harus me-restart komponen MRHistoryServer agar perubahan diterapkan. |
Konfigurasi Sumber Daya Kluster untuk YARN
Pada tab Configure halaman layanan YARN di konsol EMR, konfigurasikan parameter-parameter berikut. Tabel berikut menjelaskan parameter-parameter tersebut.
Parameter | Deskripsi | File Konfigurasi | Ruang Lingkup Efektif | Catatan |
yarn.scheduler.maximum-allocation-mb | Memori maksimum yang dapat diminta oleh satu kontainer dalam penjadwal. | yarn-site.xml | Tingkat Kluster | Jika kluster perlu mengirimkan pekerjaan besar dalam satu kontainer, Anda dapat meningkatkan nilai parameter ini. Namun, nilai yang terlalu besar dapat menyebabkan fragmentasi sumber daya. Jika Anda menyesuaikan nilai parameter ini, Anda harus me-restart komponen ResourceManager agar perubahan diterapkan. |
yarn.scheduler.minimum-allocation-mb | Memori minimum yang dapat diminta oleh satu kontainer dalam penjadwal. | yarn-site.xml | Tingkat Kluster | Dalam kebanyakan kasus, Anda tidak perlu menyesuaikan nilai parameter ini. Jika Anda menyesuaikan nilai parameter ini, Anda harus me-restart komponen ResourceManager agar perubahan diterapkan. |
yarn.scheduler.maximum-allocation-vcores | Jumlah maksimum vCPU yang dapat diminta oleh satu kontainer dalam penjadwal. | yarn-site.xml | Tingkat Kluster | Nilai default adalah 32. Jika kluster perlu mengirimkan pekerjaan besar dalam satu kontainer, Anda dapat meningkatkan nilai parameter ini. Namun, nilai yang terlalu besar dapat menyebabkan fragmentasi sumber daya. Jika Anda menyesuaikan nilai parameter ini, Anda harus me-restart komponen ResourceManager agar perubahan diterapkan. |
yarn.scheduler.minimum-allocation-vcores | Jumlah minimum vCPU yang dapat diminta oleh satu kontainer dalam penjadwal. | yarn-site.xml | Tingkat Kluster | Nilai default adalah 1. Dalam kebanyakan kasus, Anda tidak perlu menyesuaikan nilai parameter ini. Jika Anda menyesuaikan nilai parameter ini, Anda harus me-restart komponen ResourceManager agar perubahan diterapkan. |
yarn.nodemanager.resource.memory-mb | Sumber daya memori yang dapat digunakan oleh komponen NodeManager. | yarn-site.xml | Tingkat Kelompok Node | Anda dapat mengonfigurasi parameter ini berdasarkan penyebaran kluster Anda. Jika Anda menyesuaikan nilai parameter ini, Anda harus me-restart komponen NodeManager agar perubahan diterapkan. Penting Saat Anda mengonfigurasi parameter ini, Anda harus memilih grup node. |
yarn.nodemanager.resource.cpu-vcores | Jumlah vCPU yang tersedia yang dapat digunakan oleh komponen NodeManager. | yarn-site.xml | Tingkat Kelompok Node | Nilai default adalah jumlah vCPU dari tipe instance yang digunakan oleh grup node. Jika grup node menggunakan tipe instance dengan spesifikasi memori tinggi, grup node menggunakan dua kali jumlah vCPU dari tipe instance dengan spesifikasi memori reguler. Anda dapat menyesuaikan nilai parameter ini berdasarkan penyebaran kluster Anda. Jika Anda menyesuaikan nilai parameter ini, Anda harus me-restart komponen NodeManager agar perubahan diterapkan. Penting Saat Anda mengonfigurasi parameter ini, Anda harus memilih grup node. |
Saat memodifikasi parameter yarn.nodemanager.resource.memory-mb dan yarn.nodemanager.resource.cpu-vcores, pilih Node Group-level Configuration agar perubahan berlaku. EMR memungkinkan kluster menjalankan berbagai tipe instans ECS menggunakan kelompok node. Semua instans ECS dalam satu kelompok node memiliki tipe instans yang sama. Dengan mengonfigurasi sumber daya NodeManager pada tingkat kelompok node, Anda memastikan bahwa node dengan tipe instans lebih kecil tidak kelebihan beban dan node dengan tipe instans lebih besar tidak kurang dimanfaatkan selama penjadwalan. Hal ini juga menghindari kebutuhan untuk mengonfigurasi ulang sumber daya NodeManager untuk setiap node ECS secara individual.
EMR memungkinkan Anda mengonfigurasi parameter yarn.scheduler.maximum-allocation-mb dan yarn.nodemanager.resource.memory-mb saat membuat kluster atau saat melakukan penskalaan kluster dengan menambahkan kelompok node untuk pertama kalinya. Nilai parameter yarn.scheduler.maximum-allocation-mb harus lebih besar daripada nilai parameter yarn.nodemanager.resource.memory-mb agar pekerjaan dapat dijadwalkan sesuai harapan.
Saat meningkatkan spesifikasi kelompok node atau mengubah nilai parameter yarn.nodemanager.resource.memory-mb, nilai parameter yarn.scheduler.maximum-allocation-mb tidak berubah secara otomatis. Anda dapat menyesuaikan nilai parameter yarn.scheduler.maximum-allocation-mb secara manual sesuai kebutuhan.
Untuk mencegah dampak pada pekerjaan Anda, saat pertama kali mengonfigurasi parameter yarn.scheduler.maximum-allocation-mb untuk grup node baru, komponen ResourceManager tidak otomatis direstart. Agar konfigurasi diterapkan, Anda harus secara manual me-restart komponen ResourceManager.
CatatanRestart komponen ResourceManager dapat menyebabkan kegagalan pekerjaan. Kami merekomendasikan Anda me-restart komponen tersebut selama jam-jam sepi.