BDLE – Notice

Oracle

Se rendre sur cette page

Spark

Utilisation en local

Pour le premier TME dont le but est de se familariser avec le langage Scala sur Spark, il est conseillé
d’utiliser la version de Spark installée en local.

Pour lancer ce dernier, il suffit de taper à l’écran
source /Infos/bd/config-spark
puis, pour avoir le fichier de config sur leur compte et le modifier s’ils le souhaitent :
cp /Infos/bd/prop-spark.conf .
puis
MASTER=local spark-shell --properties-file prop-spark.conf

14/10/09 16:10:14 INFO SparkILoop: Created spark context..
Spark context available as sc.
scala>
Vous pouvez alors saisir vos commandes en Scala et les exécuter.

Vous pouvez accéder à l’interface web via
http://localhost:4040

Utilisation à distance

A partir du deuxième TME, il vous sera demandé d’utiliser le Spark installé sur un cluster accessible depuis le LIP6.
Afin d’y accéder, vous allez devoir effectuer quelques configurations :
1-Se connecter sur le cluster en tapant
ssh -X -l login-ari ssh.ufr-info-p6.jussieu.fr -t ssh etuXY@hdnode1.common.lip6.fr
le numéro XY du compte et le mot de passe correspondant vous seront communiqués en TME
2-
a) Copier les fichiers de configuration dans voter compte etuXY

cp /home/hduser/bdle/config/configure-all .

cp /home/hduser/bdle/config/spark/prop-spark.conf .
et modifier, dans ce dernier, la ligne
spark.ui.port 40XY
en remplaçant XY avec votre numéro de compte (précéder par 0 si < 10)
b) tapez
source configure-all
3- Lancer Spark via la commande :
spark-tool

c’est un alias vers la commande complète :

spark-shell --properties-file prop-spark.conf

4- Lancer l’interface web accessible à partir de l’url

http://hdnode1.common.lip6.fr:8080

Vous accédez à la page principale affichant la liste des applications actives de tous les utilisateurs ( i.e. tous les binômes d’étudiants)

De plus, la page spécifique pour une application est:

http://hdnode1.common.lip6.fr:40XY
Cette page vous permet de naviguer dans les différents onglets Stages, Storage et Executors pour suivre la trace d’exécution de vos tâches.

Utilisation de HDFS

Page pour voir les fichiers stockés dans HDFS

http://hdnode1.common.lip6.fr:50070/dfshealth.jsp

Vous pouvez mettre des fichiers dans HDFS comme suit
hadoop fs -put /user/etuXY/
Vous également faire un cat comme suit
hadoop fs -cat /user/etuXY/

Pour plus d’informations, consulter DocHDFS.

Utilisation en mode batch
Il vous est possible d’utiliser Spark en mode batch, i.e en soumettant des .jar via la commande :

ssh etuXY@hdnode1.common.lip6.fr /spark-submit --deploy-mode client
--master --total-executor-cores 2
--class MaClasse MonProg.jar

Outre les variable stockant les adresses du serveur, les arguments de cette commande susceptibles de nous intéresser sont :
--total-executor-cores qui fixe le nombre de coeurs alloués pour l’exécution du programme
--class qui fournit le nom de l’application (dans notre cas, votre numéro de binôme) et le programme sous forme jar.

Remarques générales sur l’environnement Spark

uelques remarques pour faciliter l’utilisation :
1- L’auto-complete est supporté pour les variables et les méthodes.
2- CTRL+c a pour effet de tuer le shell et donc de perdre le contenu des variables déclarées jusqu’alors. Utiliser plutot CTRL + u/l/a/e comme sous le shell linux pour éditer vos commandes.
3- Prenez le temps de verifier les types produits au fur et à mesure de l’avancement

Premiers pas en Spark

Vous pourez charger un document texte via la commande
sc.textFile(chemin, nb)
sc est le contexte chargé lors du lancement du shell et nb est le nombre de partitions de la RDD

Vous pouvez tester un programme qui affiche les dix premières lignes d’un fichier texte stocké en hdfs sur le cluster.
1- Télécharger le programme Test1.scala et renommer-le avec votre numéro de binôme
2- Tapez scalac .scala pour compiler le programme
3- Tapez jar cvf .jar *.class pour générer le .jar
4- Tapez scp .jar etudiant@$clus pour copier .jar sur le cluster
5- Lancer la commande décrite ci-dessus en remplaçant MaClasse par et MonProg.jar par .jar

 

FAQ:

    • Comment convertir un type Scala en une RDD ?

Il est possible d’effectuer une telle conversion en invoquant la méthode parallelize()
de SparkContext sc et en passant en argument la variable de type Scala à convertir.
Exemple
scala> val b=Array.apply("1","2","3")
b: Array[String] = Array(1, 2, 3)
scala> val rddb=sc.parallelize(b)
rddb: org.apache.spark.rdd.RDD[String] = ParallelCollectionRDD[13] at parallelize at :14

  • La difference entre var et val = variable et constante d’ou l’interet d’utiliser var.
  • Attention, spark-shell incapable de détecter l’erreur d’affectation d’une constante

 

Divers

1- Télécharger l’archive TP-SPARK contenant les fichier conf.txt  et Test1.scala puis compiler le premier en tapant
source conf.txt

 

Retour