Tüm Ürünler
Search
Belge Merkezi

E-MapReduce:Düğüm etiketlerini kullanın

Son Güncelleme:Oct 05, 2026

Bu konu, YARN düğüm etiketlerini, kullanım alanlarını ve sık karşılaşılan sorunları açıklar.

Arka plan

YARN düğüm etiketleri, YARN NodeManager düğümlerini bölümlere ayırır. Bir düğüm yalnızca tek bir düğüm etiketine atanabildiğinden, düğüm etiketlerini kullanarak bir YARN kümesini birbirinden ayrı düğüm kümelerine bölebilirsiniz. Varsayılan olarak, düğümler DEFAULT bölümüne (partition="", boş bir dize) aittir.

Bölümler iki türden biri olarak yapılandırılabilir:

  • özel bölüm: Yalnızca bu bölümü talep eden konteynerler ilgili düğümlerde çalıştırılabilir.

  • özel olmayan bölüm: Bu bölümü, DEFAULT bölümünü veya herhangi bir bölüm belirtmeyen konteynerler, boş kaynak varsa ilgili düğümlerde çalıştırılabilir.

Bölüm tabanlı zamanlamayı düğüm etiketleriyle destekleyen tek zamanlayıcı Capacity Scheduler'dır. Zamanlayıcıyı yapılandırarak veya bir hesaplama motorunun node-label-expression parametresini kullanarak bir kuyruğun konteynerlerini erişilebilir bölümlere atayabilirsiniz.

Düğüm etiketleri hakkında daha fazla bilgi için bkz. YARN Node Labels.

Sınırlamalar

  • Bu konu, yarn-site.xml dosyanızdaki yarn.node-labels.configuration-type parametresi centralized olarak ayarlandığı sürece EMR-5.11.1 ve EMR-3.45.1 öncesi EMR sürümleri için geçerlidir.

  • EMR 5.11.1 ve sonraki sürümleri ile 3.45.1 ve sonraki sürümleri, EMR konsolunda YARN bölümlerinin yönetilmesini destekler. Daha fazla bilgi için bkz. Manage YARN partitions in the EMR console.

Yordam

Konsolda düğüm etiketlerini etkinleştirin

EMR konsolunda YARN hizmeti yapılandırma sayfasına gidin. yarn-site.xml sekmesinde aşağıdaki özellikleri ekleyin. Ardından, yapılandırmayı kaydedin ve değişikliklerin uygulanması için ResourceManager'ı yeniden başlatın.


Anahtar


Değer


Açıklama


yarn.node-labels.enabled


true


Düğüm etiketleri özelliğini etkinleştirir.


yarn.node-labels.fs-store.root-dir


/tmp/node-labels


centralized yapılandırma modunda, bu özellik düğüm etiketi bilgilerinin depolandığı yolu belirtir. Bu yolu özelleştirebilirsiniz.

Not
  • Bu konu, düğüm etiketi eşlemesinin çalışma ilkelerini açıklamak amacıyla centralized modunu ele almaktadır. EMR 5.11.1 ve sonraki sürümleri ile 3.45.1 ve sonraki sürümleri varsayılan olarak yarn.node-labels.configuration-type=distributed kullanır. Bu sürümlerde, bu konuda anlatılan manuel komutları kullanmadan EMR konsolunda YARN bölümlerini yönetebilirsiniz. Daha fazla bilgi için bkz. Manage YARN partitions in the EMR console. Diğer gereksinimler için resmi Hadoop topluluğu belgelerine bakın.

  • yarn.node-labels.fs-store.root-dir özelliğini bir şema içermeyen bir yola (tam URL yerine) ayarlarsanız, YARN fs.defaultFS tarafından belirtilen varsayılan dosya sistemini kullanır. Yapılandırma bu durumda ${fs.defaultFS}/tmp/node-labels değerine eşdeğer olur. EMR'de varsayılan dosya sistemi genellikle HDFS'dir.

Komutlarla düğüm etiketleri ekleyin ve düğümleri eşleyin

Ölçeklendirme sırasında esnek düğüm grubundaki NodeManager düğümlerine bölümlerin otomatik olarak atanmasını sağlamak için, bölümleri oluşturduktan sonra ilgili düğüm grubunun önyükleme betiğine replaceLabelsOnNode komutunu ekleyin. Betik, düğüm bileşenleri başladıktan sonra çalışır.

Örnek komutlar:

# Run commands as the default YARN administrator: hadoop
sudo su - hadoop
# Add partitions
yarn rmadmin -addToClusterNodeLabels "DEMO"
yarn rmadmin -addToClusterNodeLabels "CORE"
# List the YARN nodes
yarn node -list
# Map specific nodes to a partition
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"

Komutlar başarılı olduktan sonra, sonuçları ResourceManager web arayüzünde doğrulayın.

  • ResourceManager Nodes sayfasında, iki core düğümünün (core-1-1 ve core-1-2) Node Labels sütunu DEMO değerini gösterir ve Node State RUNNING durumundadır. Bu durum, düğüm-etiket eşlemesinin aktif olduğunu gösterir.

  • Node Labels sayfasındaki tabloda, eklenen üç düğüm etiketi görüntülenir: <DEFAULT_PARTITION>, CORE ve DEMO. Bunların Label Type değeri Exclusive Partition olarak ayarlanmıştır.

Kuyruk bölümlerini yapılandırın

Capacity Scheduler'ı kullanmak için, yarn-site.xml dosyasındaki yarn.resourcemanager.scheduler.class özelliğinin org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacityScheduler olarak ayarlandığından emin olun.

capacity-scheduler.xml dosyasında, bir kuyruğun erişilebilir bölümlerini ve kapasitesini yapılandırmak için aşağıdaki özellikleri kullanın. <queue-path> ifadesini kuyruk yoluyla, <label> ifadesini ise bölüm adıyla değiştirin. DEFAULT bölümü için normal capacity veya maximum-capacity özelliklerini kullanabilirsiniz.

Parametre

Değer

Açıklama

yarn.scheduler.capacity.<queue-path>.accessible-node-labels

Virgülle ayrılmış bölüm listesi.

Kuyruk için erişilebilir bölümlerin listesini belirtir.

yarn.scheduler.capacity.<queue-path>.accessible-node-labels.<label>.capacity

Değer kuralları için bkz. yarn.scheduler.capacity.<queue-path>.capacity.

Belirtilen erişilebilir bölümde kuyruk için kaynak kapasitesini belirtir.

Önemli

Etkili olması için tüm üst kuyrukların kapasitesini de yapılandırmanız gerekir.

yarn.scheduler.capacity.<queue-path>.accessible-node-labels.<label>.maximum-capacity

Değer kuralları için bkz. yarn.scheduler.capacity.<queue-path>.maximum-capacity. Varsayılan değer 100'dür.

Belirtilen erişilebilir bölümde kuyruğun kullanabileceği maksimum kaynak kapasitesini belirtir.

yarn.scheduler.capacity.<queue-path>.default-node-label-expression

Bir bölüm adı. Varsayılan değer, DEFAULT bölümünü temsil eden boş bir dizedir.

Bu kuyruğa gönderilen ve bölüm belirtilmemiş işlerdeki konteyner istekleri için varsayılan bölümü belirtir.

  • Belirtilen bir kuyruğun gerçek kaynak kapasitesinin 0'dan büyük olması için, aynı bölümün kapasitesini tüm üst kuyruklarda da yapılandırmanız gerekir. Bunun nedeni, yarn.scheduler.capacity.<queue-path>.accessible-node-labels.<label>.capacity parametresinin varsayılan değerinin 0 olmasıdır. Bu nedenle, alt kuyrukların bölüm üzerinde sıfırdan farklı bir kapasiteye sahip olabilmesi için yarn.scheduler.capacity.root.accessible-node-labels.<label>.capacity=100 şeklinde bir yapılandırma yapmalısınız. (Teorik olarak 0'dan büyük herhangi bir değer yeterlidir, ancak 100'den küçük bir değer yapılandırmak, alt kuyruklar için hesaplanan gerçek kapasiteyi azaltır ve çok fazla fayda sağlamaz). Bir üst kuyruk için kapasite yapılandırması eksikse ve varsayılan değer 0 ise, hedef kuyruğun bu bölümdeki hesaplanan gerçek kapasitesi de 0 olacaktır.

  • yarn.scheduler.capacity.root.accessible-node-labels.<label>.capacity değeri 0'dan büyük bir değere ayarlandıktan sonra, normal yarn.scheduler.capacity.<queue-path>.capacity özelliğinde olduğu gibi aynı kural geçerlidir: aynı bölüm için tüm doğrudan alt kuyruklardaki capacity değerlerinin toplamı 100 olmalıdır.

    Örnek yapılandırma:

    <configuration>
      <!-- Add node label properties in XML -->
      <property>
        <!-- Allow the default queue to access the DEMO partition (required) -->
        <name>yarn.scheduler.capacity.root.default.accessible-node-labels</name>
        <value>DEMO</value>
      </property>
      <property>
        <!-- Set the DEMO partition capacity on all ancestor queues of the default queue (required) -->
        <name>yarn.scheduler.capacity.root.accessible-node-labels.DEMO.capacity</name>
        <value>100</value>
      </property>
      <property>
        <!-- Set the DEMO partition capacity for the default queue (required) -->
        <name>yarn.scheduler.capacity.root.default.accessible-node-labels.DEMO.capacity</name>
        <value>100</value>
      </property>
      <property>
        <!-- Optional: set the maximum capacity for the default queue in the DEMO partition. The default is 100. -->
        <name>yarn.scheduler.capacity.root.default.accessible-node-labels.DEMO.maximum-capacity</name>
        <value>100</value>
      </property>
      <property>
        <!-- Optional: set the default partition for container requests of jobs submitted to the default queue. The default is the DEFAULT partition "" -->
        <name>yarn.scheduler.capacity.root.default.default-node-label-expression</name>
        <value>DEMO</value>
      </property>
    <configuration>
                            

Yapılandırmayı düzenleyip kaydettikten sonra, YARN hizmeti sayfasının Status sekmesindeki ResourceManager refreshQueues işlemini kullanarak zamanlayıcı yapılandırmasını sıcak güncelleyin. Ardından, işin beklendiği gibi çalıştığını doğrulayın. İş başarıyla tamamlandıktan sonra sonucu ResourceManager web arayüzünde kontrol edin. Yapılandırma etkili olduğunda, ResourceManager Scheduler sayfasında Partition: DEMO bölümünün kaynak tahsis ettiğini (memory:26214, vCores:16) görebilirsiniz. Kuyruk yapısı Queue: root > Queue: default şeklindedir. Bu durum, DEMO bölümü ve ilgili kuyruk kapasite ayarlarının uygulandığını gösterir.

Tez hariç çoğu hesaplama motoru, iş gönderme parametreleri aracılığıyla düğüm etiketlerini destekler; bu parametreler bu konunun kapsamında değildir.

Motor

Parametre

Açıklama

MapReduce

mapreduce.job.node-label-expression

İşteki tüm konteynerler tarafından kullanılan varsayılan bölüm.

mapreduce.job.am.node-label-expression

ApplicationMaster tarafından kullanılan bölüm.

mapreduce.map.node-label-expression

Map görevleri tarafından kullanılan bölüm.

mapreduce.reduce.node-label-expression

Reduce görevleri tarafından kullanılan bölüm.

Spark

spark.yarn.am.nodeLabelExpression

ApplicationMaster tarafından kullanılan bölüm.

spark.yarn.executor.nodeLabelExpression

Executor tarafından kullanılan bölüm.

Flink

yarn.application.node-label

İşteki tüm konteynerler tarafından kullanılan varsayılan bölüm.

yarn.taskmanager.node-label

TaskManager tarafından kullanılan bölüm. Flink 1.15.0 ve sonraki sürümlerde desteklenir; bu sürümler EMR-3.44.0 (3.x) ve EMR-5.10.0 (5.x) ile eşleşir.

SSS

HA kümelerinde düğüm etiketi verilerinin depolanması

Evet. Yüksek kullanılabilirlik (HA) kümesinde ResourceManager birden fazla düğümde dağıtılır. Açık kaynaklı Hadoop varsayılan olarak düğüm etiketi verilerini file:///tmp/hadoop-yarn-${user}/node-labels/ gibi yerel bir dizinde saklar. Yük devretme sonrası yeni aktif ResourceManager, önceki düğümde yerel olarak depolanan düğüm etiketi verilerini okuyamaz. Bu nedenle, yarn.node-labels.fs-store.root-dir parametresini /tmp/node-labels veya ${fs.defaultFS}/tmp/node-labels gibi dağıtık bir depolama yoluna ayarlamanız gerekir. EMR'de varsayılan dosya sistemi HDFS'dir. Ayrıntılar için bkz. Yordam.

Önemli

Özel bir dağıtık yol için, dosya sistemi hizmetinin sağlıklı olduğundan ve hadoop kullanıcısının okuma ve yazma erişimine sahip olduğundan emin olun. Aksi takdirde, ResourceManager başlatılamaz.

NodeManager bağlantı noktasının belirtilmesi

Bir EMR kümesinde her düğümde en fazla bir NodeManager işlemi çalıştığından, bir bağlantı noktası belirtmek gerekli değildir. Yanlış veya rastgele bir bağlantı noktası belirtirseniz, replaceLabelsOnNode komutu düğümü bölüme eşleyemez. Bir düğümün mevcut bölümünü görüntülemek için yarn node -list -showDetails komutunu çalıştırabilirsiniz.

Düğüm etiketlerinin kullanım alanları

Çoğu durumda, bir EMR kümesinde düğüm etiketlerine gerek yoktur. Açık kaynaklı Hadoop YARN'deki birçok ölçüm bölümleri hesaba katmaz ve yalnızca DEFAULT bölümü için durum bildirir; bu durum operasyonel karmaşıklığı artırır. Bölüm tabanlı zamanlama ayrıca genel kaynak kullanımını azaltabilir ve kaynak israfına yol açabilir. Tipik kullanım alanları arasında toplu işler ile akış işlerinin bölümlerle ayrıştırılması, kritik işlerin esnek olmayan düğümlere sabitlenmesi ve kaynak dengesizliğini önlemek için farklı örnek türlerinin ayrı bölümlerde barındırılması yer alır.

İlgili belgeler

Küme düğümlerini bölümlere göre yönetmek için bkz. Use node labels to partition nodes.