Tüm Ürünler
Search
Belge Merkezi

E-MapReduce:YARN schedulers

Son Güncelleme:Oct 04, 2026

Birden fazla ekip bir Hadoop kümesini paylaştığında kaynak çekişmesi, iş performansının öngörülemez hale gelmesine ve maliyet dağılımının zorlaşmasına neden olur. YARN planlayıcılar; kiracı başına kaynak garantilerini uygulayarak, çoklu kiracı adalet ilkelerini kullanarak ve yoğun noktaları önlemek için düğüm kullanımını optimize ederek bu sorunu çözer.

E-MapReduce (EMR) YARN için Capacity Scheduler önerilir. Bu belgede Capacity Scheduler'ın çalışma mantığı ve yapılandırma adımları açıklanmaktadır. Diğer planlayıcı türleri hakkında bilgi için Apache Hadoop YARN belgelerine bakın.

Planlayıcı seçimi

Planlayıcı Varsayılan olduğu ortam Çoklu kiracı desteği Düğüm etiketleri / nitelikleri / yerleştirme kısıtlamaları Ne zaman kullanılır
FIFO Planlayıcı — Yok Yok Basit, tek kiracılı senaryolar. Üretim ortamlarında nadiren kullanılır.
Fair Planlayıcı CDH (Cloudera Distributed Hadoop) Var Yok Eski CDH kümeleri. Yeni dağıtımlar için önerilmez.
Capacity Scheduler Apache Hadoop, HDP, CDP Var Var Performans ve kaynak izolasyonu gerektiren çoklu kiracılı üretim kümeleri. EMR YARN için önerilir.

Capacity Scheduler; genel planlama, düğüm etiketleri, düğüm nitelikleri ve yerleştirme kısıtlamaları dahil olmak üzere çoklu kiracı yönetimi ve kaynak planlama yeteneklerinin tamamını sunar. Bu belgenin geri kalanında Capacity Scheduler ayrıntılı olarak incelenmektedir.

Capacity Scheduler nasıl çalışır?

Planlama modları

Capacity Scheduler'ın MainScheduler bileşeni üç tetikleme modunu destekler:

Mod Çalışma biçimi En uygun olduğu durum
Düğüm kalp atışı odaklı Bir düğüm kalp atışı gönderdiğinde MainScheduler tetiklenir. Planlama düğüm düzeyindedir ve kalp atışı aralıklarına bağlıdır; bu durum, birçok düğümde yetersiz kaynak olduğunda düşük planlama verimliliğine yol açabilir. Planlama performansı ve özellikleri açısından düşük beklentisi olan kümeler.
Asenkron planlama Asenkron bir iş parçacığı, planlama yapmak için düğüm listesinden rastgele bir düğüm seçer. Bu yaklaşım, genel durumu korumaya gerek kalmadan aktarım hızını artırır. Yüksek performans gereksinimi olan ancak özellik açısından düşük beklentisi bulunan kümeler.
Genel planlama Genel bir iş parçacığı, çoklu kiracı adaleti ve önceliğe göre uygulamaları seçer; ardından kaynak boyutu, yerleştirme kısıtlamaları ve küme genelindeki kaynak dağılımına göre düğümleri belirler. Bu yöntem en uygun planlama kararlarını üretir. Hem planlama performansı hem de özellikleri açısından yüksek beklentisi olan kümeler.
Genel planlama, kendi ayarlarına ek olarak tüm asenkron planlama yapılandırmalarını gerektirir. Ayrıntılar için Genel planlama bölümüne bakın.

Mimari (genel planlama)

Aşağıdaki şekil, YARN 3.2 veya sonraki sürümlere dayalı genel planlama mimarisini göstermektedir.2

MainScheduler, asenkron çok iş parçacıklı bir çerçeve olarak çalışır:

  • Tahsis iş parçacıkları, en yüksek öncelikli kaynak isteğini belirler; kaynak boyutu ve yerleştirme kısıtlamalarına göre aday düğümleri seçer, tahsis önerileri oluşturur ve bunları bir ara kuyruğa yerleştirir.

  • Gönderim iş parçacığı, tahsis önerilerini tüketir; yerleştirme kısıtlamalarını ve uygulama/düğüm gereksinimlerini yeniden denetler, ardından her öneriyi ya onaylar ya da reddeder ve planlayıcı durumunu günceller.

ReScheduler, dinamik bir kaynak izleme çerçevesi olarak periyodik çalışır. Kuyruklar arası preemptasyon, kuyruk içi preemptasyon ve ayrılmış kaynak preemptasyonu ilkelerini uygular.

Node Sorting Manager ve Placement Constraint Manager, MainScheduler için genel planlama eklentileridir. Yük dengeleme ve karmaşık yerleştirme kısıtlama yönetimini gerçekleştirirler.

Konteyner tahsis süreci

Aşağıdaki şekil, Capacity Scheduler'ın genel planlama sürecini göstermektedir.3

MainScheduler, konteynerleri altı adımda tahsis eder:

  1. Bölümleri (düğüm etiketlerini) seçin. Bir kümede bir veya daha fazla bölüm bulunabilir. MainScheduler, konteynerleri sırayla bölümlere tahsis eder.

  2. Yaprak kuyrukları seçin. Kök kuyruktan başlayarak aşağıya doğru ilerlerken, her düzeydeki alt kuyruklar garanti edilen kaynak yüzdelerine göre artan sırada ziyaret edilir. Daha düşük kullanıma sahip kuyruklar (yukarıdaki şekilde yeşil gösterilenler), daha yüksek kullanıma sahip olanlardan (kırmızı gösterilenler) önce kaynak alır.

  3. Uygulamaları seçin. Bir kuyruk içinde MainScheduler, kuyruğun sıralama ilkesine göre uygulamaları seçer:

    • Adalet ilkesi: Tahsis edilen bellek kaynaklarına göre artan sıra

    • FIFO ilkesi: Önceliğe göre azalan, ardından uygulama kimliğine göre artan sıra

  4. İstekleri seçin. MainScheduler, seçilen uygulama içindeki istekleri önceliğe göre belirler.

  5. Sıralanmış aday düğümleri seçin. MainScheduler, isteğin kaynak gereksinimlerini ve yerleştirme kısıtlamalarını karşılayan adayları bulmak için sıralanmış tüm düğümlerde arama yapar.

  6. Bir konteyner tahsis edin. Her aday düğüm için MainScheduler, kuyruğun ve düğümün tahsis edilmiş, kullanılan ve onaylanmamış kaynaklarını kontrol eder. Kontrol başarılı olursa bir tahsis önerisi oluşturur ve bunu öneri kuyruğuna yerleştirir.

Tahsis işleminden sonra gönderim iş parçacığı, her öneriyi uygulama, düğüm ve yerleştirme kısıtlaması gereksinimlerine göre doğrular. Doğrulama başarısız olan öneriler iptal edilir; onaylanan öneriler geçerli hale gelir ve uygulama ile düğüm için kaynak muhasebesini günceller.

Preemptasyon

ReScheduler, küme kaynaklarını izler; toplam kullanılabilir kaynaklar belirli bir eşiğin altına düştüğünde ve belirli uygulamalar yetersiz kaynağa sahip olduğunda preemptasyonu tetikler.

Preemptasyon türü Tetiklenme koşulu
Kuyruklar arası preemptasyon Bir kuyruğun garanti edilen kaynakları tamamen kullanılmıştır, ancak bu kaynaklara hak sahibi başka bir kuyruk, kümede boş kapasite olmadığı için bunları alamaz. Kuyruk kapasitesi içindeki kaynaklar garantilidir; kapasitenin üzerinde ancak maksimum kapasitenin altındaki kaynaklar paylaşılır.
Kuyruk içi preemptasyon Bir kuyruktaki yüksek öncelikli bir uygulama kaynak ihtiyacı duyarken kuyruğun toplam tahsisi tükenmiştir. ReScheduler, FIFO veya adalet ilkesine göre dengeleme yapar.
Ayrılmış kaynak preemptasyonu Kaynak ayıran bir görev, zaman aşımı gibi bir serbest bırakma koşulunu karşılar. Görev ve ayrılan kaynakları serbest bırakılır.

Temel özellikler

  • Çok düzeyli kuyruk yönetimi: Üst kuyruğun kaynak kotası, tüm alt kuyruklarının toplam kullanımını sınırlar. Tek bir alt kuyruk üst kuyruğun kotasını aşamaz. Bu sayede karmaşık organizasyon yapıları için kontrollü çoklu kiracı izolasyonu sağlanır.

  • Kaynak kotası: Kuyruk başına garanti edilen kapasiteyi ve maksimum kapasiteyi ayarlayın, eşzamanlı uygulama sayısını sınırlayın, ApplicationMaster (AM) kaynak payını kısıtlayın ve kullanıcı başına kaynak oranlarını kontrol edin.

  • Esnek kaynak paylaşımı: Kümede ve üst kuyrukta boş kaynaklar bulunduğunda, alt kuyruklar kardeş kuyruklardan kullanılmayan garanti edilen kaynakları ödünç alabilir. Esnek kapasite = maksimum kuyruk kapasitesi − kuyruk kapasitesi.

  • Erişim kontrol listesi (ACL) tabanlı erişim kontrolü: Kuyruk başına gönderim ve yönetim izinlerini belirli kullanıcılara veya gruplara atayın. Tek bir kullanıcı birden fazla kuyruğu yönetebilir veya birden fazla kullanıcı aynı kuyruğa gönderim erişimini paylaşabilir.

  • Kiracılar arası kuyruk planlaması: Aynı kuyruk düzeyinde, kuyruklar garanti edilen kaynak yüzdelerine göre artan sırada planlanır; böylece daha küçük tahsislere sahip kuyruklara öncelik verilir. Öncelikler yapılandırıldığında kuyruklar iki gruba ayrılır: kapasitesinde veya altında olanlar ve kapasitesinin üzerinde olanlar. Her grup içinde kapasitesinde veya altında olan kuyruklara öncelik verilir.

  • Kiracı içi uygulama planlaması: Bir kuyruk içinde uygulamalar, kuyruğun sıralama ilkesine göre planlanır. FIFO ilkesinde: azalan öncelik, ardından artan gönderim zamanı. Adalet ilkesinde: kullanılan kaynak yüzdesine göre artan sıra, ardından artan gönderim zamanı.

  • Preemptasyon: Küme kaynakları değiştikçe kuyruk ve uygulama kaynak kullanımının dengeli kalmasını sağlar. Üç preemptasyon türü için Preemptasyon bölümüne bakın.

Capacity Scheduler'ı yapılandırın

Genel yapılandırmalar

Aşağıdaki ayarları yarn-site.xml ve capacity-scheduler.xml dosyalarında yapılandırın.

Yapılandırma dosyasıYapılandırma öğesiÖnerilen değerAçıklama
yarn-site.xmlyarn.resourcemanager.scheduler.classBoş bırakınPlanlayıcı sınıfı. Varsayılan: org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacityScheduler.
capacity-scheduler.xmlyarn.scheduler.capacity.maximum-applicationsBoş bırakınKümedeki maksimum eşzamanlı uygulama sayısı. Varsayılan: 10000.
yarn.scheduler.capacity.global-queue-max-applicationBoş bırakınKuyruk başına maksimum eşzamanlı uygulama sayısı. Ayarlanmazsa kuyruk başına limit şu şekilde hesaplanır: Kuyruk kapasitesi / Küme kaynağı × maximum-applications. Bu ayarı yalnızca düşük kapasiteli olup çok sayıda uygulama çalıştırması gereken kuyruklar gibi özel gereksinimleri olan kuyruklar için yapılandırın.
yarn.scheduler.capacity.maximum-am-resource-percent0.25ApplicationMaster (AM) konteynerlerinin kullanabileceği maksimum kuyruk kaynak yüzdesi; bu değer × maksimum kuyruk kapasitesi ile sınırlıdır. Varsayılan: 0,1. Bir kuyruk yüksek AM konteyner oranına sahip çok sayıda küçük uygulama çalıştırıyorsa bu değeri artırın.
yarn.scheduler.capacity.resource-calculatororg.apache.hadoop.yarn.util.resource.DominantResourceCalculatorKuyruklar, düğümler ve uygulamalar için kaynak hesaplayıcısı. Varsayılan (DefaultResourceCalculator) yalnızca belleği dikkate alır. DominantResourceCalculator yapılandırılan tüm kaynak türlerini (bellek, CPU ve diğerleri) dikkate alır ve en çok tüketilen kaynağı birincil kaynak olarak kullanır.
Not

Bu öğede yapılan değişiklikler ResourceManager'in yeniden başlatılmasını (veya yüksek kullanılabilirlik (HA) etkinse birincil/ikincil geçişini) gerektirir. Yenileme işlemi yeterli değildir.

yarn.scheduler.capacity.node-locality-delay-1Düğüm yerellik gevşetmesinden önce atlanacak planlama döngüsü sayısı. Varsayılan: 40. Yerellik gecikmesini devre dışı bırakmak ve planlama performansını artırmak için -1 olarak ayarlayın. Modern ağlar ve depolama sistemleriyle yerel planlama nadiren darboğaz oluşturur.

Düğüm kalp atışı yapılandırmaları

Yapılandırma dosyası Yapılandırma öğesi Önerilen değer Açıklama
capacity-scheduler.xml yarn.scheduler.capacity.per-node-heartbeat.multiple-assignments-enabled false Kalp atışı başına birden fazla konteyner tahsis edilsin mi? Varsayılan: true. Bu özelliği etkinleştirmek yük dengelemeyi etkileyebilir ve yoğun noktalara neden olabilir.
yarn.scheduler.capacity.per-node-heartbeat.maximum-container-assignments Boş bırakın Kalp atışı başına atanabilecek maksimum konteyner sayısı. Varsayılan: 100. Yalnızca multiple-assignments-enabled değeri true olduğunda etkilidir.
yarn.scheduler.capacity.per-node-heartbeat.maximum-offswitch-assignments Boş bırakın Kalp atışı başına atanabilecek maksimum off-switch konteyner sayısı. Yalnızca multiple-assignments-enabled değeri true olduğunda etkilidir.

Asenkron planlama

Yapılandırma dosyası Yapılandırma öğesi Önerilen değer Açıklama
capacity-scheduler.xml yarn.scheduler.capacity.schedule-asynchronously.enable true Asenkron planlama etkinleştirilsin mi? Varsayılan: false. Planlama performansını artırmak için etkinleştirin.
yarn.scheduler.capacity.schedule-asynchronously.maximum-threads 1 veya boş bırakın Asenkron planlama için maksimum iş parçacığı sayısı. Varsayılan: 1. Birden fazla iş parçacığı yinelenen öneriler üretebilir; çoğu durumda tek bir iş parçacığı yeterlidir.
yarn.scheduler.capacity.schedule-asynchronously.maximum-pending-backlogs Boş bırakın Kuyruktaki bekleyen maksimum tahsis önerisi sayısı. Varsayılan: 100. Büyük kümeler için bu değeri artırın.

Genel planlama

Genel planlama, önceki tabloda listelenen tüm asenkron planlama yapılandırmalarını gerektirir.
Yapılandırma dosyasıYapılandırma öğesiÖnerilen değerAçıklama
capacity-scheduler.xmlyarn.scheduler.capacity.multi-node-placement-enabledtrueGenel planlama etkinleştirilsin mi? Varsayılan: false. Hem planlama performansı hem de özellikleri açısından yüksek beklentisi olan kümeler için etkinleştirin.
yarn.scheduler.capacity.multi-node-sorting.policydefaultEtkin genel planlama ilkesinin adı.
yarn.scheduler.capacity.multi-node-sorting.policy.namesdefaultVirgülle ayrılmış genel planlama ilke adları listesi.
yarn.scheduler.capacity.multi-node-sorting.policy.default.classorg.apache.hadoop.yarn.server.resourcemanager.scheduler.placement.ResourceUsageMultiNodeLookupPolicyVarsayılan ilke için uygulama sınıfı. Düğümleri mutlak tahsis edilen kaynaklara göre artan sırada sıralar.
yarn.scheduler.capacity.multi-node-sorting.policy.default.sorting-interval.ms0 (küçük kümeler) / 1000 (1.000'den fazla düğümlü kümeler)Düğüm sıralaması için önbellek yenileme aralığı. Varsayılan: 1000 ms. Senkron sıralama (önbellek yok) için 0 olarak ayarlayın. Büyük kümeler için düğüm önbelleğe almayı etkinleştirmek ve performansı artırmak amacıyla 1000 olarak ayarlayın.
Not

Düğüm önbelleğe alma etkinleştirildiğinde konteynerler en üst sıradaki düğümlerde yoğunlaşabilir. Bu özelliği üretim ortamında etkinleştirmeden önce etkisini test edin.

Düğüm bölümü yapılandırmaları

Düğüm bölümü (düğüm etiketi) yapılandırmaları için Düğüm etiketleri konusuna bakın.

Kuyruk yapılandırmaları

Temel kuyruk yapılandırmaları

Temel kuyruk yapılandırmaları kuyruk hiyerarşisini, garanti edilen kapasiteyi ve maksimum kapasiteyi tanımlar. Aşağıdaki örnek, bir kuruluşun departmanları arasında paylaşılan dört alt kuyruğa sahip bir kök kuyruğu göstermektedir.

image

Örnek kuyruk yapısı:

Kuyruk Garanti edilen kaynaklar Maksimum kaynaklar Alt kuyruklar
root %100 %100 dev, test, support, default
root.dev %50 %100 training, services
root.dev.training dev'in %40'ı dev'in %100'ü —
root.dev.services dev'in %60'ı dev'in %100'ü —
root.test %30 %50 —
root.support %10 %30 —
root.default %10 %100 —

Aşağıdaki capacity-scheduler.xml örneği bu yapıyı yapılandırır. Kuruluşunuzun kuyruk düzenine uyacak şekilde kopyalayın ve ayarlayın.

<configuration>
  <!-- Root-level child queues -->
  <property>
    <name>yarn.scheduler.capacity.root.queues</name>
    <value>dev,test,support,default</value>
  </property>

  <!-- dev queue: 50% guaranteed, 100% max -->
  <property>
    <name>yarn.scheduler.capacity.root.dev.capacity</name>
    <value>50</value>
  </property>
  <property>
    <name>yarn.scheduler.capacity.root.dev.maximum-capacity</name>
    <value>100</value>
  </property>
  <property>
    <name>yarn.scheduler.capacity.root.dev.queues</name>
    <value>training,services</value>
  </property>

  <!-- dev.training: 40% of dev guaranteed, 100% of dev max -->
  <property>
    <name>yarn.scheduler.capacity.root.dev.training.capacity</name>
    <value>40</value>
  </property>
  <property>
    <name>yarn.scheduler.capacity.root.dev.training.maximum-capacity</name>
    <value>100</value>
  </property>

  <!-- dev.services: 60% of dev guaranteed, 100% of dev max -->
  <property>
    <name>yarn.scheduler.capacity.root.dev.services.capacity</name>
    <value>60</value>
  </property>
  <property>
    <name>yarn.scheduler.capacity.root.dev.services.maximum-capacity</name>
    <value>100</value>
  </property>

  <!-- test queue: 30% guaranteed, 50% max -->
  <property>
    <name>yarn.scheduler.capacity.root.test.capacity</name>
    <value>30</value>
  </property>
  <property>
    <name>yarn.scheduler.capacity.root.test.maximum-capacity</name>
    <value>50</value>
  </property>

  <!-- support queue: 10% guaranteed, 30% max -->
  <property>
    <name>yarn.scheduler.capacity.root.support.capacity</name>
    <value>10</value>
  </property>
  <property>
    <name>yarn.scheduler.capacity.root.support.maximum-capacity</name>
    <value>30</value>
  </property>

  <!-- default queue: 10% guaranteed, 100% max -->
  <property>
    <name>yarn.scheduler.capacity.root.default.capacity</name>
    <value>10</value>
  </property>
  <property>
    <name>yarn.scheduler.capacity.root.default.maximum-capacity</name>
    <value>100</value>
  </property>
</configuration>

YARN ResourceManager'in Application Queues sayfasında kuyruk yapılandırmasının etkili olduğunu doğrulayabilirsiniz. Kuyruk hiyerarşi ağacı, root altında default, test, support, dev kuyruklarını ve dev altında training ile services alt kuyruklarını gösterir. Çalışma durumu ayrıntılarını görüntülemek için dev.services kuyruğunu genişletin:

  • Queue State: RUNNING

  • Effective Capacity: memory:7864, vCores:4 (%60,0)

  • Effective Max Capacity: memory:26214, vCores:16 (%100,0)

  • Absolute Configured Capacity: %30,0

  • Max Applications: 3000

  • Ordering Policy: FifoOrderingPolicy

  • Preemption: disabled

Aşağıdaki tabloda bu yapı için capacity-scheduler.xml parametreleri açıklanmaktadır.

Yapılandırma dosyası Yapılandırma öğesi Örnek değer Açıklama
capacity-scheduler.xml yarn.scheduler.capacity.root.queues dev,test,support,default Kök kuyruğun alt kuyrukları. Birden fazla kuyruğu virgülle ayırın.
yarn.scheduler.capacity.root.dev.capacity 50 Toplam küme kaynaklarına göre dev kuyruğu için garanti edilen kaynak yüzdesi.
yarn.scheduler.capacity.root.dev.maximum-capacity 100 Toplam küme kaynaklarına göre dev kuyruğu için maksimum kaynak yüzdesi.
yarn.scheduler.capacity.root.dev.queues training,services dev kuyruğunun alt kuyrukları.
yarn.scheduler.capacity.root.dev.training.capacity 40 dev kuyruğunun garanti edilen kaynaklarına göre training için garanti edilen kaynak yüzdesi.
yarn.scheduler.capacity.root.dev.training.maximum-capacity 100 dev kuyruğunun maksimum kaynaklarına göre training için maksimum kaynak yüzdesi.
yarn.scheduler.capacity.root.dev.services.capacity 60 dev kuyruğunun garanti edilen kaynaklarına göre services için garanti edilen kaynak yüzdesi.
yarn.scheduler.capacity.root.dev.services.maximum-capacity 100 dev kuyruğunun maksimum kaynaklarına göre services için maksimum kaynak yüzdesi.
yarn.scheduler.capacity.root.test.capacity 30 Toplam küme kaynaklarına göre test için garanti edilen kaynak yüzdesi.
yarn.scheduler.capacity.root.test.maximum-capacity 50 Toplam küme kaynaklarına göre test için maksimum kaynak yüzdesi.
yarn.scheduler.capacity.root.support.capacity 10 Toplam küme kaynaklarına göre support için garanti edilen kaynak yüzdesi.
yarn.scheduler.capacity.root.support.maximum-capacity 30 Toplam küme kaynaklarına göre support için maksimum kaynak yüzdesi.
yarn.scheduler.capacity.root.default.capacity 10 Toplam küme kaynaklarına göre default için garanti edilen kaynak yüzdesi.
yarn.scheduler.capacity.root.default.maximum-capacity 100 Toplam küme kaynaklarına göre default için maksimum kaynak yüzdesi.

Gelişmiş kuyruk yapılandırmaları

Yapılandırma dosyası Yapılandırma öğesi Önerilen değer Açıklama
capacity-scheduler.xml yarn.scheduler.capacity.<queue_path>.ordering-policy fair Kuyruk içindeki uygulama sıralama ilkesi. fifo (varsayılan): azalan öncelik, ardından artan gönderim zamanı. fair: kullanılan kaynak yüzdesine göre artan sıra, ardından artan gönderim zamanı. Çoğu üretim kuyruğu için fair olarak ayarlayın.
yarn.scheduler.capacity.<queue_path>.ordering-policy.fair.enable-size-based-weight Boş bırakın Ağırlık tabanlı adaletli planlama kullanılsın mı? Varsayılan: false (kullanılan kaynaklara göre planlama). true olduğunda planlama Kullanılan kaynaklar / Gerekli kaynaklar temelinde yapılır; bu durum, kaynak çekişmesi sırasında büyük uygulamaların yıldırılmasını önlemeye yardımcı olur.
yarn.scheduler.capacity.<queue_path>.state Boş bırakın Kuyruk durumu. Varsayılan: RUNNING. Yalnızca bir kuyruğu silerken STOPPED olarak ayarlayın. Kuyruk, içindeki tüm uygulamalar tamamlandıktan sonra silinir.
yarn.scheduler.capacity.<queue_path>.maximum-am-resource-percent Boş bırakın Kuyruk başına AM kaynak sınırı. Varsayılan: yarn.scheduler.capacity.maximum-am-resource-percent değerinden devralır.
yarn.scheduler.capacity.<queue_path>.user-limit-factor Boş bırakın Tek bir kullanıcı için üst sınır çarpanı. Bir kullanıcının kullanabileceği maksimum kaynak: min(maksimum kuyruk kaynakları, garanti edilen kuyruk kaynakları × userLimitFactor). Varsayılan: 1.0.
yarn.scheduler.capacity.<queue_path>.minimum-user-limit-percent Boş bırakın Tek bir kullanıcının kullanabileceği garanti edilen kaynakların minimum yüzdesi. Hesaplama: max(garanti edilen kaynaklar / kullanıcı sayısı, garanti edilen kaynaklar × min(userLimitFactor) / 100). Varsayılan: 100.
yarn.scheduler.capacity.<queue_path>.maximum-applications Boş bırakın Bu kuyruktaki maksimum eşzamanlı uygulama sayısı. Varsayılan: garanti edilen kaynak yüzdesi × yarn.scheduler.capacity.maximum-applications.
yarn.scheduler.capacity.<queue_path>.acl_submit_applications Boş bırakın Bu kuyruk için gönderim ACL'si. Ayarlanmazsa üst kuyruktan devralır.
yarn.scheduler.capacity.<queue_path>.acl_administer_queue Boş bırakın Bu kuyruk için yönetim ACL'si. Ayarlanmazsa üst kuyruktan devralır.

ACL yapılandırmaları

ACL varsayılan olarak devre dışıdır. Kuruluşunuz kuyruk gönderimi ve yönetimi üzerinde erişim kontrolü gerektirdiğinde yalnızca bu durumda etkinleştirin.

Yapılandırma dosyası Yapılandırma öğesi Önerilen değer Açıklama
yarn-site.xml yarn.acl.enabled Boş bırakın ACL etkinleştirilsin mi? Varsayılan: false.
capacity-scheduler.xml yarn.scheduler.capacity.<queue_path>.acl_submit_applications Boş bırakın Gönderim ACL'si. Ayarlanmazsa üst kuyruktan devralır. Varsayılan olarak kök kuyruk tüm kullanıcıların uygulama göndermesine izin verir.
yarn.scheduler.capacity.<queue_path>.acl_administer_queue Boş bırakın Yönetim ACL'si. Ayarlanmazsa üst kuyruktan devralır. Varsayılan olarak kök kuyruk tüm kullanıcıların kuyrukları yönetmesine izin verir.
Önemli

Üst kuyruğun ACL'si tüm alt kuyruklarına uygulanır. Kök kuyruk tüm kullanıcılara izin veriyorsa (varsayılan), alt kuyruk ACL kısıtlamaları etkili olmaz. Alt kuyruk ACL'sini zorlamak için önce kök kuyruğu aşağıdaki ayarlarla kısıtlayın:

  • yarn.scheduler.capacity.root.acl_submit_applications=<space>

  • yarn.scheduler.capacity.root.acl_administer_queue=<space>

Bir kullanıcıya veya gruba bir kuyrukta hem gönderim hem de yönetim izinleri vermek için o kuyruk için acl_submit_applications ve acl_administer_queue değerlerini yapılandırın.

Preemptasyon yapılandırmaları

Preemptasyon, kiracılar arasında adil kaynak dağılımı sağlar ve uygulama önceliklerine saygı gösterir. Sıkı planlama gereksinimleri olan kümeler için etkinleştirin. Preemptasyon, YARN V2.8.0 veya sonraki bir sürümü gerektirir.

Yapılandırma dosyası Yapılandırma öğesi Önerilen değer Açıklama
yarn-site.xml yarn.resourcemanager.scheduler.monitor.enable true Preemptasyonu etkinleştirin.
capacity-scheduler.xml yarn.resourcemanager.monitor.capacity.preemption.intra-queue-preemption.enabled true Kuyruk içi preemptasyonu etkinleştirin. Kuyruklararası preemptasyon varsayılan olarak etkindir ve devre dışı bırakılamaz.
yarn.resourcemanager.monitor.capacity.preemption.intra-queue-preemption.preemption-order-policy priority_first Kuyruk içi preemptasyon sırası ilkesi. Varsayılan: userlimit_first.
yarn.scheduler.capacity.<queue-path>.disable_preemption true Bu kuyruğun preemptasyona karşı korunup korunmayacağı. Ayarlanmazsa üstten devralır. Kök kuyrukta true olarak ayarlamak tüm kuyrukları korur. Kök düzeyinde varsayılan: false (kuyruklar preemptasyona uğrayabilir).
yarn.scheduler.capacity.<queue-path>.intra-queue-preemption.disable_preemption true Bu kuyruk için kuyruk içi preemptasyonun devre dışı bırakılıp bırakılmayacağı. Ayarlanmazsa üstten devralır.

Kuyruk yapılandırmalarını RESTful API ile yönetin

YARN V3.2.0'dan itibaren RESTful API'yi kullanarak artımlı yapılandırma güncellemeleri uygulayabilir ve capacity-scheduler.xml dosyasındaki tüm şu anda etkin olan ayarları görüntüleyebilirsiniz. Daha eski sürümler yalnızca RefreshQueues işlemi aracılığıyla tam güncellemeleri destekler ve etkin yapılandırmaları inceleme imkanı sunmaz.

RESTful API kuyruk yönetimini etkinleştirmek için yarn-site.xml dosyasına aşağıdaki ayarları ekleyin:

Yapılandırma öğesi Önerilen değer Açıklama
yarn.scheduler.configuration.store.class fs Planlayıcı yapılandırmaları için depolama türü.
yarn.scheduler.configuration.max.version 100 Dosya sisteminde saklanan maksimum yapılandırma sürümü sayısı. Daha eski sürümler otomatik olarak silinir.
yarn.scheduler.configuration.fs.path /yarn/<cluster-name>/scheduler/conf capacity-scheduler.xml dosyasının saklandığı yol. Yol yoksa otomatik olarak oluşturulur. <cluster-name> yerine gerçek küme adınızı yazın. YARN hizmeti dağıtılan birden fazla küme aynı dağıtılmış depolamayı kullanabilir.

Etkin yapılandırmaları görüntüleyin:

  • RESTful API: http://<rm-address>/ws/v1/cluster/scheduler-conf

  • HDFS: ${yarn.scheduler.configuration.fs.path}/capacity-scheduler.xml.<timestamp> — en büyük zaman damgasına sahip dosya en son sürümdür.

Yapılandırmaları artımlı olarak güncelleyin:

Aşağıdaki örnek, yarn.scheduler.capacity.maximum-am-resource-percent değerini 0.2 olarak değiştirir ve yarn.scheduler.capacity.xxx parametresini siler. Bir parametreyi silmek için value alanını belirtmeyin.

curl -X PUT -H "Content-type: application/json" 'http://<rm-address>/ws/v1/cluster/scheduler-conf' -d '
{
  "global-updates": [
    {
      "entry": [{
        "key": "yarn.scheduler.capacity.maximum-am-resource-percent",
        "value": "0.2"
      },{
        "key": "yarn.scheduler.capacity.xxx"
      }]
    }
  ]
}'

Konteyner başına kaynak sınırları

Tek bir konteyner için maksimum kaynaklar aşağıdaki ayarlarla belirlenir. Bir konteyner isteği limiti aşarsa planlayıcı InvalidResourceRequestException: Invalid resource request... hatasını günlüğe kaydeder.

Yapılandırma dosyası Yapılandırma öğesi Açıklama Varsayılan
yarn-site.xml yarn.scheduler.maximum-allocation-mb Küme düzeyinde konteyner başına maksimum bellek. Birim: MiB. En büyük belleğe sahip düğüm grubunun yarn.nodemanager.resource.memory-mb değeri. Küme oluşturulurken ayarlanır.
yarn.scheduler.maximum-allocation-vcores Küme düzeyinde konteyner başına maksimum CPU. Birim: vCore. 32
capacity-scheduler.xml yarn.scheduler.capacity.<queue-path>.maximum-allocation-mb Kuyruk düzeyinde konteyner başına maksimum bellek. Yalnızca bu kuyruk için küme düzeyindeki ayarı geçersiz kılar. Boş bırakın (küme düzeyindeki ayarı devralır)
yarn.scheduler.capacity.<queue-path>.maximum-allocation-vcores Kuyruk düzeyinde konteyner başına maksimum CPU. Yalnızca bu kuyruk için küme düzeyindeki ayarı geçersiz kılar. Boş bırakın (küme düzeyindeki ayarı devralır)