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/ Spark2x/ Relação entre Spark2x e outros componentes
Atualizado em 2023-05-19 GMT+08:00

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.

Figura 1 Processo de leitura de arquivos
O processo de leitura do arquivo é o seguinte:
  1. O Driver se interconecta com o HDFS para obter as informações do Arquivo A.
  2. O HDFS retorna as informações de bloco detalhadas sobre esse arquivo.
  3. 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.
  4. 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.

Figura 2 Processo de gravação de arquivos
O processo de escrita do arquivo é o seguinte:
  1. O Driver cria um diretório onde o arquivo deve ser gravado.
  2. 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.
  3. 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.

    Figura 3 Estrutura de operação de Spark no Yarn-cluster

    Processo de implementação do Spark no 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 4 descreve o quadro operacional.

    Figura 4 Estrutura de operação de Spark no 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. O modo Yarn-cluster é recomendado.

    1. 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.
    2. Com base nos requisitos de recursos de cada tarefa, o ApplicationMaster pode solicitar uma série de Contêineres para executar tarefas do ResourceManager.
    3. 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.

    4. Drivers alocam tarefas para os executores. Executores executam tarefas e relatam o status operacional aos Drivers.