Aller au contenu

Test Spark

Table des Matières


Tests de Spark avec la librairie pyspark

Nous allons ici faire fonctionner à nouveau l’algorithme de comptage de mots, mais cette fois-ci rédigé avec pyspark, la librairie python qui permet de programmer avec Spark.

Lancer le cluster

Si le cluster Docker n’est pas déjà lancé, depuis le répertoire du repo hadoop-cluster-docker :

docker compose up -d
docker compose exec hadoop-master bash
check-cluster.sh

Tu dois voir tous les éléments marqués . Sinon, voir la page de dépannage. Pour rappel, depuis la version 5 de l’image, HDFS et YARN démarrent automatiquement — pas besoin de start-dfs.sh / start-yarn.sh.

Vérifie que HDFS est accessible :

hadoop fs -ls

wordcount en Spark

Entre dans le répertoire wordcount et liste les fichiers contenus :

cd ~/TP_Spark/wordcount
ls
Le dossier contient un unique script de comptage de mots rédigé en pyspark.

Avant de lancer le script, vérifie que le répertoire sortie n’existe pas déjà sous HDFS (on tente de l’effacer ; qu’il existe ou non, c’est plus sûr) :

hadoop fs -rm -r -f sortie

Lance le programme de comptage de mots sur le livre dracula :

spark-submit --deploy-mode client --master local[2] PySpark_wc.py input/dracula

local[N] — que signifie ce paramètre ?

--master local[N] exécute Spark entièrement sur la machine locale avec N threads (≈ N partitions de données traitées en parallèle). local[*] utilise tous les cœurs logiques disponibles. C’est pour cela que la sortie produit 2 fichiers part-* : chaque thread a écrit sa partition. En mode --master yarn, Spark délègue l’exécution aux NodeManagers du cluster.

Pour vérifier le résultat, scrute le contenu du répertoire sortie sous HDFS :

hadoop fs -ls sortie
et le contenu des fichiers de sortie :
hadoop fs -text sortie/part-00000
hadoop fs -text sortie/part-00001

Le Job est exécuté localement, sur le client (le compte Linux du master), en exploitant 2 threads. Le répertoire de sortie est fixé dans le programme python lui-même.

ℹ Le mode --deploy-mode cluster permet d’exécuter le programme sur le cluster Hadoop (mode principalement utilisé en phase de production, et non en phase de mise au point). Dans ce cas, il faut aussi préciser l’option --master yarn :

hadoop fs -rm -r -f sortie
spark-submit --deploy-mode cluster --master yarn PySpark_wc.py input/dracula

✏ Travail à faire — Faites évoluer la version précédente de telle manière que l’on ne garde que les mots qui apparaissent dans le texte au moins X fois, la valeur de X étant fixée par un argument supplémentaire lors de l’appel à spark-submit. Par exemple :

spark-submit --deploy-mode client --master local[2] PySpark_wc.py input/dracula 1000

Tester les scripts vus en cours

D’abord, déplace-toi dans le sous-répertoire scripts :

cd ~/TP_Spark/scripts
ls

Tu peux ainsi tester les scripts vus en cours, par exemple :

spark-submit --deploy-mode client --master local[2] PySpark_Pi.py
donne :
Pi is roughly  3.14928