Installation de Spark

Pour la réalisation du projet RCP216, ainsi que pour travailler sur les travaux pratiques en dehors des séances organisées, il est nécessaire de disposer d’une installation de Spark sur votre ordinateur personnel.

Note

Tous les logiciels nécessaires à la réalisation des TP sont installés et accessibles sur les machines des salles informatiques du CNAM. Vous n’avez donc rien à installer sur les ordinateurs des salles de TP. Ces instructions ne concernent que l’installation de Spark et Jupyter pour votre travail en autonomie (formation à distance et projet).

Spark est multiplateforme et peut s’installer sous Linux, MacOS et Windows.

Nous détaillons ci-dessous la procédure d’installation de Spark et de Jupyter pour Windows, OS X et Linux : Vous avez également la possibilité de consulter ces instructions d’installation préparées par un ancien auditeur qui a suivi avec succès cette UE (et plus généralement le certificat Analyste de données massives).

  1. Installation de Java

  2. Installation de Spark

  3. Installation de Jupyter

Installation directe de Spark et Jupyter

Note

Pour ce cours, les versions à installer des logiciels sont:

  • Spark 3.3.0

  • OpenJDK/Java JDK 8

  • Apache Toree 0.4

  • Jupyter, n’importe quelle version

Les autres versions (et notamment OpenJDK > 8 et Spark 3.x) risquent de ne pas fonctionner suite à des changements incompatibles avec les fonctionnalités présentées en TP.

Installation de Java

Spark est un logiciel écrit dans le langage de programmation Java. Par ailleurs, nous travaillerons avec le langage de programmation Scala, qui est un dérivé de Java et s’exécute sur la même machine virtuelle (JVM).

Par conséquent, il est indispensable d’avoir une installation fonctionnelle de Java sur sa machine afin de pouvoir utiliser Spark.

Il est vraisemblable qu’un Java Runtime Environment récent soit déjà installé sur votre ordinateur mais probablement pas la dernière version du Java Development Kit (JDK) qui est nécessaire. Actuellement, la dernière version du JDK gérée par Spark 3.3 est la version 8.

Vous avez le choix entre la version Oracle (propriétaire) et OpenJDK (libre). Nous vous conseillons d’installer une version récente d’OpenJDK, les deux différences entre les deux logiciels étant cosmétiques.

Pour l’installer, par exemple sous Debian/Ubuntu/Linux Mint et dérivés, vous pouvez lancer dans un terminal :

sudo apt install default-jdk
# Ou pour installer une version spécifique :
# sudo apt install openjdk-8-jdk

Note

D’autres distributions Linux possèdent d’autres outils de gestion d’installation : yum (Red Hat, Fedora, CentOS, …), yast (openSUSE), pacman (ArchLinux), etc. Référez-vous à la documentation de votre distribution Linux le cas échéant.

Installation de Spark

Des versions préparées de Spark sont disponibles au téléchargement sur le site officiel du projet : http://spark.apache.org/downloads.html

Il suffit de choisir la version souhaitée et de sélectionner l’archive Pre-built for Apache Hadoop 3.3 and later. des versions plus anciennes sont dans la section Archived Releases. Cliquer ensuite sur le lien spark-[...]-bin-hadoop3.tgz et laisser le fichier s’enregistrer dans le répertoire Téléchargements.

Dans un terminal, décompressez l’archive .tgz dans le répertoire /opt/spark :

cd ~/Téléchargements
# cd est la commande permettant de changer de répertoire
# Déplacez-vous dans le dossier contenant l'archive de spark
tar xzf spark-3.3.0-bin-hadoop3.tgz
sudo mv spark-3.3.0-bin-hadoop3/ /opt/spark

Une fois-ceci fait, vous pouvez lancer Spark avec la commande :

/opt/spark/bin/spark-shell

Variables d’environnement

Une fois le JDK installé, il est ensuite nécessaire de spécifier la variable d’environnement JAVA_HOME afin que Spark sache où se trouve le répertoire d’installation de Java. Il est également utile de spécifier la variable d’environnement SPARK_HOME pour que Jupyter utilise la version préinstallée de Spark. Nous allons également configurer la variable d’environnement PATH qui permet au système d’exploitation de trouver l’exécutable Spark sans que nous ayons à spécifier le chemin complet vers celui-ci.

# Pour la session en cours
export PATH=$PATH:/opt/spark/bin/
# Pour ne plus avoir à le faire explicitement lors des prochaines sessions
echo "export PATH=$PATH:/opt/spark/bin/" >> ~/.bashrc
# Pour que le lancement de pyspark lance également jupyter
echo "export PYSPARK_DRIVER_PYTHON='jupyter'" >> ~/.bashrc
echo "export PYSPARK_DRIVER_PYTHON_OPTS='notebook'" >> ~/.bashrc

Une fois ceci fait, vous pouvez simplement lancer l’interpréteur Spark en langage Scala en ouvrant un nouveau terminal et en exécutant la commande :

spark-shell

Si spark-shell renvoie une erreur relative à JAVA_HOME, il vous faudra également spécifier cette variable d’environnement (ce n’est pas nécessaire sur toutes les distributions) :

# Remplacer 8 par la version de votre JDK
# Pour la session en cours
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk
# Pour ne plus avoir à le faire explicitement lors des prochaines sessions
echo "export JAVA_HOME=/usr/lib/jvm/java-8-openjdk" >> ~/.bashrc

Pour lancer l’interpréteur Spark en langage Python vous pouvez ouvrir un nouveau terminal et exécuter la commande :

pyspark

Enfin, pour que Jupyter utilise la bonne version de Spark (celle qui est préinstallée) il faut spécifier la variable SPARK_HOME :

# Remplacer si nécessaire /opt/spark par le chemin vers Spark sur votre ordinateur
# Pour la session en cours
export SPARK_HOME=/opt/spark
# Pour ne plus avoir à le faire explicitement lors des prochaines sessions
echo "export SPARK_HOME=/opt/spark" >> ~/.bashrc

Installation de Jupyter

Jupyter est un logiciel libre qui fournit une interface de programmation adaptée à l’analyse de données et à la visualisation. En résumé, Jupyter permet de créer des notebooks (cahiers, ou carnets) combinant code, figures et textes. Jupyter est compatible avec de nombreux interpréteurs et langages de programmation, notamment Python mais aussi Scala et R au travers d’extensions.

Le plus simple pour commencer avec Jupyter est d’installer la distribution Anaconda, à partir de https://www.anaconda.com/products/individual qui inclut, entre autres, Jupyter. Anaconda est disponible sous toutes les plateformes (Windows, Linux, MacOS).

Une fois ceci fait, il ne reste plus qu’à installer Apache Toree qui est une extension à Jupyter permettant à ce dernier de se connecter à Spark et d’interpréter le langage Scala.

Ouvrez un terminal puis entrez :

# Installation de l'extension Apache Toree
pip install toree
# Configuration de Toree et lien Jupyter/Spark
jupyter toree install --spark_home=$SPARK_HOME
# Vérification
jupyter kernelspec list

Si tout s’est bien passé, la dernière commande devrait vous afficher au moins une ligne contenant la mention apache_toree_scala.