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.
Processo de implementação do Spark on YARN-cluster:
- O cliente gera as informações da aplicação e, em seguida, envia as informações para o ResourceManager.
- O ResourceManager aloca o primeiro contêiner (ApplicationMaster) para o SparkApplication e inicia o driver no contêiner.
- 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.
- Drivers alocam tarefas para os executores.
- Os executores executam tarefas e relatam o status operacional aos Drivers.
- Modo YARN Client
Figura 2 descreve o quadro operacional.
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.
- 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.
- 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.
- Com base nos requisitos de recursos de cada tarefa, o ApplicationMaster pode solicitar uma série de contêineres para executar tarefas do ResourceManager.
- 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.
- 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.
- 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.
- 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.