Topik ini menjelaskan fitur label simpul YARN dan cara menggunakannya, serta memberikan jawaban atas beberapa pertanyaan umum terkait fitur tersebut.
Ikhtisar
Fitur label simpul memungkinkan Anda mengelola simpul tempat NodeManager diterapkan dalam kluster berdasarkan partisi yang berbeda. Satu simpul hanya dapat termasuk dalam satu partisi. Anda dapat menggunakan fitur ini untuk membagi kluster menjadi beberapa partisi yang berisi simpul berbeda. Secara default, parameter partisi diatur ke string kosong untuk sebuah simpul (partition=""), yang berarti simpul tersebut termasuk dalam partisi DEFAULT.
Partisi dapat diklasifikasikan ke dalam jenis-jenis berikut:
Partisi eksklusif: Kontainer hanya dapat dialokasikan ke simpul partisi eksklusif jika partisi tersebut cocok secara tepat.
Partisi non-eksklusif: Kontainer dapat dialokasikan ke simpul partisi non-eksklusif ketika partisi tersebut cocok secara tepat. Jika tidak ada partisi yang ditentukan atau partisi DEFAULT ditentukan sebagai partisi tempat kontainer dialokasikan, kontainer dapat dialokasikan ke simpul partisi non-eksklusif yang memiliki sumber daya idle.
Hanya Penjadwal Kapasitas yang mendukung fitur label simpul. Anda dapat mengonfigurasi penjadwal atau parameter node-label-expression dari mesin komputasi untuk mengalokasikan kontainer dalam antrian ke partisi yang dapat diakses oleh antrian tersebut.
Untuk informasi lebih lanjut tentang label simpul, lihat Label Simpul YARN.
Batasan
Jika kluster Anda adalah versi minor sebelum E-MapReduce (EMR) V5.11.1 atau EMR V3.45.1, dan nilai item konfigurasi
yarn.node-labels.configuration-typedalam fileyarn-site.xmladalah terpusat, Anda dapat mengikuti instruksi dalam topik ini untuk menggunakan fitur label simpul.Jika kluster Anda adalah EMR V5.11.1, EMR V3.45.1, atau versi minor setelah EMR V5.11.1 atau EMR V3.45.1, Anda dapat mengelola partisi YARN di konsol EMR. Untuk informasi lebih lanjut, lihat Kelola partisi YARN di konsol EMR.
Gunakan fitur label simpul
Aktifkan fitur label simpul di konsol EMR
Di tab Konfigurasi halaman layanan YARN, klik tab yarn-site.xml, tambahkan item konfigurasi yang dijelaskan dalam tabel berikut, lalu klik Simpan. Kemudian, mulai ulang ResourceManager agar konfigurasi berlaku.
Kunci | Nilai | Deskripsi |
yarn.node-labels.enabled | true | Menentukan apakah akan mengaktifkan fitur label simpul. |
yarn.node-labels.fs-store.root-dir | /tmp/node-labels | Menentukan direktori tempat data label simpul disimpan. Secara default, label simpul dikonfigurasikan dalam mode terpusat. Dalam mode ini, Anda dapat menentukan direktori penyimpanan label simpul. |
Untuk lebih memahami prinsip kerja fitur label simpul, topik ini menjelaskan cara mengonfigurasi label simpul dalam mode terpusat. Di EMR V5.11.1, EMR V3.45.1, atau versi minor setelah EMR V5.11.1 atau EMR V3.45.1, parameter
yarn.node-labels.configuration-typediatur ke terdistribusi secara default. Dalam hal ini, Anda tidak perlu menambahkan perintah secara manual. Sebagai gantinya, Anda dapat mengelola partisi YARN di konsol EMR. Untuk informasi lebih lanjut, lihat Kelola partisi YARN di konsol EMR. Untuk informasi lebih lanjut tentang label simpul, lihat "Label Simpul YARN" dalam dokumentasi Apache Hadoop.Jika Anda mengatur parameter yarn.node-labels.fs-store.root-dir ke direktori alih-alih URL, sistem file yang ditentukan oleh variabel
fs.defaultFSdigunakan. Ini setara dengan konfigurasi${fs.defaultFS}/tmp/node-labels. Dalam banyak kasus, sistem file yang digunakan di EMR adalah Hadoop Distributed File System (HDFS).
Jalankan perintah untuk membuat partisi dan memetakan simpul ke partisi
Jika Anda ingin sistem secara otomatis menentukan partisi untuk masing-masing simpul tempat NodeManager berada dalam grup simpul yang diskalakan keluar, Anda dapat membuat satu atau lebih partisi dan menambahkan perintah yarn rmadmin -replaceLabelsOnNode ke skrip bootstrap grup simpul berdasarkan kebutuhan bisnis Anda. Dengan cara ini, perintah dijalankan setelah NodeManager dimulai.
Contoh kode:
# Masuk sebagai administrator default hadoop YARN.
sudo su - hadoop
# Buat partisi di kluster Anda.
yarn rmadmin -addToClusterNodeLabels "DEMO"
yarn rmadmin -addToClusterNodeLabels "CORE"
# Periksa simpul YARN di kluster.
yarn node -list
# Peta setiap simpul ke partisi.
yarn rmadmin -replaceLabelsOnNode "core-1-1.c-XXX.cn-hangzhou.emr.aliyuncs.com=DEMO"
yarn rmadmin -replaceLabelsOnNode "core-1-2.c-XXX.cn-hangzhou.emr.aliyuncs.com=DEMO"Setelah perintah dijalankan, periksa hasil konfigurasi pada antarmuka web ResourceManager.
Konfigurasi simpul

Konfigurasi label simpul

Gunakan Penjadwal Kapasitas untuk mengonfigurasi partisi yang dapat diakses oleh antrian dan pekerjaan
Sebelum menggunakan Penjadwal Kapasitas untuk mengonfigurasi partisi, pastikan parameter yarn.resourcemanager.scheduler.class dalam file yarn-site.xml diatur ke org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacityScheduler.
Untuk menentukan partisi yang dapat diakses dan kapasitas sumber daya yang tersedia di setiap partisi untuk sebuah antrian, tambahkan item konfigurasi yang dijelaskan dalam tabel berikut ke file capacity-scheduler.xml. Ganti <queue-path> dengan jalur antrian dan <label> dengan nama partisi. Jika Anda ingin partisi DEFAULT dapat diakses oleh sebuah antrian, gunakan nilai default dari item konfigurasi yarn.scheduler.capacity.<queue-path>.accessible-node-labels.<label>.capacity dan yarn.scheduler.capacity.<queue-path>.accessible-node-labels.<label>.maximum-capacity.
Item Konfigurasi | Nilai | Deskripsi |
yarn.scheduler.capacity.<queue-path>.accessible-node-labels | Nama partisi. Pisahkan beberapa partisi menggunakan koma (,). | Partisi yang dapat diakses oleh antrian tertentu. |
yarn.scheduler.capacity.<queue-path>.accessible-node-labels.<label>.capacity | Untuk informasi lebih lanjut mengenai nilai valid, lihat item konfigurasi yarn.scheduler.capacity.<queue-path>.capacity. | Kapasitas sumber daya dalam partisi tertentu yang tersedia untuk antrian tertentu. Penting Untuk menerapkan konfigurasi ini pada sebuah antrian, Anda harus menentukan kapasitas sumber daya untuk semua antrian leluhur terkait. |
yarn.scheduler.capacity.<queue-path>.accessible-node-labels.<label>.maximum-capacity | Untuk informasi lebih lanjut mengenai nilai valid, lihat item konfigurasi yarn.scheduler.capacity.<queue-path>.maximum-capacity. Nilai default: 100. | Kapasitas maksimum sumber daya dalam partisi tertentu yang tersedia untuk antrian tertentu. |
yarn.scheduler.capacity.<queue-path>.default-node-label-expression | Nama partisi. Nilai defaultnya adalah string kosong, yang menunjukkan partisi DEFAULT. | Partisi default yang dialokasikan ke kontainer dalam pekerjaan yang dikirimkan melalui antrian tertentu, jika tidak ada partisi yang ditentukan untuk kontainer tersebut. |
Untuk menetapkan kapasitas sumber daya aktual partisi yang tersedia bagi sebuah antrian menjadi lebih besar dari nol, Anda harus menentukan kapasitas sumber daya yang sama untuk semua antrian leluhur terkait. Hal ini disebabkan nilai default item konfigurasi
yarn.scheduler.capacity.<queue-path>.accessible-node-labels.<label>.capacityadalah 0 untuk semua antrian. Anda perlu mengatur item konfigurasiyarn.scheduler.capacity.root.accessible-node-labels.<label>.capacitymenjadi 100 untuk antrian root. Dengan demikian, kapasitas sumber daya aktual partisi yang tersedia untuk semua antrian turunan dapat lebih besar dari nol. Secara teoritis, cukup mengatur item konfigurasi ini ke nilai lebih besar dari 0 untuk antrian root. Namun, jika diatur ke nilai kurang dari 100, kapasitas sumber daya aktual untuk antrian turunan akan lebih rendah dari yang dihitung, sehingga konfigurasi tersebut menjadi tidak bermakna. Jika kapasitas sumber daya default partisi untuk antrian leluhur sebuah antrian diatur ke 0, kapasitas sumber daya aktual yang tersedia bagi antrian dalam partisi tersebut tetap nol.Jika Anda mengatur item konfigurasi
yarn.scheduler.capacity.root.accessible-node-labels.<label>.capacityke nilai lebih besar dari 0 untuk antrian root, total kapasitas sumber daya untuk antrian anak yang sesuai dalam partisi yang sama harus mencapai 100. Aturan yang sama berlaku untuk item konfigurasiyarn.scheduler.capacity.<queue-path>.capacity.Contoh kode berikut menunjukkan cara mengonfigurasi partisi dan kapasitas sumber daya:
<configuration> <!-- Tambahkan item konfigurasi terkait label simpul ke file capacity-scheduler.xml. --> <property> <!-- Wajib. Tentukan bahwa partisi DEMO dapat diakses oleh antrian default. --> <name>yarn.scheduler.capacity.root.default.accessible-node-labels</name> <value>DEMO</value> </property> <property> <!-- Wajib. Tentukan kapasitas sumber daya yang tersedia untuk semua antrian leluhur dari antrian default dalam partisi DEMO. --> <name>yarn.scheduler.capacity.root.accessible-node-labels.DEMO.capacity</name> <value>100</value> </property> <property> <!-- Wajib. Tentukan kapasitas sumber daya yang tersedia untuk antrian default dalam partisi DEMO. --> <name>yarn.scheduler.capacity.root.default.accessible-node-labels.DEMO.capacity</name> <value>100</value> </property> <property> <!-- Opsional. Tentukan kapasitas sumber daya maksimum yang tersedia untuk antrian default dalam partisi DEMO. Nilai default adalah 100. --> <name>yarn.scheduler.capacity.root.default.accessible-node-labels.DEMO.maximum-capacity</name> <value>100</value> </property> <property> <!-- Opsional. Tentukan partisi default tempat kontainer dalam pekerjaan yang dikirimkan oleh antrian default dikirimkan. Nilai default adalah string kosong, yang menunjukkan partisi DEFAULT. --> <name>yarn.scheduler.capacity.root.default.default-node-label-expression</name> <value>DEMO</value> </property> <configuration>
Simpan file capacity-scheduler.xml. Di tab Status pada halaman layanan YARN, perbarui konfigurasi antrian penjadwal secara real-time menggunakan fitur refreshQueues ResourceManager. Setelah pembaruan selesai, periksa hasil konfigurasi di antarmuka web ResourceManager.
Selain fitur partisi default untuk antrian penjadwal, mesin komputasi (kecuali Tez) juga mendukung label simpul. Tabel berikut menjelaskan parameter yang diperlukan untuk mesin yang berbeda.
Mesin | Item konfigurasi | Deskripsi |
MapReduce | mapreduce.job.node-label-expression | Partisi default yang berisi simpul yang digunakan oleh semua kontainer pekerjaan. |
mapreduce.job.am.node-label-expression | Partisi yang berisi simpul yang digunakan oleh ApplicationMaster. | |
mapreduce.map.node-label-expression | Partisi yang berisi simpul yang digunakan oleh tugas map. | |
mapreduce.reduce.node-label-expression | Partisi yang berisi simpul yang digunakan oleh tugas reduce. | |
Spark | spark.yarn.am.nodeLabelExpression | Partisi yang berisi simpul yang digunakan oleh ApplicationMaster. |
spark.yarn.executor.nodeLabelExpression | Partisi yang berisi simpul yang digunakan oleh Executor. | |
Flink | yarn.application.node-label | Partisi default yang berisi simpul yang digunakan oleh semua kontainer pekerjaan. |
yarn.taskmanager.node-label | Partisi yang berisi simpul yang digunakan oleh Pengelola Tugas. Parameter ini didukung hanya jika Apache Flink 1.15.0 atau lebih baru digunakan dalam kluster EMR V3.44.0, EMR V5.10.0, atau versi minor setelah EMR V3.44.0 atau EMR V5.10.0. |
Pertanyaan Umum
Mengapa data label simpul yang dikonfigurasi dalam mode terpusat dalam kluster ketersediaan tinggi disimpan dalam sistem file terdistribusi?
Dalam kluster ketersediaan tinggi, ResourceManager diterapkan pada beberapa simpul. Secara default, open source Hadoop menyimpan data label simpul di jalur file:///tmp/hadoop-yarn-${user}/node-labels/. Jika terjadi failover simpul, simpul baru dalam status Aktif tidak dapat membaca data label simpul dari jalur lokal. Anda harus mengatur parameter yarn.node-labels.fs-store.root-dir ke direktori penyimpanan sistem file terdistribusi, seperti /tmp/node-labels atau ${fs.defaultFS}/tmp/node-labels. Sistem file default EMR adalah HDFS. Untuk informasi lebih lanjut, lihat bagian Gunakan label simpul dalam topik ini.
Sebelum Anda mengatur parameter yarn.node-labels.fs-store.root-dir ke direktori penyimpanan sistem file terdistribusi, pastikan sistem file bekerja seperti yang diharapkan dan pengguna hadoop dapat membaca data dari dan menulis data ke sistem file. Jika tidak, ResourceManager gagal dimulai.
Mengapa port NodeManager tidak ditentukan ketika saya memetakan simpul ke partisi?
Hanya satu NodeManager yang berada pada sebuah simpul dalam kluster EMR. Oleh karena itu, Anda tidak perlu menentukan port NodeManager. Jika Anda menentukan port NodeManager yang tidak valid atau port acak, simpul yang ditentukan tidak dapat dipetakan ke partisi yang ditentukan ketika Anda menjalankan perintah yarn rmadmin -replaceLabelsOnNode. Anda dapat menjalankan perintah yarn node -list -showDetails untuk memeriksa partisi tempat sebuah simpul termasuk.
Apa saja skenario penggunaan label simpul?
Dalam banyak kasus, fitur label simpul tidak diaktifkan untuk kluster EMR. Hal ini karena statistik yang dikumpulkan oleh layanan YARN Hadoop open source hanya mencakup status partisi DEFAULT, bukan pemetaan partisi simpul. Ini meningkatkan kompleksitas O&M. Selain itu, penjadwalan partisi mungkin tidak sepenuhnya memanfaatkan sumber daya dalam sebuah kluster, menyebabkan pemborosan sumber daya. Label simpul cocok untuk berbagai skenario. Misalnya, Anda dapat memisahkan pekerjaan batch dari pekerjaan streaming untuk memungkinkan pekerjaan tersebut berjalan di partisi yang berbeda secara bersamaan dalam sebuah kluster. Setelah pemetaan partisi dilakukan, Anda dapat menjalankan pekerjaan penting pada simpul yang tidak ditambahkan secara elastis. Jika spesifikasi simpul bervariasi dalam sebuah kluster, Anda dapat menjalankan pekerjaan pada simpul dalam partisi yang berbeda untuk mencegah ketidakseimbangan sumber daya.