Apache Spark

De Wiki de Calcul Québec
Aller à : Navigation, rechercher
Autres langues :anglais 100% • ‎français 100%

Sommaire

Description

Apache Spark est une framework de calcul distribuée open source initialement développé par l'AMPLab de l'Université Berkeley, et maintenant un projet de la fondation Apache. Contrairement au paradigme MapReduce de Hadoop utilisant le stockage sur disque, Spark utilise des primitives conservées en mémoire lui permettant d'atteindre des performances jusqu'à 100 fois plus rapide pour certaines applications. Le chargement des données en mémoire permet de les interroger fréquemment ce qui fait de Spark une framework particulièrement approprié pour l'apprentissage automatique et l'analyse de données interactive.

Utilisation d'Apache Spark

Les instructions qui suivent ont été validées sur Colosse seulement.

Démarrer un cluster Spark

Dans le contexte d'utilisation d'une grappe de calcul de Calcul Québec, un cluster Spark doit être démarré au début de chaque tâche. Pour ce faire, il s'agit d'entrer la commande suivante:

start-all.sh

Cette commande lance dans un premier temps l'ordonnanceur de Spark puis les démons Spark pour chacun des noeuds associés à la tâche.

Soumettre une application

Pour soumettre une application à l'ordonnanceur de Spark, on utilise la commande spark-submit. Les arguments les plus important pour cette commande lors de son utilisation sur une grappe de Calcul Québec sont résumés dans l'encadré suivant.

spark-submit --master spark://$HOSTNAME:7077\
             --executor-memory 20G\
             application [arg1 arg2 ...]
  • --master spark://$HOSTNAME:7077 : indique l'adresse de l'ordonnanceur Spark. À Calcul Québec, il s'agit toujours du noeud sur lequel le script de tâche s'exécute, on utilise donc la variable $HOSTNAME qui retourne le nom de l'hôte sur lequel s'exécute ce script.
  • --executor-memory 20G : indique combien de mémoire est alloué à chacun des workers Spark. La valeur devrait être inférieure à la quantité de mémoire disponible sur un noeud de calcul.
  • application: fichier contenant votre application Spark. Il peut s'agir d'une archive Java (.jar), d'un script Python (.py) ou d'un script R (.R).
  • [arg1 arg2 ...]: arguments nécessaires à l'exécution de votre application au besoin.

Arrêter un cluster Spark

Lorsque notre utilisation de Spark est terminée, on peut arrêter le cluster Spark à l'aide de la commande suivante:

stop-all.sh

La commande arrête dans un premier temps les démons sur chaque noeud, puis l'ordonnanceur Spark.

Exemples de tâches

Estimation des décimales de Pi avec Scala

Fichier : submit_sparkpi.pbs
#!/bin/bash
#PBS -N SparkPi
#PBS -l nodes=4:ppn=8
#PBS -l walltime=00:20:00
 
cd "${PBS_O_WORKDIR}"
 
module load apps/spark/2.0.0
 
# Launch Spark cluster
start-all.sh
 
# Submit SparkPi.jar application to the Spark cluster
spark-submit --master spark://$HOSTNAME:7077\
                      --executor-memory 20G\
                      SparkPi.jar
 
# Stop Spark cluster
stop-all.sh


Références

Outils personnels
Espaces de noms

Variantes
Actions
Navigation
Ressources de Calcul Québec
Outils
Partager