.. _chap-installationSpark: ##################### 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 Zeppelin pour votre travail en autonomie (formation à distance et projet). Spark est multiplateforme et est peut s'installer sous Linux, MacOS et Windows. .. CDH5 arrive avec Hadoop/HDFS et de nombreux autres outils que Spark (Hive, Pig, Mahout, etc.), la version de Spark qui y est présente est 1.6.1. Aussi, CDH5 utilise 4 Go de RAM, votre ordinateur doit donc en avoir plus pour que Windows continue à fonctionner. .. Installé **sans** CDH5, Spark sera moins exigeant pour les ressources de votre ordinateur. Aussi, il vous sera possible d'utiliser une version plus récente, comme Spark 2.x, qui permet entre autres de se servir de façon plus étendue de SparkR. Pour le moment, l'installation de Hadoop/HDFS (sans CDH5) n'est pas encouragée (car plus complexe que celle de Spark) mais Hadoop n'est pas indispensable pour (re)faire les travaux pratiques ou réaliser les projets sur des volumes de données limités (ne nécessitant pas un stockage HDFS des données, ni la distribution des calculs sur plusieurs nœuds). .. Ci-dessous nous avons brièvement décrit des procédures d'installation conseillées pour différents systèmes d'exploitation. D'autres possibilités existent (par exemple, installation directe de Spark sur Windows 7 ou 8, ou sur MacOS, ou de CDH5 sur MacOS), la liste ci-dessous n'est pas exhaustive. Notez aussi que lors de l'installation vous pourrez rencontrer des difficultés spécifiques que nous n'avons pas rencontrées ; il sera nécessaire alors de chercher sur Internet des solutions à ces difficultés (divers forums abordent ce sujet). Nous ne disposons pas des ressources nécessaires pour vous assister individuellement dans l'installation. Nous détaillons ci-dessous la procédure d'installation de Spark et de Zeppelin pour Windows, OSX 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). - :ref:`installationDirecte` #. :ref:`installationJava` #. :ref:`installationSpark` #. :ref:`installationZeppelin` Nous vous proposons également une machine virtuelle préconfigurée que vous pouvez importer dans VirtualBox, indépendamment du système d'exploitation que vous utilisez. - :ref:`machineVirtuelle` .. .. _installationMacOS: .. .. 4. MacOS (basé sur UNIX) .. ======================== .. .. #. :ref:`installationJava` .. #. :ref:`installationScala` .. #. [:ref:`installationHadoop`] - plus complexe, pas indispensable .. #. :ref:`installationSpark` .. #. :ref:`configurationVerification` .. .. Noter qu'il est également possible d'installer VirtualBox sur MacOS et ensuite une machine virtuelle CDH5 pour VirtualBox. .. note:: Ce préambule ne concerne que l'installation de Spark en mode local, c'est-à-dire sur une seule machine et **sans** Hadoop. Ce fonctionnement est largement suffisant pour les travaux pratiques et le projet. Le déploiement et la maintenance d'un *cluster* Spark complet va bien au-delà du cadre de cours et nous vous invitons, si le sujet vous intéresse, à vous référer aux documentations respectives de `Hadoop `_ et `Spark `_. -------------------------------------------------------------------------------------------------------------------------- .. _machineVirtuelle: Utilisation d'une machine virtuelle =================================== .. note:: Si vous ne souhaitez pas utiliser une machine virtuelle, sautez cette section et rendez-vous à la partie :ref:`installationDirecte`. Installation de VirtualBox -------------------------- Avant de commencer, assurez-vous que le système d'exploitation que vous utilisez est géré par VirtualBox et que la quantité de mémoire vive dont vous disposez est suffisante pour virtualiser un système Linux dans de bonnes conditions. Ces informations peuvent se trouver sur la `page de documentation utilisateur de VirtualBox `_. Nous vous recommandons de passer par la virtualisation seulement si votre machine physique dispose de plus de 4 Go de mémoire RAM et en conséquence d'allouer au moins 2 Go de mémoire à la machine virtuelle. .. tabs:: .. group-tab:: Linux Sous Linux, il est souvent plus simple d'effectuer une :ref:`installationDirecte`. Si vous souhaitez absolument utiliser une machine virtuelle, c'est toutefois possible. Installez VirtualBox depuis votre gestionnaire de paquets, par exemple pour Debian/Ubuntu et dérivés : .. code-block:: bash sudo apt install virtualbox virtualbox-qt virtualbox-dkms Cette commande est à adapter pour les autres distributions. .. group-tab:: MacOS Vous pouvez télécharger VirtualBox sur la `page des téléchargements `_, en choisissant la version la plus récente pour Windows (VirtualBox 6.1.2 *for Windows hosts*). Téléchargez le fichier (``VirtualBox-6.1.2-135663-OSX.dmg``) puis exécutez-le afin d'installer VirtualBox. .. group-tab:: Windows Vous pouvez télécharger VirtualBox sur la `page des téléchargements `_, en choisissant la version la plus récente pour Windows (VirtualBox 6.1.2 *for Windows hosts*). Téléchargez le fichier (``VirtualBox-6.1.2-135663-Win.exe``) puis exécutez-le afin d'installer VirtualBox. Import de la machine virtuelle RCP216 ------------------------------------- Nous vous fournissons une machine virtuelle préinstallée sous Ubuntu 18.04 contenant tous les logiciels nécessaires au suivi du cours : - OpenJDK 8 - Spark 2.4.4 - Zeppelin 0.8.2 Cette machine virtuelle se télécharge en cliquant sur `ce lien `_ (7 Go). Une fois téléchargée, vous pouvez ajouter cette machine virtuelle à VirtualBox avec ``Fichier > Importer un appareil virtuel``. Il n'y a qu'un seul utilisateur ``user`` (mot de passe ``user``). .. note:: Vous pouvez également installer vous-même une nouvelle machine virtuelle avec Ubuntu et suivre les instructions de la partie :ref:`installationDirecte`. .. _installationDirecte: Installation directe de Spark et Zeppelin ========================================= .. _installationJava: Installation de Java -------------------- Spark et Zeppelin sont des logiciels écrits 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 probable 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 2.4 est la version 8. .. tabs:: .. group-tab:: Linux 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 : .. code-block:: bash 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. .. group-tab:: MacOS Pour OSX, vous devez télécharger la dernière version du *Java Development Kit* (JDK) gérée par Spark. Actuellement, il s'agit de la version 8 que vous pouvez obtenir sur la `page des téléchargements de Java SE 8 `_. Téléchargez et installez le *JDK* à partir du fichier ``jdk-8u241-macosx-x64.dmg``. .. group-tab:: Windows Sous Windows, vous devez télécharger la dernière version du *Java Development Kit* (JDK). Actuellement, il s'agit de la version 8 que vous pouvez obtenir sur la `page des téléchargements de Java SE 8 `_. Téléchargez et installez le *JDK* à partir du fichier ``jdk-8u241-windows-x64.exe``. .. _installationSpark: 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 (en février 2020, il s'agit de la version 2.4.5) et de sélectionner l'option *Pre-built for Apache Hadoop 2.7* dans le menu déroulant. Cliquer ensuite sur le lien ``spark-2.4.5-bin-hadoop2.7.tgz`` et laisser le fichier s'enregistrer dans le répertoire ``Téléchargements``. .. tabs:: .. group-tab:: Linux Dans un terminal, décompressez l'archive ``.tgz`` dans le répertoire ``/opt/spark`` : .. code-block:: bash 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-2.4.5-bin-hadoop2.7.tgz sudo mv spark-2.4.5-bin-hadoop2.7/ /opt/spark Une fois-ceci fait, vous pouvez lancer Spark avec la commande : .. code-block:: bash /opt/spark/bin/spark-shell .. group-tab:: MacOS Ouvrez l'application Terminal et décompressez l'archive ``.tgz`` dans le répertoire ``/opt/spark`` : .. code-block:: zsh 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-2.4.5-bin-hadoop2.7.tgz sudo mv spark-2.4.5-bin-hadoop2.7/ /opt/spark Une fois-ceci fait, vous pouvez lancer Spark avec la commande : .. code-block:: zsh /opt/spark/bin/spark-shell .. group-tab:: Windows Décompressez l'archive ``.tgz`` dans le répertoire de votre choix, puis dans l'invite de commandes Windows : .. code-block:: bash cd Téléchargements\spark-2.4.5-bin-hadoop2.7 bin\spark-shell.cmd 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. 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. .. tabs:: .. group-tab:: Linux .. code-block:: bash echo "export PATH=\$PATH:/opt/spark/bin/" >> ~/.bashrc Une fois ceci-fait, vous pouvez simplement lancer Spark en ouvrant un nouveau terminal et en exécutant la commande : .. code-block:: bash 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) : .. code-block:: bash # Remplacer 8 par la version de votre JDK echo "export JAVA_HOME=/usr/lib/jvm/java-8-openjdk" >> ~/.bashrc .. group-tab:: MacOS Dans le Terminal, entrez la commande suivante : .. code-block:: zsh echo "export PATH=\$PATH:/opt/spark/bin/" >> ~/.zshrc Une fois ceci-fait, fermez le terminal et ouvrez-en un nouveau. Vous pouvez désormais simplement lancer Spark en exécutant la commande : .. code-block:: bash spark-shell .. group-tab:: Windows Pour ce faire, ouvrir l'outil de configuration "Propriétés du système" (par exemple en cherchant « Variables d'environment » dans la barre de recherche Windows). Ouvrir la fenêtre "Variables d'environnement" puis créer une nouvelle variable d'environnement intitulée ``JAVA_HOME``. Faites pointer cette variable vers le répertoire où vous avez installé Java (généralement, dans ``Program Files\Java\jdk-8.x.x``). Modifiez ensuite la variable existante ``PATH``. Cliquez sur ``Nouveau`` puis ``Parcourir`` et sélectionnez le sous-répertoire ``bin`` dans votre installation de Spark. Une fois-ceci fait, vous pouvez ouvrir une nouvelle invite de commandes et exécuter Spark en lançant simplement : .. code-block:: bash spark-shell .. _installationZeppelin: Installation de Zeppelin ------------------------ Zeppelin est un logiciel libre du projet Apache (tout comme Spark) qui fournit une interface de programmation adaptée à l'analyse de données et à la visualisation. En résumé, Zeppelin permet de créer des *notebooks* (cahiers) combinant code et texte. Zeppelin est compatible avec de nombreux interpréteurs et langages de programmation tels que Spark, Pig mais aussi PySpark, SQL ou Flink. C'est un logiciel similaire au projet Jupyter pour Python, par exemple. Comme Spark, Zeppelin est distribué sous forme de binaire exécutable, quelle que soit la plateforme considérée. Le logiciel s'obtient sur `la page des téléchargements de Zeppelin `_. Vous pouvez récupérer soit la version complète avec tous les interpréteurs (~1Go) ou la version légère avec seulement Spark (~320 Mo). Téléchargez la version avec **tous** les interpréteurs. Une fois ceci fait, il suffit de décompresser l'archive et de lancer l'exécutable ``zeppelin`` : .. tabs:: .. group-tab:: Linux .. code-block:: bash cd ~/Téléchargements tar xzf zeppelin-0.8.2-bin-all.tgz sudo mv zeppelin-0.8.2-bin-all /opt/zeppelin echo "export PATH=\$PATH:/opt/zeppelin/bin/" >> ~/.bashrc Vous pouvez alors démarrer Zeppelin en exécutant la commande : .. code-block:: bash zeppelin-daemon.sh start # Pour arrêter Zeppelin, exécuter : # zeppelin-daemon.sh stop .. group-tab:: MacOS .. code-block:: zsh cd ~/Téléchargements tar xzf zeppelin-0.8.2-bin-all.tgz sudo mv zeppelin-0.8.2-bin-all /opt/zeppelin echo "export PATH=\$PATH:/opt/zeppelin/bin/" >> ~/.zshrc Vous pouvez alors démarrer Zeppelin en exécutant la commande : .. code-block:: zsh zeppelin-daemon.sh start # Pour arrêter Zeppelin, exécuter : # zeppelin-daemon.sh stop .. group-tab:: Windows Décompressez l'archive de Zeppelin dans le répertoire de votre choix puis ouvrez une invite de commandes : .. code-block:: bash cd Téléchargements/zeppelin-0.8.2-bin-all bin\zeppelin.cmd Comme précédemment pour Spark, vous pouvez ajouter le sous-répertoire ``bin`` de Zeppelin à votre variable d'environnement ``PATH`` pour lancer Zeppelin sans avoir à accéder au bon dossier au préalable. Une fois Zeppelin démarré (ce qui peut prendre un peu de temps), ouvrez un navigateur et entrez l'adresse `http://localhost:8080 `_ pour accéder à Zeppelin. Vos cahiers sont sauvegardés par Zeppelin dans le sous-répertoire ``notebook`` de son dossier d'installation. Enfin, dans les options de configuration de Zeppelin (clic gauche sur « anonymous » puis ``Interpreter > spark``) : .. tabs:: .. group-tab:: Linux Ajoutez une variable de configuration : ``user.dir`` de valeur ``/opt/zeppelin/``. .. group-tab:: MacOS Ajoutez une variable de configuration : ``user.dir`` de valeur ``/opt/zeppelin/``. .. group-tab:: Windows Ajoutez une variable de configuration : ``user.dir`` de valeur ``C:\\chemin\vers\zeppelin\``.