Spark pour les débutants : Installation sous Windows 10

English English

Bienvenue, nous allons découvrir dans ce tutoriel l’environnement de Spark  et l’installation sous Windows 10 et nous allons faire quelques essais avec Apache Spark, afin de voir ce que permet ce Framework et d’apprendre à l’utiliser. Le code de ce TP va être effectué en Java et Scala, qui pour ce que nous allons faire est beaucoup moins lourd que Java. Pas de panique si vous ne connaissez pas ce langage : nous n’allons utiliser que des fonctionnalités très simples de Scala, et des connaissances de base sur les langages fonctionnels vous suffiront. Si ça ne suffit pas, Google is your friend.

Demo Youtube


Pré-requis :

  • Vous aurez besoin du Java Development Kit (JDK) pour que Spark fonctionne en local. C’est la première étape décrite plus bas.
  • Install Scala (Optionnel)

Note : Ces instructions sont valables en environnement Windows. Si vous utilisez un système d’exploitation différent, vous devrez adapter les variables système et les chemins vers les répertoires en fonction de votre environnement.

Installation du JDK 

Téléchargez le JDK depuis le site d’Oracle, la version 1.8 est recommandée.. Vérifiez l’installation depuis le répertoire bin sous le répertoire JDK 1.7 en tapant la commande java -version. Si l’installation est correcte, cette commande doit afficher la version de Java installée.

Ajouter la variable JAVA_HOME dans les variables d’environnements système avec comme valeur: C:\Program Files\Java\jdk1.7.x

Ajouter dans la Variable PATH d’environnement système la valeur : C:\Program Files\Java\jdk1.7.x\bin

 

Tester avec le terminal cmd java -version.

Installation de Scala

Télécharger Scala à partir du lien: http://downloads.lightbend.com/scala/2.11.8/scala-2.11.8.msi
Définir les variables environnementales système suivante:

  • Variable: SCALA_HOME Valeur: C: \ Program Files (x86) \ scala
  • Variable système PATH Valeur: C: \ Program Files (x86) \ scala \ bin

Vérifiez sur cmd   scala , voir ci-dessous.

 

 Installation des applicatifs Spark

Téléchargez la dernière version depuis le site de Spark. La version la plus récente au moment de l’écriture de cet article est la 2.0.1. Vous pouvez aussi choisir une version spécifique en fonction d’une version Hadoop. J’ai moi-même téléchargé Spark pour Hadoop 2.7 et le nom du fichier est spark-2.0.1-bin-hadoop2.7.tgz. Décompressez le fichier dans un répertoire local, comme D:\Spark.

Télécharger ensuite Windows Utilities depuis le repo github https://github.com/steveloughran/winutils/tree/master/hadoop-2.7.1 et coller le sous D:\spark\spark-2.0.1-bin-hadoop2.7\bin . ajouter ces variable d’environements .

  • Variable: HADOOP_HOME Valeur: D:\spark-2.0.1-bin-hadoop2.7
  • Variable: SPARK_HOME Valeur: D:\spark-2.0.1-bin-hadoop2.7\bin
  • Variable système PATH Valeur: D:\spark\spark-2.0.1-bin-hadoop2.7\bin

Pour vérifier l’installation de Spark, positionnez-vous sur le répertoire de Spark et lancez le Shell avec les commandes suivantes :

spark-shell

 

 

Cette étape finie, vous pouvez sortir du shell :

:quit

Permièrre application Spark ‘Hello World’

  • Application Scala via le Shell

Une fois Spark installé et en cours d’exécution, vous pouvez exécuter des requêtes d’analyse avec l’API. Des commandes simples pour lire des données depuis un fichier texte et les traiter sont disponibles. Nous examinerons des cas d’utilisation plus avancés dans les futurs articles de la série. Commençons par utiliser l’API pour exécuter l’exemple connu du décompte de mots.

déplacer vous vers le répertoire de votre fichier, exemple :

cd F:\spark-2.0.1-bin-hadoop2.7

Ouvrez un Shell Scala, puis exécuter les commandes Scala suivante

bin\spark-shell


La fonction cache est appelée pour stocker les RDD créés en cache, de façon à ce que Spark n’ait pas à les recalculer à chaque fois, à chaque requête suivante. Notez que cache() est une opération lazy, Spark ne stocke pas la donnée immédiatement en mémoire, en fait, ceci sera fait lorsque l’action sera invoquée sur un RDD. Maintenant, nous pouvons appeler la fonction count pour voir combien de lignes sont présentes dans le fichier texte. txtData.count()

Les commandes suivantes réalisent le décompte des mots et affichent le compte à côté de chaque mot présent dans le fichier.

D’autres exemples d’utilisation de l’API peuvent être consultés sur le site de Spark, dans la documentation.

  • Application Java avec Eclipse et Maven

Pour utiliser l’API Spark en Java on vas choisir Eclipse comme IDE avec Maven. Commençant tout d’abord par télécharger Apache-Maven 3.3.9 depuis : http://apache.mivzakim.net/maven/maven-3/3.3.9/binaries/apache-maven-3.3.9-bin.zip et l’extraire par example sous D:\apache-maven-3.3.9
Ensuite ajouter les variables d’environnements suivantes :

  • MAVEN_HOME  valeur : D:\apache-maven-3.3.9
  • Path valeur : D:\apache-maven-3.3.9\bin

Vérifiez sur cmd, voir ci-dessous

 

Passons à l’installation de l’IDE Eclipse. Nous allons utiliser une version light d’Eclipse Luna et puis ajouter Manven à Eclipse.
Télécharger Eclipse depuis : https://eclipse.org/downloads/packages/eclipse-ide-java-developers/lunasr2
Extraire le contenue de l’archive dans un répertoire et lançer Eclipse.
Passons à l’intégration de Maven à Eclipse en suivants ces captures d’écrans ci dessus:

 

http://download.eclipse.org/technology/m2e/releases

Configuration du plugin m2e

Imposez à Eclipse d’utiliser votre installation de Maven en cliquant sur Add et choisissez votre répertoire Maven.

 

A présent vous avez terminer l’étape d’installation, on vas créer notre premier projet Spark en Java.

Ouvrez Eclipse et faire File => New projet => Sélectionnez Maven Project; voir ci-dessous.

 

 

Maintenant, ajoutez External Jars  à partir de l’emplacement D:\spark\spark-2.0.1-bin-hadoop2.7\lib ; voir ci-dessous.

Editer pom.xml. Coller le cod suivant.

Ecrivez votre code ou simplement coller le code suivant :


Générez le projet: Accédez à l’emplacement suivant (où nous avons stocké le projet) executer mvn package sur cmd

mvn package

 

Tester votre application avec Spark avec la commande suivante

spark-submit --class sparkWCexample.spWCexample.JavaWordCount --master local[2] F:\workspace\spWCexample\target\spWCexample-1.0-SNAPSHOT.jar

Et enfin voici le résultat obtenu.

 

Conclusion

Dans cet article, nous avons vu comment le Framework Apache Spark, avec son API standard, nous aide en matière de traitement et d’analyse de données. Spark s’appuie sur le même système de stockage de fichiers qu’Hadoop, il est donc possible d’utiliser Spark et Hadoop ensemble dans le cas où des investissements significatifs ont déjà été faits avec Hadoop.

Vous pouvez aussi combiner les types de traitements Spark avec Spark SQL, Spark Machine Learning et Spark Streaming comme nous le verrons dans les prochains articles. Grâce à différents modes d’intégration et adaptateurs Spark, vous pouvez combiner Spark avec d’autres technologies. Vous pouvez par exemple utiliser ensemble Spark, Kafka et Apache Cassandra ; Kafka pour le streaming de données entrantes, Spark pour le traitement et la base NoSQL Cassandra pour le stockage des résultats.

Gardez cependant à l’esprit que Spark n’est pas un écosystème encore complètement mature et que celui-ci nécessite des améliorations dans certains domaines comme la sécurité ou l’intégration avec des outils de BI.