Label node memungkinkan YARN mengisolasi pekerjaan di lapisan fisik dengan mengarahkannya ke partisi node tertentu. Topik ini menjelaskan langkah-langkah konfigurasi antrian Capacity Scheduler YARN dan partisi berlabel node di E-MapReduce (EMR) untuk mencapai isolasi pekerjaan baik secara logis maupun fisik.
Latar Belakang
YARN menyediakan dua mekanisme pelengkap untuk manajemen sumber daya: antrian dan label node.
Antrian menangani alokasi sumber daya secara logis. Antrian membagi sumber daya komputasi kluster di antara kelompok pengguna atau aplikasi berdasarkan rasio yang telah ditentukan, sehingga tim dan jenis workload berbeda mendapatkan bagian yang adil dalam kluster bersama.
Label node mengelompokkan node fisik menjadi partisi. Dengan memberi tag pada node, Anda dapat mengarahkan pekerjaan ke perangkat keras tertentu—misalnya, mengarahkan pekerjaan real-time yang intensif memori ke instans optimasi memori, dan pekerjaan batch ke instans komputasi standar.
Penggunaan antrian dan label node secara bersamaan memberikan isolasi logis dan fisik: antrian mengatur siapa yang mendapatkan berapa banyak, sedangkan label node mengontrol di mana pekerjaan benar-benar dijalankan.
Jenis partisi
Saat membuat partisi, Anda dapat memilih Exclusive sebagai tipe partisi. Dengan partisi Exclusive, kontainer dialokasikan ke node dalam partisi hanya jika terdapat kecocokan persis. Hal ini memastikan bahwa pekerjaan diisolasi secara fisik ke node yang ditentukan.
Untuk isolasi workload—kasus penggunaan utama dalam topik ini—gunakan partisi Exclusive.
Prasyarat
Sebelum memulai, pastikan Anda telah memiliki:
-
Kluster EMR dengan layanan YARN yang sedang berjalan
-
Capacity Scheduler dikonfigurasi sebagai penjadwal YARN (hanya Capacity Scheduler yang mendukung label node)
Konfigurasi antrian dan label node
Contoh ini menggunakan kluster DataLake yang menjalankan EMR V5.16.0. Langkah-langkah yang sama berlaku untuk jenis dan versi kluster EMR lainnya.
Skenario: Sebuah perusahaan memerlukan dua antrian anak (warehouse dan analysis) serta dua partisi (batch dan streaming) untuk mengisolasi pekerjaan batch offline dari pekerjaan streaming real-time.
Target alokasi sumber daya:
Konfigurasi mencakup empat langkah:
-
Edit antrian sumber daya
-
Tambahkan partisi dan kaitkan node
-
Aktifkan manajemen asosiasi partisi-antrian
-
Kirim pekerjaan ke partisi tertentu
Langkah 1: Edit antrian sumber daya
-
Masuk ke Konsol EMR. Pada halaman EMR on ECS, temukan kluster Anda dan klik Services di kolom Actions. Di tab Services, klik YARN.
-
Pada halaman layanan YARN, klik tab Edit Resource Queue, lalu klik Manage Queues.
-
Pada kotak dialog Manage Child Queues, klik Add Queue untuk membuat antrian
warehousedananalysis. Atur Queue Capacity untuk setiap antrian, dan atur Status ke Started:Queue Queue capacity warehouse 60 analysis 30 default 10 

-
Klik Not Effective Yet. Pada kotak dialog Configurations to Take Effect, klik refresh_queues di kolom Actions.

Langkah 2: Tambahkan partisi dan kaitkan node
-
Klik tab Partitions, lalu klik Add Partition untuk membuat partisi
streaming. Pada kotak dialog Add Partition, konfigurasikan parameter berikut:-
Partition Name:
streaming -
Partition Type: Exclusive — kontainer dialokasikan ke node dalam partisi ini hanya jika terdapat kecocokan persis.
-
Associated Node Groups: Pilih kelompok node yang akan dikaitkan dengan partisi ini. Dalam contoh ini,
emr-task-3dipilih. Kelompok nodeemr-task-3berisi instans optimasi memori yang cocok untuk pekerjaan real-time yang menyimpan data antara dalam jumlah besar dan memerlukan latensi rendah. Pilih kelompok node berdasarkan tipe instans dan kebutuhan workload Anda.

-
-
Ulangi langkah sebelumnya untuk menambahkan partisi
batch.
-
Klik Not Effective Yet. Pada kotak dialog Configurations to Take Effect, klik refresh_labels di kolom Actions.

-
Setelah konfigurasi diterapkan, konfirmasi total sumber daya untuk setiap partisi di kolom Total Resources.

Langkah 3: Aktifkan manajemen asosiasi partisi-antrian
-
Di tab Edit Resource Queue, pilih partisi
batchdari daftar drop-down Select Partition, lalu aktifkan Enable Partition-queue Association Management. -
Pada kotak dialog Enable Partition-queue Association Management, atur Queue Capacity untuk setiap antrian, lalu klik OK. Ulangi langkah ini untuk partisi
streaming.Dalam contoh ini, semua antrian memiliki akses ke kedua partisi. Untuk membatasi partisi hanya untuk pekerjaan dari antrian tertentu, atur kapasitas antrian lainnya ke
0.Queue Capacity in batch partition Capacity in streaming partition warehouse 60 70 analysis 30 20 default 10 10 
-
Klik Not Effective Yet. Pada kotak dialog Configurations to Take Effect, klik refresh_queues di kolom Actions.
-
Verifikasi bahwa label node aktif di antarmuka web YARN.
-
Halaman Node Labels: mengonfirmasi partisi dan jenisnya.

-
Halaman Scheduler: mengonfirmasi alokasi kapasitas antrian-partisi.

-
Langkah 4: Kirim pekerjaan ke partisi tertentu
Dengan antrian dan label node telah dikonfigurasi, kirim pekerjaan ke antrian dan partisi tertentu menggunakan parameter spark.yarn.am.nodeLabelExpression dan spark.yarn.executor.nodeLabelExpression.
-
Masuk ke node master dan buka direktori instalasi Spark:
cd /opt/apps/SPARK3/spark-3.3.1-hadoop3.2-1.1.1 -
Kirim pekerjaan Spark yang ditujukan ke antrian
warehousedan partisibatch:Jika Anda hanya menentukan antrian tanpa ekspresi label node, pekerjaan akan berjalan di partisi default antrian tersebut. Untuk mengubah partisi default suatu antrian, klik Edit di kolom Actions antrian tersebut di tab Edit Resource Queue.
Parameter Description Value in this example --classMain class of the application org.apache.spark.examples.SparkLR--masterResource manager yarn--deploy-modeLocation where the driver starts cluster--driver-memoryDriver memory 1g--executor-memoryMemory per executor 2g--conf spark.yarn.am.nodeLabelExpressionPartition for the AM batch--conf spark.yarn.executor.nodeLabelExpressionPartition for executors batch--queueTarget queue warehouse./bin/spark-submit \ --class org.apache.spark.examples.SparkLR \ --master yarn \ --deploy-mode cluster \ --driver-memory 1g \ --executor-memory 2g \ --conf spark.yarn.am.nodeLabelExpression=batch \ --conf spark.yarn.executor.nodeLabelExpression=batch \ --queue=warehouse \ examples/jars/spark-examples_2.12-3.3.1.jarKedua parameter
spark.yarn.am.nodeLabelExpressiondanspark.yarn.executor.nodeLabelExpressionharus diatur agar ApplicationMaster (AM) dan executor diarahkan ke partisi target. -
Di antarmuka web YARN, konfirmasi bahwa pekerjaan SparkLR berjalan di antrian
warehousepada partisibatch.
FAQ
Pekerjaan tidak berjalan di partisi yang diharapkan saat menggunakan spark-submit.
Periksa apakah kedua parameter spark.yarn.am.nodeLabelExpression dan spark.yarn.executor.nodeLabelExpression telah disertakan dalam perintah pengiriman. Jika hanya antrian yang ditentukan, pekerjaan akan berjalan di partisi default antrian tersebut, bukan di partisi bernama. Pastikan juga bahwa konfigurasi antrian dan partisi telah diterapkan dengan melakukan refresh.
Pekerjaan tetap dalam status ACCEPTED dan tidak pernah dimulai.
Pertama, periksa apakah antrian target memiliki sumber daya yang cukup. Jika pekerjaan lain sedang mengonsumsi kapasitas antrian, tunggu hingga pekerjaan tersebut selesai sebelum mengirim ulang.
Jika antrian tampak memiliki sumber daya yang cukup, buka pekerjaan tersebut di antarmuka web YARN dan periksa bidang Diagnostics. Jika menampilkan Queue's AM resource limit exceeded, artinya antrian memiliki sumber daya tetapi persentase sumber daya ApplicationMaster terlalu rendah. Kolam sumber daya AM terpisah dari kolam executor—ketika terlalu banyak pekerjaan bersaing untuk slot AM, pekerjaan baru akan macet.
Untuk meningkatkan persentase sumber daya AM, cari capacity_scheduler.xml di tab Configure pada halaman layanan YARN dan naikkan nilai yarn.scheduler.capacity.maximum-am-resource-percent. Misalnya, ubah dari 0.25 menjadi 0.5.
Sesuaikan persentase sumber daya AM berdasarkan pola workload Anda. Kluster yang menjalankan banyak pekerjaan kecil berdurasi pendek biasanya mendapat manfaat dari persentase sumber daya AM yang lebih tinggi.