Table of Contents

Wdrożenie aplikacji Apache Spark na platformie Docker

1. Pobierz obraz spark

docker pull spark

2. Utwórz sieć typu bridge

Za pomocą tej sieci program driver łączył się będzie z klastrem Sparka

docker network create -d bridge --subnet=172.22.0.0/16  spark-network

3. Utwórz klaster Spark

Utwórz plik docker-compose.yml. Definiuje on trzy węzły obliczeniowe

Interfejs użytkownika węzła master będzie dostępny pod adresem http://localhost:9090/

services:
 spark-master:
  image: spark
  command: /opt/spark/bin/spark-class org.apache.spark.deploy.master.Master
  networks:
    spark-network:
      ipv4_address: 172.22.0.2
  ports:
  - "9090:8080"
  - "7077:7077"


 spark-worker-1:
  image: spark
  command: /opt/spark/bin/spark-class org.apache.spark.deploy.worker.Worker spark://spark-master:7077
  depends_on:
  - spark-master
  networks:
    spark-network:
      ipv4_address: 172.22.0.3
  environment:
   SPARK_MODE: worker
   SPARK_WORKER_CORES: 2
   #SPARK_WORKER_MEMORY: 4g
   SPARK_MASTER_URL: spark://spark-master:7077
 
 spark-worker-2:
  image: spark
  command: /opt/spark/bin/spark-class org.apache.spark.deploy.worker.Worker spark://spark-master:7077
  depends_on:
  - spark-master
  networks:
    spark-network:
      ipv4_address: 172.22.0.4
  environment:
   SPARK_MODE: worker
   SPARK_WORKER_CORES: 2
   #SPARK_WORKER_MEMORY: 4g
   SPARK_MASTER_URL: spark://spark-master:7077

networks:
  spark-network:
   external: true
   ipam:
     config:
     - subnet: 172.22.0.0/16

W tym samym katalogu wydaj komendę

docker-compose up

4. Przygotuj plik JAR

[2023/24] Obraz apache/spark zawiera kod:

Alternatywne kompilacje można pobrać ze strony https://hub.docker.com/_/spark. Dostępne są wersje dla JDK 17

5. Uruchom kontener Spark

Przejdź do katalogu, w którym jest zapisany plik JAR.

docker run -it --rm -v ".:/opt/spark/work-dir" -p 4040:4040  --network spark-network spark /bin/bash

6. Prześlij program do węzła master

Parametrami komendy spark-submit są:

/opt/spark/bin/spark-submit --driver-memory 4g --executor-memory 4g --class org.example.Main --master spark://172.22.0.2:7077 pi_application.jar