Este é o segundo de uma série de artigos aqui no Blog da DSA sobre um dos melhores frameworks para processamento de dados de forma distribuída, o Apache Spark e sua utilização na nuvem com Databricks. Se está chegando agora, acesse o primeiro artigo da série aqui.

Essa série de artigos foi produzida por um dos alunos da DSA, Engenheiro de Dados, certificado em Spark e Databricks e matriculado em mais de 50 cursos em nosso portal. As informações de contato você encontra ao final do artigo.

Os artigos são de nível técnico e recomendamos alguma familiaridade com ambiente de processamento de Big Data antes de fazer a leitura. Temos uma introdução geral ao Apache Spark no curso gratuito Big Data Fundamentos e material completo no curso Big Data Real-Time Analytics com Python e Spark e Machine Learning e IA em Ambientes Distribuídos.

Boa leitura.

Spark Execution

No Spark, a unidade de computação de nível mais alto é uma aplicação. Uma aplicação Spark pode ser usada para um único trabalho em lote, uma sessão interativa com vários trabalhos ou um servidor que satisfaz continuamente as solicitações.

A execução da aplicação (application execution) Spark, junto com drivers e executores, também envolve conceitos de tempo de execução, como tarefas (tasks), trabalhos (jobs) e estágios (stages) . Invocar uma ação (action) dentro de uma aplicação Spark aciona o lançamento de um job para cumpri-la. O Spark examina o conjunto de dados do qual essa ação depende e formula um plano de execução (execution plan). O plano de execução (execution plan) reúne as transformações do conjunto de dados em estágios. Um estágio é uma coleção de tarefas que executam o mesmo código, cada uma em um diferente subconjunto de dados.

spark

Visão Geral do DAGScheduler

DAGScheduler é a camada de agendamento do Apache Spark que implementa o agendamento orientado ao estágio. Ele transforma um plano de execução lógico em um plano de execução física (usando estágios).

spark

Depois que uma ação (veja abaixo) for chamada, o SparkContext entregua um plano lógico ao DAGScheduler que por sua vez se traduz em um conjunto de estágios que são enviados como um conjunto de tarefas para execução.

Os conceitos fundamentais do DAGScheduler são jobs e stages que ele acompanha através de registros internos e contadores (counters).

Componentes Para Execução do Spark Queries

  • Cluster manager: é responsável por iniciar os processos nos nodes. Gerencia o ciclo de vida dos processos de um trabalho (job).
  • Worker node: os nodes de trabalho são recursos de computação que hospedam os processos de trabalho.
  • Cluster driver process: o processo de driver do cluster está vinculado ao gerenciador de culster e é responsável por atender a solicitações para iniciar processos de trabalho de cluster.
  • Cluster worker process: os processos de trabalho do cluster estão vinculados aos nodes de trabalho e são responsáveis ​​por manter o processo do Spark Driver e os processos do Executor.
  • Driver process: o processo do driver reside em um node de trabalho (execução no modo de cluster) ou em um node cliente (execução no modo cliente). Eles são responsáveis ​​pela execução do código e troca de dados entre os processos do executor.
  • Executor process: o processo de execução é responsável pela execução de spark queries.
  • Client node: o node cliente é onde reside o aplicativo cliente.
  • Client application: o aplicativo cliente é onde você escreveria seu código spark!

 

mode diagrams-no spark application

Modos de Execução no Spark

O Spark oferece a escolha dos modos de execução, que diferem em onde diferentes processos estão fisicamente localizados.

  • – Cluster
  • – Client
  • – Local

spark

 

 

spark

 

Execução de Aplicações Spark

Esses são os passos realizados para executar aplicações Spark:

  • – Envio do código a ser executado.
  • – Gerenciador de cluster aloca recursos para o processo de driver.
  • – Spark Session inicializa o cluster spark (driver + executores), comunicando-se com o gerenciador de cluster (o número de executores é uma configuração definida pelo usuário).
  • – O gerenciador de cluster inicia os executores e envia suas informações (localização, etc.) para o cluster spark.
  • – O Driver se comunica com os trabalhadores (workers) para realizar a tarefa. Isso envolve a movimentação de dados (shuffling) e a execução de código. Cada trabalhador responde com o status dessas tarefas

 

Continuaremos no próximo artigo da série.

Artigo Produzido por: Thomaz Antonio Rossito Neto

Databricks Engineer with Apache Spark™ 3.0
MBA em Ciência de Dados com Big Data
MCSE: Data Management and Analytics Microsoft
MCSA: Data Engineering with Azure Microsoft

Contatos:
Site Pessoal: www.thomazrossito.com.br

Referências:

Apache Spark Cluster Overview

Apache Spark Application Overview

JVM Overview