Este conteúdo foi traduzido por máquina para sua conveniência e a Huawei Cloud não pode garantir que o conteúdo foi traduzido com precisão. Para exibir o conteúdo original, use o link no canto superior direito para mudar para a página em inglês.
Atualizado em 2023-05-19 GMT+08:00

Princípios básicos do YARN

A comunidade Apache apresenta a estrutura de gerenciamento de recursos unificado do YARN para compartilhar clusters do Hadoop, melhorar sua escalabilidade e confiabilidade e eliminar um gargalo de desempenho de JobTracker na estrutura inicial do MapReduce.

A ideia fundamental do YARN é dividir as duas principais funcionalidades do JobTracker, gerenciamento de recursos e agendamento/monitoramento de jobs, em daemons separados. A ideia é ter uma ResourceManager global (RM) e uma ApplicationMaster por aplicação (AM).

Uma aplicação é um job único no sentido clássico de jobs do MapReduce ou um Gráfico Acíclico Dirigido (DAG) de jobs.

Arquitetura

ResourceManager é a essência da estrutura em camadas do YARN. Essa entidade controla um cluster inteiro e gerencia a alocação de aplicações aos recursos de computação subjacentes. O ResourceManager aloca cuidadosamente vários recursos (computação, memória, largura de banda e assim por diante) para NodeManagers subjacentes (agentes por nó do YARN). O ResourceManager também trabalha com o ApplicationMasters para alocar recursos e trabalha com o NodeManagers para iniciar e monitorar suas aplicações subjacentes. Nesse contexto, o ApplicationMaster assumiu parte do papel do TaskTracker anterior, e o ResourceManager assumiu o papel do JobTracker.

O ApplicationMaster gerencia cada instância de uma aplicação em execução no YARN. O ApplicationMaster negocia recursos do ResourceManager e trabalha com os NodeManagers para monitorar a execução do contêiner e o uso de recursos (alocação de recursos de CPU e memória).

O NodeManager gerencia cada nó em um cluster do YARN. O NodeManager fornece serviços por nó em um cluster, desde supervisionar o gerenciamento de um contêiner durante seu ciclo de vida até monitorar recursos e rastrear a saúde de seus nós. O MRv1 gerencia a execução das tarefas Map e Reduce por meio de slots, enquanto o NodeManager gerencia contêiners abstratos, que representam recursos por nó disponíveis para um aplicativo específico.

Figura 1 Arquitetura

Tabela 1 descreve os componentes mostrados em Figura 1.

Tabela 1 Descrição da arquitetura

Nome

Descrição

Client

Cliente de uma aplicação do YARN. Você pode enviar uma tarefa para a ResourceManager e consultar o status operacional de uma aplicação usando o cliente.

ResourceManager(RM)

O RM gerencia e aloca centralmente todos os recursos no cluster. Ele recebe informações de cada nó (NodeManager) e aloca recursos para aplicações com base nos recursos coletados de acordo com uma política especificada.

NodeManager(NM)

NM é o agente em cada nó do YARN. Gerencia o nó de computação no cluster do Hadoop, estabelece comunicação com o ResourceManger e monitora o ciclo de vida dos contêineres, monitora o uso de recursos como memória e CPU de cada contêiner, rastreia o status do nó e gerencia logs e serviços auxiliares usados por diferentes aplicações.

ApplicationMaster (AM)

AM (App Mstr na figura acima) é responsável por todas as tarefas através do ciclo de vida de em uma aplicação. As tarefas incluem o seguinte: negociar com um agendador de RM para obter um recurso; alocar ainda mais os recursos obtidos para tarefas internas (alocação secundária de recursos); comunicar com o NM para iniciar ou parar tarefas; monitorar o status de execução de todas as tarefas; e solicitar recursos para tarefas novamente para reiniciar as tarefas quando as tarefas não forem executadas.

Container

Uma abstração de recursos no YARN. Ele encapsula recursos multidimensionais (incluindo apenas memória e CPU) em um determinado nó. Quando o ApplicationMaster solicita recursos do ResourceManager, o ResourceManager retorna recursos para o ApplicationMaster em um contêiner. O YARN aloca um contêiner para cada tarefa e a tarefa só pode usar os recursos encapsulados no contêiner.

No YARN, os agendadores de recursos organizam recursos por meio de filas hierárquicas. Isso garante que os recursos sejam alocados e compartilhados entre filas, melhorando assim o uso de recursos de cluster. O modelo de alocação de recursos principal do Superior Scheduler é o mesmo do Capacity Scheduler, conforme mostrado na figura a seguir.

Um agendador mantém as informações da fila. Você pode enviar aplicações para uma ou mais filas. Durante cada pulsação do NM, o agendador seleciona uma fila de acordo com uma regra de agendamento específica, seleciona uma aplicação na fila e aloca recursos para a aplicação. Se os recursos não forem alocados para a aplicação devido ao limite de alguns parâmetros, o agendador selecionará outra aplicação. Após a seleção, o agendador processa a solicitação de recurso desta aplicação. O agendador dá prioridade às solicitações de recursos locais primeiro, e depois para recursos no mesmo rack e, finalmente, para recursos de qualquer máquina.

Figura 2 Modelo de alocação de recursos

Princípio

A nova estrutura de MapReduce do Hadoop é chamada de MRv2 ou YARN. YARN é composto por ResourceManager, ApplicationMaster e NodeManager.

  • O ResourceManager é um gerenciador de recursos global que gerencia e aloca recursos no sistema. O ResourceManager é composto pelo Agendador e pelo Gerenciador de aplicações.
    • O Agendador aloca recursos do sistema para todas as aplicações em execução com base nas restrições, como capacidade e fila (por exemplo, aloca uma certa quantidade de recursos para uma fila e executa um número específico de jobs). Ele aloca recursos com base na demanda de aplicações, com o contêiner sendo usado como a unidade de alocação de recursos. Funcionando como uma unidade dinâmica de alocação de recursos, o Contêiner encapsula recursos de memória, CPU, disco e rede, limitando assim o recurso consumido por cada tarefa. Além disso, o Agendador é um componente plugável. Você pode projetar novos agendadores conforme necessário. O YARN fornece vários agendadores diretamente disponíveis, como o Fair Scheduler e o Capacity Scheduler.
    • O Gerenciador de aplicações gerencia todas as aplicações no sistema e envolve o envio de aplicações, negociação com agendadores sobre recursos, ativação e monitoramento do ApplicationMaster e reinicialização do ApplicationMaster em caso de falha de inicialização.
  • O NodeManager é o gerenciador de recursos e tarefas de cada nó. Por um lado, o NodeManager informa periodicamente o uso de recursos do nó local e o status de execução de cada Contêiner para ResourceManager. Por outro lado, o NodeManager recebe e processa solicitações de ApplicationMaster para iniciar ou interromper Contêineres.
  • O ApplicationMaster é responsável por todas as tarefas durante o ciclo de vida de um aplicativo, esses canais incluem o seguinte:
    • Negociar com o agendador RM para obter recursos.
    • Atribuir recursos a componentes internos (alocação secundária de recursos).
    • Comunicar-se com o NodeManager para iniciar ou interromper tarefas.
    • Monitorar o status de execução de todas as tarefas e aplique recursos novamente para tarefas quando as tarefas não forem executadas para reiniciar as tarefas.

Princípio do Capacity Scheduler

O Capacity Scheduler é um agendador multiusuário. Ele aloca recursos por fila e define os recursos mínimos/máximos que podem ser usados para cada fila. Além disso, o limite superior de uso de recursos é definido para cada usuário para evitar abuso de recursos. Os recursos restantes de uma fila podem ser compartilhados temporariamente com outras filas.

O Capacity Scheduler suporta várias filas. Ele configura uma certa quantidade de recursos para cada fila e adota a política de agendamento de enfileiramento primeiro a entrar primeiro a sair (FIFO). Para impedir que os aplicativos de um usuário usem exclusivamente os recursos em uma fila, o Capacity Scheduler define um limite para o número de recursos usados por jobs enviados por um usuário. Durante a programação, o Capacity Scheduler calcula primeiro o número de recursos necessários para cada fila e seleciona a fila que requer menos recursos. Em seguida, ele aloca recursos com base na prioridade do job e no tempo em que os jobs são enviados, bem como no limite de recursos e memória. O Capacity Scheduler oferece suporte aos seguintes recursos:

  • Capacidade garantida: como administrador do cluster de MRS, você pode definir os limites inferior e superior de uso de recursos para cada fila. Todas as aplicações enviadas a essa fila compartilham os recursos.
  • Alta flexibilidade: temporariamente, os recursos restantes de uma fila podem ser compartilhados com outras filas. No entanto, esses recursos devem ser liberados em caso de envio de novo pedido para a fila. Essa alocação flexível de recursos ajuda a melhorar notavelmente o uso de recursos.
  • Múltiplos locatários: vários usuários podem compartilhar um cluster e várias aplicações podem ser executadas simultaneamente. Para evitar o uso exclusivo de recursos por uma única aplicação, usuário ou fila, o administrador do cluster do MRS pode adicionar várias restrições (por exemplo, limite em tarefas simultâneas de uma única aplicação).
  • Proteção assegurada: uma lista de ACL é fornecida para cada fila para limitar estritamente o acesso do usuário. Você pode especificar os usuários que podem exibir o status do aplicativo ou controlar os aplicativos. Além disso, o administrador de cluster do MRS pode especificar um administrador de fila e um administrador de sistema de cluster.
  • Atualização dinâmica dos arquivos de configuração: os administradores de cluster do MRS podem modificar dinamicamente os parâmetros de configuração para gerenciar clusters on-line.

Cada fila no Capacity Scheduler pode limitar o uso de recursos. No entanto, o uso de recursos de uma fila determina sua prioridade quando os recursos são alocados às filas, indicando que as filas com menor capacidade são competitivas. Se a taxa de transferência de um cluster for grande, o agendamento de atraso permite que uma aplicação desista do agendamento entre máquinas ou racks e solicite o agendamento local.