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)
où 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