Arquitetura Spark

Spark é uma forma de processamento distribuído que opera no ecossistema Big Data. Vamos dar uma explorada nos seus principais componentes, na sua arquitetura e no seu funcionamento.

Principais componentes

    • Driver Program

O Driver Program corresposde ao programa principal que desenvolvemos e submetemos através de um SparkContext.

    • Cluster Manager

O Cluster Manager é responsável pelo gerenciamento e alocação de recursos.

    • Worker Nodes

Os Worker Nodes são de fato os executores que realizam o processamento das tasks.

Arquitetura

Funcionamento
O funcionamento de um job Spark tem início no Driver Program que, conforme já mencionado, é o programa que desenvolvemos. Durante o desenvolvimento, realizamos a conexão com o Cluster Manager através de um SparkContext (objeto pelo qual faremos a submissão de jobs spark):

from pyspark import SparkContext

-- instanciação de um contexto spark
sc = SparkContext(appName = "nome_da_aplicacao")

A partir do momento em que instanciamos um SparkContext, o Cluster Manager é acionado para reservar os recursos necessários.

Com isso, damos sequência ao desenvolvimento do programa, fazendo a manipulação dos dados conforme necessário. Por exemplo, criando um dataframe spark:

-- instanciação de um contexto sql
sqlContext = SQLContext(sc)

-- criação de um dataframe spark
df = sqlContext.createDataFrame(
    [('ana', 23),('joao',34)],
    ['nome', 'idade']
  )

Até o momento, nenhum job foi enviado para o Cluster Manager, pois os jobs são apenas enviados quando uma ação é definida.
A partir do momento que definirmos uma ação, por exemplo:

-- quantidade de registros do dataframe
df.count()

Dai sim temos o envio do job para o Cluster Manager.

Quando o Cluster Manager recebe um job a ser executado, ele faz a separação do job em tasks que possam ser executadas paralelamente por diferentes executores. Tendo as tasks definidas, elas são distríbuidas para os Worker Nodes e executadas.

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *