Relação entre Spark2x e outros componentes
Relação entre Spark e HDFS
Os dados calculados pelo Spark vêm de várias fontes de dados, como arquivos locais e HDFS. A maioria dos dados vem do HDFS, que pode ler dados em grande escala para computação paralela. Após serem computados, os dados podem ser armazenados no HDFS.
O Spark envolve o Driver e o Executor. O Driver agenda tarefas e o Executor executa tarefas.
Figura 1 descreve o processo de leitura do arquivo.
- O Driver se interconecta com o HDFS para obter as informações do Arquivo A.
- O HDFS retorna as informações de bloco detalhadas sobre esse arquivo.
- O Driver define um grau paralelo com base na quantidade de dados do bloco e cria várias tarefas para ler os blocos desse arquivo.
- O Executor executa as tarefas e lê os blocos detalhados como parte do Conjunto de dados distribuído resiliente (RDD).
Figura 2 descreve o processo de gravação do arquivo.
- O Driver cria um diretório onde o arquivo deve ser gravado.
- Com base no status de distribuição do RDD, o número de tarefas relacionadas à gravação de dados é calculado e essas tarefas são enviadas ao Executor.
- Executor executa essas tarefas e grava os dados do RDD no diretório criado em 1.
Relação com o Yarn
A computação e o agendamento do Spark podem ser implementados usando o modo Yarn. O Spark desfruta dos recursos de computação fornecidos pelos clusters de Yarn e executa tarefas de forma distribuída. Spark no Yarn tem dois modos: Yarn-cluster e Yarn-client.
- Modo Yarn-cluster
Figura 3 descreve o quadro operacional.
Processo de implementação do Spark no 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 4 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. O modo Yarn-cluster é recomendado.
- O cliente envia a solicitação da aplicação Spark ao ResourceManager e empacota todas as informações necessárias para iniciar o ApplicationMaster e envia as informações ao ResourceManager. O ResourceManager então retorna os resultados para o cliente. Os resultados incluem informações como ApplicationId, o limite superior e o limite inferior dos recursos disponíveis. 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.
A execução de Contêineres não será suspensa para liberar recursos.
- Drivers alocam tarefas para os executores. Executores executam tarefas e relatam o status operacional aos Drivers.