Todos os produtos
Search
Central de documentação

E-MapReduce:Uso de rótulos de nó

Última atualização: Sep 21, 2026

Este tópico descreve os rótulos de nó do YARN, seu uso e problemas comuns.

Contexto

Os rótulos de nó do YARN particionam os nós do YARN NodeManager. Como um nó pode ser atribuído a apenas um rótulo de nó, você pode usar os rótulos de nó para dividir um cluster YARN em conjuntos disjuntos de nós. Por padrão, os nós pertencem à partição DEFAULT (partition="", uma string vazia).

As partições podem ser configuradas em dois tipos:

  • partição exclusiva: apenas os contêineres que solicitam essa partição podem ser agendados em seus nós.

  • partição não exclusiva: os contêineres que solicitam essa partição, a partição DEFAULT ou nenhuma partição podem ser agendados em seus nós se houver recursos ociosos disponíveis.

O Capacity Scheduler é o único agendador que oferece suporte ao agendamento baseado em partições com rótulos de nó. Configure o agendador ou use o parâmetro node-label-expression do mecanismo de computação para atribuir os contêineres de uma fila às partições acessíveis.

Para obter mais informações sobre os rótulos de nó, consulte YARN Node Labels.

Limitações

  • Este tópico se aplica às versões do EMR anteriores ao EMR-5.11.1 e EMR-3.45.1, desde que o parâmetro yarn.node-labels.configuration-type no arquivo yarn-site.xml esteja definido como centralized.

  • As versões do EMR 5.11.1 e posteriores, bem como 3.45.1 e posteriores, oferecem suporte ao gerenciamento de partições do YARN no console do EMR. Para obter mais informações, consulte Manage YARN partitions in the EMR console.

Procedimento

Ative os rótulos de nó no console

No console do EMR, acesse a página de configuração do service YARN. Na aba yarn-site.xml, adicione as propriedades a seguir. Em seguida, salve a configuração e reinicie o ResourceManager para aplicar as alterações.

Chave

Valor

Descrição

yarn.node-labels.enabled

true

Ativa o recurso de rótulos de nó.

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

/tmp/node-labels

No modo de configuração centralized, esta propriedade especifica o caminho de armazenamento para as informações de rótulos de nó. Você pode personalizar esse caminho.

Nota
  • Este tópico aborda o modo centralized para explicar os princípios de funcionamento do mapeamento de rótulos de nó. As versões do EMR 5.11.1 e posteriores, bem como 3.45.1 e posteriores, usam yarn.node-labels.configuration-type=distributed por padrão. Nessas versões, gerencie as partições do YARN no console do EMR sem usar os comandos manuais descritos neste tópico. Para obter mais informações, consulte Manage YARN partitions in the EMR console. Para outros requisitos, consulte a documentação oficial da comunidade Hadoop.

  • Caso defina a propriedade yarn.node-labels.fs-store.root-dir com um caminho sem esquema (em vez de uma URL completa), o YARN usará o sistema de arquivos padrão especificado por fs.defaultFS. A configuração será então equivalente a ${fs.defaultFS}/tmp/node-labels. No EMR, o sistema de arquivos padrão geralmente é o HDFS.

Adicione rótulos de nó e mapeie nós usando comandos

Para atribuir partições automaticamente aos nós do NodeManager em um grupo de nós elásticos durante o dimensionamento, adicione o comando replaceLabelsOnNode a um script de bootstrap para esse grupo de nós após a criação das partições. O script é executado após a inicialização dos componentes do nó.

Exemplos de comandos:

# 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"

Após a execução bem-sucedida dos comandos, verifique os resultados na interface web do ResourceManager.

  • Na página Nodes do ResourceManager, a coluna Node Labels para os dois nós principais (core-1-1 e core-1-2) exibe DEMO, e o Node State é RUNNING. Isso indica que o mapeamento de nó para rótulo está ativo.

  • Na página Node Labels, a tabela exibe três rótulos de nó adicionados: <DEFAULT_PARTITION>, CORE e DEMO. O Label Type deles é Exclusive Partition.

Configure as partições de fila

Para usar o Capacity Scheduler, certifique-se de que a propriedade yarn.resourcemanager.scheduler.class no arquivo yarn-site.xml esteja definida como org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacityScheduler.

No arquivo capacity-scheduler.xml, use as propriedades a seguir para configurar as partições acessíveis e a capacidade de uma fila. Substitua <queue-path> pelo caminho da fila e <label> pelo nome da partição. Para a partição DEFAULT, você pode usar as propriedades regulares capacity ou maximum-capacity.

Parâmetro

Valor

Descrição

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

Uma lista de partições separadas por vírgulas.

Especifica a lista de partições acessíveis para a fila.

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

Para regras de valor, consulte yarn.scheduler.capacity.<queue-path>.capacity.

Especifica a capacidade de recursos para a fila na partição acessível especificada.

Importante

Para que tenha efeito, configure também a capacidade de todas as filas ancestrais.

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

Para regras de valor, consulte yarn.scheduler.capacity.<queue-path>.maximum-capacity. O valor padrão é 100.

Especifica a capacidade máxima de recursos que a fila pode usar na partição acessível especificada.

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

Um nome de partição. O padrão é uma string vazia, que representa a partição DEFAULT.

Especifica a partição padrão para solicitações de contêiner em jobs enviados a esta fila sem uma partição especificada.

  • Para que uma fila especificada tenha uma capacidade de recursos real maior que 0, configure a capacidade para a mesma partição em todas as suas filas ancestrais. Isso ocorre porque o valor padrão do parâmetro yarn.scheduler.capacity.<queue-path>.accessible-node-labels.<label>.capacity é 0. Portanto, configure yarn.scheduler.capacity.root.accessible-node-labels.<label>.capacity=100 para que suas filas filhas possam ter uma capacidade diferente de zero na partição. (Teoricamente, qualquer valor maior que 0 é suficiente, mas configurar um valor menor que 100 reduz a capacidade real calculada para as filas filhas e tem pouca utilidade). Se a configuração de capacidade para uma fila ancestral estiver ausente e o padrão for 0, a capacidade real calculada para a fila de destino nesta partição também será 0.

  • Após definir yarn.scheduler.capacity.root.accessible-node-labels.<label>.capacity com um valor maior que 0, a mesma regra se aplica à propriedade regular yarn.scheduler.capacity.<queue-path>.capacity: a soma dos valores de capacity para a mesma partição em todas as filas filhas diretas deve ser 100.

    Exemplo de configuração:

    <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>
                            

Após a edição e ao salvar a configuração, use a operação refreshQueues do ResourceManager na aba Status da página do service YARN para atualizar a configuração do agendador em tempo real. Em seguida, verifique se o job executa conforme o esperado. Após o sucesso do job, verifique o resultado na interface web do ResourceManager. Depois que a configuração entrar em vigor, na página Scheduler do ResourceManager, você poderá ver que a Partition: DEMO tem recursos alocados (memory:26214, vCores:16). A estrutura da fila é Queue: root > Queue: default. Isso indica que a partição DEMO e suas configurações de capacidade de fila foram aplicadas.

A maioria dos mecanismos de computação (exceto o Tez) também oferece suporte a rótulos de nó por meio de parâmetros de envio de jobs, que não são abordados neste tópico.

Mecanismo

Parâmetro

Descrição

MapReduce

mapreduce.job.node-label-expression

A partição padrão usada por todos os contêineres no job.

mapreduce.job.am.node-label-expression

A partição usada pelo ApplicationMaster.

mapreduce.map.node-label-expression

A partição usada pelas tarefas de map.

mapreduce.reduce.node-label-expression

A partição usada pelas tarefas de reduce.

Spark

spark.yarn.am.nodeLabelExpression

A partição usada pelo ApplicationMaster.

spark.yarn.executor.nodeLabelExpression

A partição usada pelo Executor.

Flink

yarn.application.node-label

A partição padrão usada por todos os contêineres no job.

yarn.taskmanager.node-label

A partição usada pelo TaskManager. Oferece suporte no Flink 1.15.0 e posteriores, que corresponde ao EMR-3.44.0 (3.x) e EMR-5.10.0 (5.x).

Perguntas frequentes

Armazenamento de dados de rótulos de nó em clusters HA

Sim. Em um cluster de alta disponibilidade (HA), o ResourceManager é implantado em vários nós. Por padrão, o Hadoop de código aberto armazena os dados de rótulos de nó em um diretório local, como file:///tmp/hadoop-yarn-${user}/node-labels/. Após um failover, o novo ResourceManager ativo não consegue ler os dados de rótulos de nó armazenados localmente no nó anterior. Portanto, defina yarn.node-labels.fs-store.root-dir com um caminho de armazenamento distribuído, como /tmp/node-labels ou ${fs.defaultFS}/tmp/node-labels. No EMR, o sistema de arquivos padrão é o HDFS. Para obter detalhes, consulte Procedure.

Importante

Para um caminho distribuído personalizado, certifique-se de que o service do sistema de arquivos esteja íntegro e que o usuário hadoop tenha acesso de leitura e gravação. Caso contrário, o ResourceManager falhará ao iniciar.

Especificação da porta do NodeManager

Em um cluster EMR, cada nó executa no máximo um processo do NodeManager, portanto, especificar uma porta é desnecessário. Caso especifique uma porta incorreta ou aleatória, o comando replaceLabelsOnNode falhará ao mapear o nó para a partição. Execute yarn node -list -showDetails para visualizar a partição atual de um nó.

Casos de uso para rótulos de nó

Na maioria dos casos, os rótulos de nó são desnecessários em um cluster EMR. Muitas métricas no Hadoop YARN de código aberto não consideram as partições e relatam apenas o status da partição DEFAULT, o que aumenta a complexidade operacional. O agendamento baseado em partições também pode reduzir a utilização geral de recursos e levar ao desperdício. Os casos de uso típicos incluem o isolamento de jobs em lote e jobs de streaming por partição, a fixação de jobs críticos em nós não elásticos e a acomodação de diferentes tipos de instância em partições separadas para evitar o desequilíbrio de recursos.

Documentação relacionada

Gerencie os nós do cluster por partição; para isso, consulte Use node labels to partition nodes.