Este guia detalha como configurar um cluster Apache Spark utilizando Docker. O cluster inclui um Spark Master e múltiplos Workers, permitindo a execução de aplicações Spark distribuídas.
Antes de iniciar, lembre-se de atualizar o IP do host onde o Spark Master será configurado nos Dockerfiles dos Workers.
Este projeto inclui os seguintes arquivos de configuração:
compose-host.yaml
: Arquivo Docker Compose para iniciar o Spark Master e um Worker no mesmo host.compose-outside.yaml
: Arquivo Docker Compose para iniciar um Worker em outro host.
No terminal, navegue até o diretório onde está o arquivo compose-host.yaml
e execute o comando:
docker compose -f compose-host.yaml up -d
Este comando irá iniciar o Spark Master e um Worker no mesmo host.
Em um segundo host, onde você deseja adicionar um Worker ao cluster, execute o comando:
docker compose -f compose-outside.yaml up -d
Isso adicionará um Worker ao cluster existente.
Para interagir com o cluster a partir de um Jupyter Notebook em outro host, você deve mapear as portas ao rodar a imagem Docker:
- 7077: Porta do Spark Master
- 4040: Porta da Web UI do Spark
- 33139: Porta do Driver
- 45029: Porta do Block Manager
docker run -p 4040:4040 -p 7077:7077 -p 33139:33139 -p 45029:45029 <imagem-do-jupyter>
No Jupyter Notebook, use a seguinte configuração para conectar ao Spark Master:
from pyspark.sql import SparkSession
from pyspark import SparkConf
conf = SparkConf().setMaster("spark://192.168.0.101:7077") # Altere para o IP do seu Spark Master
conf.set("spark.executor.memory", "6g")
conf.set("spark.driver.memory", "12g")
conf.set("spark.executor.cores", "3")
conf.set("spark.driver.cores", "6")
conf.set("spark.driver.bindAddress", "0.0.0.0") # Manter, ip interno docker
conf.set('spark.driver.host', '192.168.0.210') # Altere para o ip do host do jupyter