SpazioCodice

Déployer un Cluster Apache Spark

Déployer un Cluster Apache Spark : Guide en 5 Minutes

Le but de ce conseil rapide est de fournir au lecteur les informations nécessaires pour déployer un cluster Apache Spark composé de :

  • Un Master
  • Un ou plusieurs Workers

Ce cluster peut être utilisé à diverses fins : expérimenter avec Apache Spark ou construire une suite de tests d’intégration.

Prérequis

Il n’y a que deux prérequis pour exécuter ce que nous allons décrire dans les sections suivantes : Docker et Docker Compose.

Une fois installés, tapez les commandes suivantes pour vous assurer que tout fonctionne correctement :

Variables d'environnement

Il est généralement judicieux d’isoler les variables de contexte dans un fichier dédié, qui dans ce cas s’appelle “.env”. Ce fichier est placé à côté du fichier principal (docker-compose.yml).

				
					version: "3.6"
volumes:
  dfs:
    name: "dfs"
    driver: local
services:
  spark-master:
    image: apache/spark:${SPARK_TAG}
    ports:
      - ${SPARK_MASTER_HTTP_HOST_PORT}:8080
      - ${SPARK_MASTER_HOST_PORT}:${SPARK_MASTER_CONTAINER_PORT}
    command: /opt/spark/bin/spark-class org.apache.spark.deploy.master.Master >> logs/spark-master.out
    volumes:
      - dfs:/var/data
    networks:
      static-network:
        ipv4_address: ${SPARK_MASTER}
  spark-worker-1:
    image: apache/spark:${SPARK_TAG}
    environment:
      - SPARK_WORKER_DIR=/opt/spark/work-dir
      - SPARK_WORKER_PORT=${SPARK_WORKER_1_CONTAINER_PORT}
      - SPARK_WORKER_CORES=1
      - SPARK_WORKER_MEMORY=2048m
    command: /opt/spark/bin/spark-class org.apache.spark.deploy.worker.Worker spark://${SPARK_MASTER}:${SPARK_MASTER_CONTAINER_PORT}
    ports:
      - ${SPARK_WORKER_1_HOST_PORT}:${SPARK_WORKER_1_CONTAINER_PORT}
      - ${SPARK_WORKER_1_WEB_CONTAINER_PORT}:8081
    volumes:
      - dfs:/var/data
    depends_on:
      - spark-master
    networks:
      static-network:
        ipv4_address: ${SPARK_WORKER_1}
  spark-worker-2:
    image: apache/spark:${SPARK_TAG}
    environment:
      - SPARK_WORKER_DIR=/opt/spark/work-dir
      - SPARK_WORKER_PORT=${SPARK_WORKER_2_CONTAINER_PORT}
      - SPARK_WORKER_CORES=1
      - SPARK_WORKER_MEMORY=2048m
    command: /opt/spark/bin/spark-class org.apache.spark.deploy.worker.Worker spark://${SPARK_MASTER}:${SPARK_MASTER_CONTAINER_PORT}
    ports:
      - ${SPARK_WORKER_2_HOST_PORT}:${SPARK_WORKER_2_CONTAINER_PORT}
      - ${SPARK_WORKER_2_WEB_CONTAINER_PORT}:8082
    volumes:
      - dfs:/var/data
    depends_on:
      - spark-master
    networks:
      static-network:
        ipv4_address: ${SPARK_WORKER_2}
networks:
  static-network:
    ipam:
      config:
        - subnet: ${CONTAINERS_NETWORK_SUBNET}
				
			

docker compose

Le docker-compose.yml est le nom de fichier par défaut que Docker Compose attend lorsque vous souhaitez l’exécuter.

Le descripteur ci-dessus lance un cluster Apache Spark composé de :

  • un master
  • deux workers

Si vous souhaitez avoir plus de deux workers, créez une nouvelle section worker en copiant l’une des deux existantes (n’oubliez pas de lui donner un nom unique et d’ajouter les variables d’environnement correspondantes dans le fichier .env mentionné plus haut).

Le cluster “émule” un système de fichiers distribué (dfs, dans l’exemple) en utilisant un volume partagé entre les trois nœuds.

Il n’y a pas grand-chose de plus à dire. Ouvrez un terminal, placez-vous dans le répertoire où se trouvent les deux fichiers mentionnés ci-dessus et :

				
					> docker-compose up
				
			
 

En quelques instants (selon les ressources de votre machine), votre cluster est prêt.

Le master et les workers fournissent également une console web. Les hôtes et les ports dépendent de ce que vous avez indiqué dans le fichier .env. Voici la console web du master dans mon cluster :

Vous pouvez y voir les workers que nous avons définis dans le descripteur, correctement enregistrés. Profitez-en !

Share this post

Laisser un commentaire

En savoir plus sur SpazioCodice

Abonnez-vous pour poursuivre la lecture et avoir accès à l’ensemble des archives.

Poursuivre la lecture