Zeppelin est le compagnon idéal de toute installation Spark. C’est un notebook qui permet de faire des analyses interactives au travers d’un navigateur web. Zeppelin permet d’exécuter du code Spark et de visualiser les résultats dans des tableaux ou graphiques. Pour en savoir plus, suivez le guide !

Installation

Vous trouverez toutes les explications sur le site suivant:

Installation zeppelin

Si comme moi vous avez installé une instance Spark autonome sans hadoop, je vous conseille de faire une « build » de Zeppelin à partir des sources. Il est nécessaire pour cela d’installer au préalable Maven.

Pour lancer la build de Zeppelin avec Spark 1.5.2, il faut exécuter la commande suivante:

mvn clean package -Pspark-1.5

Il faut ensuite de configurer Zeppelin en indiquant les paramètres pour se connecter à votre instance Spark. Cela se passe au niveau des fichiers zeppelin-env.sh et zeppelin-site.xml situés dans le répertoire conf de zeppelin. Dans mon cas, voici ce que ça donne:

Extrait de mon fichier zeppelin-env.sh

export MASTER=spark://spark.bd:7077
export SPARK_HOME=/root/spark_

** Extrait de mon fichier zeppelin-site.xml:**

<property>
<name>zeppelin.server.addr</name>
<value>0.0.0.0</value>
<description>Server address</description>
</property>
<property>
<name>zeppelin.server.port</name>
<value>8090</value>
<description>Server port.</description>
</property>

Laissez 0.0.0.0 pour l’adresse du serveur. Précisez ensuite le numéro de port que vous souhaitez.

Cela fait, on va pouvoir lancer Zeppelin. On commence par lancer Spark en mode cluster

start-master.sh
start-slave.sh spark://spark.bd:7077 –m 2G

Le slave doit être lancé avec suffisamment de mémoire pour exécuter Zeppelin. Si ce n’est pas le cas, vous pourrez accéder à vos notebook mais vous ne pourrez pas exécuter de traitements Spark.

Il faut ensuite lancer Zeppelin

cd /root/incubator-zeppelin
./bin/zeppelin-daemon.sh start

Vous pouvez contrôler le bon lancement de Spark et de Zeppelin en allant sur la page de monitoring de Spark (dans mon cas à l’adresse: « http://localhost:8080 » )

Spark Monitoring

Présentation de Zeppelin

Si tout s’est bien passé, vous pourrez accéder à la page d’accueil de Zeppelin en allant sur l’url « http://localhost:8090 »

Accueil Zeppelin

Vous pouvez ouvrir un notebook existant ou créer un notebook.

Traitement Spark

Le premier intérêt de Zeppelin est de pouvoir écrire du code Spark. A noter que les librairies principales sont (spark, sparkContext) sont automatiquement importées.

Vous pouvez donc écrire votre code directement dans l’une des fenêtres du notebook. Une fois le code écrit, il suffit de cliquer sur le triangle en haut à droite pour l’exécuter. La sortie s’affiche à la suite du code.

Traitement Spark

On bénéficie avec Zeppelin des avantages du spark-shell (exécution directe du code sans compilation) tout en ayant à l’écran l’ensemble des lignes de notre traitement (ce qui permet de le modifier simplement).

Zeppelin ne se limite pas aux fonctions de base de Spark. On peut faire tourner par exemple des algorithmes de Machine Learning en important les librairies nécessaires en début de script.

Visualisation graphique

Si notre traitement enregistre les données dans des DataFrames puis des tables, on peut ensuite les exécuter du code SQL et représenter les résultats sous forme de tableaux ou de graphiques.

Graphique Zeppelin

Bien sûr, les possibilités sont limitées: l’objectif de zeppelin n’est pas de concurrencer les cadors du secteur comme Qlik ou Tableau. L’intérêt est d’offrir au sein d’un même outil les capacités de traiter les données avec Spark sur un cluster puissant et de visualiser les résultats.

Commandes Shell

Zeppelin permet également d’exécuter des commandes shell au sein de la même interface. Pas besoin d’ouvrir un terminal et de se connecter à notre cluster Spark, on peut directement retrouver le chemin de nos fichiers de données ou encore visualiser les premières lignes.

Shell

Paramétrage

Il est possible de paramétrer les différentes fenêtres de notre notebook en cliquant sur la petite roue crantée en haut à droite.

On peut mettre un titre ou réduire la largeur de notre fenêtre

Paramétrage zeppelin

Voilà un exemple de rendu sur deux colonnes avec le code affiché et la sortie du traitement masquée:

Zeppelin notebook

Encore d’autres fonctionnalités

Un notebook peut s’exporter. Il intègre le code et les visuels s’ils ont été générés mais pas les données: le fichier généré est donc très léger.

On peut l’exporter pour sauvegarder le notebook sur son disque ou encore le transmettre à un ami par email qui pourra l’importer sur sa propre plateforme.

Sur une plateforme d’entreprise, on peut aussi partager son notebook en ajustant les droits mais je ne l’ai pas testé.

Autre fonctionnalité intéressante: le clonage qui permet de dupliquer son notebook pour faire des modifications sans risque.

Conclusion

Zeppelin est un outil vraiment prometteur. Il répond à un vrai besoin d’outil intégré pour tous les travaux de type Datalab avec Spark. En incubation jusqu’au mois de mai de cette année, il vient d’être adoubé par la communauté Apache. Preuve de son succès, il est déjà proposé sur la distribution Hortonworks. N’hésitez pas à le découvrir en consultant la page Apache du projet.