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.
Central de ajuda/ MapReduce Service/ Visão geral de serviço/ Componentes/ YARN/ Relação entre YARN e outros componentes
Atualizado em 2023-05-19 GMT+08:00

Relação entre YARN e outros componentes

Relação entre YARN e Spark

A computação e o agendamento do Spark podem ser implementados usando o modo YARN. O Spark aproveita os recursos de computação fornecidos pelos clusters de YARN e executa tarefas de maneira distribuída. Spark no YARN tem dois modos: YARN-cluster e YARN-cliente.

  • Modo YARN Cluster

    Figura 1 descreve o quadro operacional.

    Figura 1 Estrutura de operação do Spark no YARN-cluster

    Processo de implementação do Spark on YARN-cluster:

    1. O cliente gera as informações da aplicação e, em seguida, envia as informações para o ResourceManager.
    2. O ResourceManager aloca o primeiro contêiner (ApplicationMaster) para o SparkApplication e inicia o driver no contêiner.
    3. O ApplicationMaster se aplica a recursos do ResourceManager para executar o contêiner.

      O ResourceManager aloca os contêineres para o ApplicationMaster, que se comunica com os NodeManagers relacionados e inicia o executor no contêiner obtido. Depois que o executor é iniciado, ele se registra com os drivers e aplica-se para as tarefas.

    4. Drivers alocam tarefas para os executores.
    5. Os executores executam tarefas e relatam o status operacional aos Drivers.
  • Modo YARN Client

    Figura 2 descreve o quadro operacional.

    Figura 2 Estrutura de operação do Spark on YARN-client

    Processo de implementação do Spark no YARN-client:

    No modo YARN-client, o driver é implementado e iniciado no cliente. No modo YARN-client, o cliente de uma versão anterior é incompatível. Você é aconselhado a usar o modo YARN-cluster.

    1. O cliente envia a solicitação da aplicação de Spark para ResourceManager e, em seguida, o ResourceManager retorna os resultados. Os resultados incluem informações como ID da aplicação e o máximo e mínimo de recursos disponíveis. O cliente empacota todas as informações necessárias para iniciar o ApplicationMaster e envia as informações para ResourceManager.
    2. Depois de receber a solicitação, o ResourceManager encontra um nó adequado para o ApplicationMaster e o inicia nesse nó. ApplicationMaster é uma função no YARN e o nome do processo no Spark é ExecutorLauncher.
    3. Com base nos requisitos de recursos de cada tarefa, o ApplicationMaster pode solicitar uma série de contêineres para executar tarefas do ResourceManager.
    4. Depois de receber a lista de contêineres recém-alocada (do ResourceManager), o ApplicationMaster envia informações aos NodeManagers relacionados para iniciar os contêineres.

      O ResourceManager aloca os contêineres para o ApplicationMaster, que se comunica com os NodeManagers relacionados e inicia o executor no contêiner obtido. Depois que o executor é iniciado, ele se registra com os drivers e aplica-se para as tarefas.

      Os contêineres em execução não são suspensos e os recursos não são liberados.

    5. Drivers alocam tarefas para os executores. Os executores executam tarefas e relatam o status operacional aos Drivers.

Relação entre YARN e MapReduce

MapReduce é uma estrutura de computação em execução no YARN, que é usado para processamento em lote. MRv1 é implementado com base no MapReduce no Hadoop 1.0, que é composto por modelos de programação (novas e antigas APIs de programação), ambiente de execução (JobTracker e TaskTracker) e mecanismo de processamento de dados (MapTask e ReduceTask). Essa estrutura ainda é fraca em escalabilidade, tolerância a falhas (SPOF JobTracker) e compatibilidade com várias estruturas. (Atualmente, apenas a estrutura de computação MapReduce é suportada.) MRv2 é implementado com base no MapReduce no Hadoop 2.0. O código-fonte reutiliza os modelos de programação MRv1 e a implementação do mecanismo de processamento de dados, e o ambiente em execução é composto por ResourceManager e ApplicationMaster. O ResourceManager é um novo sistema de gerenciamento de recursos, e o ApplicationMaster é responsável por cortar dados de job do MapReduce, atribuir tarefas, solicitar recursos, agendar tarefas e tolerar falhas.

Relação entre YARN e ZooKeeper

Figura 3 mostra a relação entre ZooKeeper e YARN.

Figura 3 Relação entre ZooKeeper e YARN
  1. Quando o sistema é iniciado, o ResourceManager tenta gravar informações de estado em ZooKeeper. O ResourceManager que primeiro grava informações de estado no ZooKeeper é selecionado como o ResourceManager ativo e outros são ResourceManagers em espera. Os ResourceManagers em espera monitoram periodicamente as informações eleitorais ativas do ResourceManager no ZooKeeper.
  2. O ResourceManager ativo cria o diretório Statestore no ZooKeeper para armazenar informações da aplicação. Se o ResourceManager ativo estiver com defeito, o ResourceManager em espera obterá informações da aplicação do diretório Statestore e restaurará os dados.

Relação entre YARN e Tez

As informações do job Hive no Tez requerem a capacidade do TimeLine Server do YARN para que as tarefas do Hive possam exibir o status atual e histórico das aplicações, facilitando o armazenamento e a recuperação.