Database
 sql >> Base de Dados >  >> RDS >> Database

Estrutura de um Apache Spark Job Run!


Agora, nossa comunidade de análise de big data começou a usar o Apache Spark a todo vapor para processamento de big data. O processamento pode ser feito para consultas ad-hoc, consultas pré-construídas, processamento de gráficos, aprendizado de máquina e até mesmo para streaming de dados.

Portanto, a compreensão do envio de trabalhos do Spark é muito vital para a comunidade. Estenda para o prazer de compartilhar com você os aprendizados das etapas envolvidas no envio de trabalho do Apache Spark.

Basicamente tem duas etapas,

Envio de trabalho


O trabalho do Spark é enviado automaticamente quando uma ação como count () é executada em um RDD.
RunJob() internamente para ser chamado no SparkContext e, em seguida, chamar o agendador que é executado como parte do derivador.
O agendador é composto de 2 partes – Agendador DAG e Agendador de Tarefas.

Construção de DAG


Existem dois tipos de construções de DAG,

  • O trabalho simples do Spark é aquele que não precisa de embaralhamento e, portanto, tem apenas um único estágio composto por tarefas de resultado, como o trabalho somente mapa no MapReduce
  • O trabalho complexo do Spark envolve operações de agrupamento e requer um ou mais estágios de embaralhamento.
  • O agendador de DAG do Spark transforma o trabalho em dois estágios.
  • O agendador DAG é responsável por dividir um estágio em tarefas para envio ao agendador de tarefas.
  • Cada tarefa recebe uma preferência de posicionamento do agendador do DAG para permitir que o agendador de tarefas aproveite a localidade dos dados.
  • As etapas dos filhos só são enviadas quando os pais são concluídos com êxito.

Agendamento de tarefas

  • O Agendador de Tarefas enviará um conjunto de tarefas; ele usa sua lista de executores que estão sendo executados para o aplicativo e constrói um mapeamento de tarefas para executores que leva em consideração as preferências de posicionamento.
  • O Agendador de Tarefas atribui a executores que possuem núcleos livres, cada tarefa recebe um núcleo por padrão. Ele pode ser alterado pelo parâmetro spark.task.cpus.
  • O Spark usa o Akka, que é uma plataforma baseada em atores para criar aplicativos distribuídos orientados a eventos altamente escaláveis.
  • O Spark não usa o Hadoop RPC para chamadas remotas.

Execução de tarefas


Um executor executa uma tarefa da seguinte forma,
  • Ele garante que o JAR e as dependências de arquivo para a tarefa estejam atualizados.
  • Desserializa o código da tarefa.
  • O código da tarefa é executado.
  • A tarefa retorna os resultados ao driver, que os reúne em um resultado final para retornar ao usuário.

Referência

  •  Guia definitivo do Hadoop
  • Comunidade de código aberto do Analytics e Big Data

Este artigo apareceu originalmente aqui. Republicado com permissão. Envie suas reclamações de direitos autorais aqui.