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. Spark peut être installé sur UNIX (Linux, Mac OS) et Windows. Il est aussi disponible dans Cloudera 5 (CDH5).

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.

Procédures d’installation conseillées :

1. Sur Windows (XP, 7, 8, 8.1, 10), > 4 Go RAM : installer VirtualBox et créer une machine virtuelle VM CDH5 (qui inclut Spark)

2. Sur Windows (XP, 7, 8, 8.1, 10), < 4 Go RAM : installer VirtualBox et créer une machine virtuelle Linux avec java + scala + Spark

3. Sur Linux : installation directe de Spark (avec java + scala)

1. Sur Windows (XP, 7, 8, 8.1, 10), > 4 Go RAM

  1. Installation de VirtualBox sur Windows
  2. Installation de la machine virtuelle CDH5 QuickStart VM pour VirtualBox
  3. Lancement du gestionnaire de machines VirtualBox, démarrage de la machine virtuelle cloudera-quickstart-vm-..., ouverture d’une fenêtre terminal et vérification en lançant spark-shell.

Installation de VirtualBox sur Windows

Examiner les exigences de VirtualBox, notamment pour ce qui concerne l’unité centrale, la quantité de mémoire vive nécessaire et le système d’exploitation hôte accepté, sur https://www.virtualbox.org/wiki/End-user_documentation.

Télécharger VirtualBox à partir de https://www.virtualbox.org/wiki/Downloads, en choisissant la version la plus récente pour Windows (VirtualBox 5.1.28 for Windows hosts). Laisser s’enregistrer le fichier (VirtualBox-5.1.28-117968-Win.exe) dans le répertoire Téléchargements de Windows.

Exécution du fichier téléchargé (VirtualBox-5.1.28-117968-Win.exe). Garder un raccourci vers (le gestionnaire de machines) VirtualBox sur le bureau Windows.

Installation de la machine virtuelle CDH5 QuickStart VM pour VirtualBox

A partir de http://www.cloudera.com/content/www/en-us/documentation/enterprise/latest/topics/cloudera_quickstart_vm.html, télécharger la dernière version en suivant le lien Cloudera QuickStart VM Download. Choisir une version pour VirtualBox. On vous demandera de remplir un formulaire avant de vous donner accès au téléchargement. Laisser s’enregistrer le fichier dans le répertoire Windows Téléchargements.

Décompresser le fichier téléchargé, le résultat sera un fichier avec la terminaison .vmdk.

Lancer VirtualBox, créer une nouvelle machine virtuelle (bouton Nouvelle), choisir une quantité de mémoire d’au minimum 4 Go mais inférieure à la mémoire physiquement disponible sur votre ordinateur. Dans la fenêtre Disque dur, cocher Utiliser un fichier de disque dur virtuel existant et choisir dans le menu déroulant cloudera-...-.vmdk. Finaliser la création de la machine virtuelle. Dans Configuration, choisir au moins 80 Mo de mémoire vidéo (volet Affichage), choisir 1 ou plusieurs CPU en fonction du nombre de cœurs disponibles sur votre ordinateur (volet Système, onglet Processeur), choisir Presse-papier partagé : Bidirectionnel (volet Général, onglet Avancé).

Installation de Linux Mint

Nous avons choisi Linux Mint car il s’installe très facilement et arrive déjà bien équipé. Vous pouvez bien entendu installer une autre distribution Linux si vous la préférez.

Télécharger d’abord Linux Mint à partir de http://www.Linuxmint.com/download.php, choisir Cinnamon  64-bit ou KDE  64-bit suivant le type d’interface que vous préférez (par défaut, Cinnamon). Laisser s’enregistrer le fichier (Linuxmint-18.2-cinnamon-64bit.iso) dans le répertoire Téléchargements de Windows.

Lancer VirtualBox, créer une nouvelle machine virtuelle (bouton Nouvelle) de type Linux, Other Linux (64 bit), choisir une quantité de mémoire d’au minimum 512 Mo (de préférence 1 Go) mais inférieure à la mémoire physiquement disponible sur votre ordinateur. Dans la fenêtre Disque dur, cocher Créer un disque dur virtuel maintenant, dans la fenêtre Type de fichier de disque dur laisser coché VDI, dans la fenêtre Stockage sur disque dur physique laisser coché Dynamiquement alloué, dans la fenêtre Emplacement du fichier et taille laisser l’emplacement par défaut et choisir une taille d’au moins 16 Go, finaliser la création de la machine virtuelle.

Ensuite, dans VirtualBox, choisir la machine virtuelle nouvellement créée et cliquer sur le bouton Configuration, choisir au moins 80 Mo de mémoire vidéo (volet Affichage), choisir 1 ou plusieurs CPU en fonction du nombre de cœurs disponibles sur votre ordinateur (volet Système, onglet Processeur), choisir Presse-papier partagé : Bidirectionnel (volet Général, onglet Avancé).

Dans VirtualBox, choisir la machine virtuelle nouvellement créée et cliquer sur le bouton Démarrer. Choisir comme fichier de disque optique virtuel le fichier Linuxmint...iso téléchargé et cliquer sur le bouton Démarrer. Cliquer ensuite sur l’icône d’installation qui a l’aspect d’un CD (Install Linux Mint). Lors de l’installation, bien choisir la langue (Français) et le fuseau horaire.

Installation de la dernière version de Java

Il est probable qu’un java runtime environment récent soit déjà disponible, mais peut-être pas la dernière version du java development kit, qui est nécessaire. Vous avez le choix entre la version Oracle et Open JDK. Pour installer, par exemple, la version java Oracle, dans une fenêtre terminal sur Linux Mint entrer les commandes qui suivent $ :

$ sudo apt-add-repository ppa:webupd8team/java
$ sudo apt-get update
$ sudo apt-get install oracle-java8-installer

D’autres distributions Linux possèdent d’autres outils de gestion d’installation : yum (Red Hat, Fedora, CentOS, ...), yast (openSUZE), etc., avec leurs propres options, ou un utilitaire avec une interface graphique. Vous devrez vous en servir si vous avez préféré une autre distribution à Linux Mint.

Installation de la bonne version de Scala

Les versions Spark 2.x emploient par défaut Scala 11, les plus anciennes (Spark 1.3 à 1.6) utilisent Scala 10. Pour installer Scala 11, dans une fenêtre terminal sur Linux Mint entrer les commandes qui suivent $. Pour installer Scala 10 (seulement pour Spark 1.3 à 1.6), remplacez scala-2.11.8.tgz par scala-2.10.6.tgz.

$ cd ~/Téléchargements
$ wget http://www.scala-lang.org/files/archive/scala-2.11.8.tgz
$ sudo mkdir /usr/local/src/scala
$ sudo tar xvf scala-2.11.8.tgz -C /usr/local/src/scala/

Installation de la dernière version de Spark

Lancer un navigateur web dans Linux Mint. A partir de http://spark.apache.org/downloads.html, choisir la version souhaitée (ici 2.2.0), choisir Pre-built for Hadoop 2.7 and later, cliquer ensuite sur spark-...tgz (spark-2.2.0-bin-hadoop2.7.tgz) et laisser le fichier s’enregistrer dans le répertoire Téléchargements. Ensuite, dans une fenêtre terminal sur Linux Mint entrer les commandes qui suivent $.

$ cd ~/Téléchargements
$ sudo mkdir /usr/lib/spark
$ sudo tar xvf spark-2.2.0-bin-hadoop2.7.tgz -C /usr/lib/spark

Configuration et vérification

Il est nécessaire de donner les bonnes valeurs à des variables système et d’inclure les nouveaux répertoires dans le PATH afin de faciliter l’utilisation de Spark. Pour cela, lancer un éditeur de texte et copier dans sa fenêtre d’édition :

export JAVA_HOME=/usr/lib/jvm/java-8-oracle
export SCALA_HOME=/usr/local/src/scala/scala-2.11.8
export SPARK_HOME=/usr/lib/spark/spark-2.2.0-bin-hadoop2.7
export PATH=$SCALA_HOME/bin:$JAVA_HOME/bin:$SPARK_HOME/bin:$PATH

Enregistrer cela sous la forme d’un fichier nommé .bashrc dans votre répertoire maison. Si le fichier .bashrc existe déjà, il est conseillé d’ajouter les quatre lignes ci-dessus à la fin du fichier.

Ensuite, dans une fenêtre terminal sur Linux Mint entrer les commandes qui suivent $ :

$ source ~/.bashrc

# vérifier la version de java
$ java -version
# vous devriez obtenir la réponse suivante pour java Oracle :
java version "1.8.0_101"
Java(TM) SE Runtime Environment (build 1.8.0_101-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.101-b13, mixed mode)
# ou celle-ci pour Open JDK :
openjdk version "1.8.0_131"
OpenJDK Runtime Environment (build 1.8.0_131-8u131-b11-2ubuntu1.16.04.3-b11)
OpenJDK 64-Bit Server VM (build 25.131-b11, mixed mode)

# vérifier la version de scala
$ scala -version
# vous devriez obtenir la réponse
Scala code runner version 2.11.6 -- Copyright 2002-2013, LAMP/EPFL

# vérifier le fonctionnement de Spark
$ spark-shell
# vous devriez obtenir la réponse
spark-shell> ...
# avec un certain nombre d'avertissements (WARNings) sans gravité
# quittez spark-shell en entrant 'exit' ou 'Ctrl-D'

Installation de Hadoop 2.7

Hadoop n’est pas indispensable au bon déroulement des séances de travaux pratiques ou à la réalisation de projets sur des volumes de données réduits. Sans Hadoop, lors du lancement de spark-shell on obtient un avertissement spécifique, sans gravité.

Pour installer Hadoop, plusieurs opérations sont nécessaires :

  1. Créer une nouvelle clé SSH et l’ajouter à la liste des clés existantes (afin de permettre à Hadoop de se servir de SSH sans demander interactivement un mot de passe) :

    $ cd
    $ ssh-keygen -t rsa -P ''
    # ne pas entrer de 'filename', appuyer seulement sur la touche ENTREE
    $ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
    
  2. Installer le service SSH (sshd) :

    $ sudo apt-get update
    $ sudo apt-get install openssh-server
    # tester l'installation
    $ ssh 127.0.0.1
    

    Vous devriez obtenir, en réponse à la dernière commande,

    The authenticity of host '127.0.0.1 (127.0.0.1)' can't be established.
    ECDSA key fingerprint is 33:4f:b1:16:2c:65:06:52:fc:86:4d:02:4e:39:d4:24.
    Are you sure you want to continue connecting (yes/no)?
    
  3. Télécharger Hadoop (ici version 2.7.4) et décompresser les fichiers (si le site indiqué ne répond pas, choisir un autre miroir sur http://www.apache.org/dyn/closer.cgi/hadoop/common) :

    $ wget http://apache.mirrors.ovh.net/ftp.apache.org/dist/hadoop/common/hadoop-2.7.4/hadoop-2.7.4.tar.gz
    # Hadoop est décompressé dans le répertoire /usr/local/hadoop-2.7.4
    $ sudo tar zxvf ~/Téléchargements/hadoop-2.7.4.tar.gz -C /usr/local
    
  4. Modification des fichiers de configuration

    ~/.bashrc
    /usr/local/hadoop/etc/hadoop/hadoop-env.sh
    /usr/local/hadoop/etc/hadoop/core-site.xml
    /usr/local/hadoop/etc/hadoop/yarn-site.xml
    /usr/local/hadoop/etc/hadoop/mapred-site.xml.template
    /usr/local/hadoop/etc/hadoop/hdfs-site.xml
    

    Ouvrir ~/.bashrc avec un éditeur de texte et ajouter à la fin :

    #HADOOP VARIABLES START
    export HADOOP_INSTALL=/usr/local/hadoop-2.7.4
    export PATH=$PATH:$HADOOP_INSTALL/bin
    export PATH=$PATH:$HADOOP_INSTALL/sbin
    export HADOOP_MAPRED_HOME=$HADOOP_INSTALL
    export HADOOP_COMMON_HOME=$HADOOP_INSTALL
    export HADOOP_HDFS_HOME=$HADOOP_INSTALL
    export YARN_HOME=$HADOOP_INSTALL
    export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_INSTALL/lib/native
    export HADOOP_OPTS="-Djava.library.path=$HADOOP_INSTALL/lib"
    #HADOOP VARIABLES END
    

    Enregistrer et fermer le fichier.

    Ensuite, exécuter la commande suivante :

    $ source ~/.bashrc
    

    Les fichiers suivants devront être ouverts en tant que superuser pour pouvoir être modifiés. Il est possible d’utiliser pour cela l’éditeur nano : sudo nano nom-du-fichier. La commande Ctrl-O écrit le contenu modifié, la commande Ctrl-X quitte nano.

    Ouvrir /usr/local/hadoop/etc/hadoop/hadoop-env.sh avec l’éditeur de texte, localiser la ligne export JAVA_HOME=${JAVA_HOME} et remplacer =${JAVA_HOME} par =/usr/lib/jvm/java-8-oracle (même contenu que la ligne correspondante dans votre ~/.bashrc) ou le répertoire correspondant si vous avez préféré Open JDK.

    Enregistrer et fermer le fichier.

    Ouvrir /usr/local/hadoop/etc/hadoop/core-site.xml avec l’éditeur de texte et inclure entre <configuration> et </configuration> :

    <property>
       <name>fs.default.name</name>
       <value>hdfs://localhost:9000</value>
    </property>
    

    Enregistrer et fermer le fichier.

    Ouvrir /usr/local/hadoop/etc/hadoop/yarn-site.xml avec l’éditeur de texte et inclure entre <configuration> et </configuration> :

    <property>
      <name>yarn.nodemanager.aux-services</name>
      <value>mapreduce_shuffle</value>
    </property>
    <property>
      <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
      <value>org.apache.hadoop.mapred.ShuffleHandler</value>
    </property>
    

    Enregistrer et fermer le fichier.

    Ouvrir /usr/local/hadoop/etc/hadoop/mapred-site.xml.template avec l’éditeur de texte et inclure entre <configuration> et </configuration> :

    <property>
      <name>mapreduce.framework.name</name>
      <value>yarn</value>
    </property>
    

    Enregistrer et fermer le fichier.

    Ouvrir /usr/local/hadoop/etc/hadoop/hdfs-site.xml avec l’éditeur de texte et inclure entre <configuration> et </configuration> :

    <property>
      <name>dfs.replication</name>
      <value>1</value>
    </property>
    <property>
      <name>dfs.namenode.name.dir</name>
      <value>file:/usr/local/hadoop_store/hdfs/namenode</value>
    </property>
    <property>
      <name>dfs.datanode.data.dir</name>
      <value>file:/usr/local/hadoop_store/hdfs/datanode</value>
    </property>
    

    Enregistrer et fermer le fichier.

  5. Créer des répertoires nécessaires, avec les bons droits d’accès. Vous devriez connaître déjà votre_login. Pour connaître votre_groupe, entrer ll ~/. dans une fenêtre terminal ; pour une majorité de fichiers vous verrez deux noms, le premier est votre_login et le second votre_groupe.

    $ sudo mkdir -p /usr/local/hadoop_store/hdfs/namenode
    $ sudo chown -R votre_login:votre_groupe /usr/local/hadoop_store/hdfs/namenode
    $ sudo chmod -R 777 /usr/local/hadoop_store/hdfs/namenode
    $ sudo mkdir /usr/local/hadoop_store/hdfs/datanode
    $ sudo mkdir /usr/local/hadoop-2.7.4/logs
    $ sudo chown -R votre_login:votre_groupe /usr/local/hadoop-2.7.4/logs
    $ sudo chmod -R 777 /usr/local/hadoop-2.7.4/logs
    
  6. Formater le système de fichiers HDFS :

    $ hdfs namenode -format
    
  7. Démarrer Hadoop :

    # démarrer HDFS, répondre par 'yes' aux questions
    $ start-dfs.sh
    # démarrer YARN
    $ start-yarn.sh
    

    Pour arrêter Hadoop, il faut entrer :

    $ stop-yarn.sh
    $ stop-dfs.sh