Tags:
create new tag
, view all tags
-- CorentinSanchez - 2017-09-12

Il serait très utile de pouvoir utiliser le calcul distribué de Spark via un notebook Jupyter. Cela permettrait aux scientifiques d'exécuter directement des codes et des calculs très lourds sur le serveur/master Jupyter/Spark directement ici, à l'observatoire, près des données.

Pour cela j'ai trouvé plusieurs solutions.

SparkMagic

Il propose des noyaux pour le notebook pour utiliser Spark avec Scala, R, Python .

Il utilse un serveur web apache livy pour faire le lien entre le notebook et le cluster Spark.

J'ai eu des problèmes d'installation, les kernels ne démarrent pas.

https://github.com/jupyter-incubator/sparkmagic

Toree

Une autre façon d'installer des kernels spark, qui semble plus prometteuse

https://toree.apache.org/docs/current/user/installation/

Pyspark

C'est fonctionnel !

Pyspark est le noyau Spark pour python. on peut l'installer tout seul. Les deux autres méthodes l'utilisent.

Configuration :

#Env pour Spark dans Jupyter

export SPARK_HOME=/usr/lib/spark

export PYTHONPATH=$SPARK_HOME/python/:$PYTHONPATH

export PYTHONPATH=$SPARK_HOME/python/lib/py4j-0.10.4-src.zip:$PYTHONPATH

export PYSPARK_PYTHON=/usr/bin/python3.5

export PYSPARK_DRIVER_PYTHON=$PYSPARK_PYTHON

Dans le notebook, rajouter import Pyspark, et c'est parti !

Essai d'automatisation pour configurer l'environnement

http://jupyter-notebook.readthedocs.io/en/latest/config.html

$ jupyter notebook --generate-config

génère le fichier .jupyter/jupyter_notebook_config.py

Deux variantes du script : 1 ou 2 :

#import os
#import sys
1#import subprocess
1#subprocess.call('sqsub -np ' + '/home/sanchez/.jupyter/env.sh', shell=True)

2#os.environ['SPARK_HOME']="/usr/lib/spark/"
2#os.environ['PYTHONPATH']="$SPARK_HOME/python/:$PYTHONPATH"
2#os.environ['PYTHONPATH']="$SPARK_HOME/python/lib/py4j-0.10.4-src.zip:$PYTHONPAT"

dans .jupyter/env.sh

1export SPARK_HOME=/usr/lib/spark

1export PYTHONPATH=$SPARK_HOME/python/:$PYTHONPATH

1export PYTHONPATH=$SPARK_HOME/python/lib/py4j-0.10.4-src.zip:$PYTHONPATH

Mais ça ne marche pas !

Encore un autre essai

SOLUTION

Et avec Docker ?

Pourquoi pas lancer spark dans un docker swarm pour le déployer rapidement ?

il y a plusieurs images de spark, mais la soumission de taches (spark-submit) est compliquée avec le création d'un container de soumission pour chaque tâche.

Le notebook ne sait pas soumettre ses jobs ainsi

Topic revision: r7 - 2017-09-26 - CorentinSanchez
 
This site is powered by the TWiki collaboration platform Powered by PerlCopyright © 2008-2024 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback