Livres blancs Webinars

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. Il 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 !

Premiers pas avec Zeppelin

Installation de 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 cependant 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

Ensuite, il faut 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 cela 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

zeppelin.server.addr
0.0.0.0
Server address

zeppelin.server.port
8090
Server port.

Laissez 0.0.0.0 pour l’adresse du serveur. Ensuite, précisez 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: « https://localhost:8080 »)

Contrôler le bon lancement de Spark et de Zeppelin

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 suivante : « https://localhost:8090 »

Page d’accueil de 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.

Zeppelin - Traitement des données

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).

En outre, il 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-528x415

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 retrouver directement le chemin de nos fichiers de données ou encore visualiser les premières lignes.

scripts-528x385

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 alors mettre un titre ou réduire la largeur de notre fenêtre.

parametrage-528x334

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

notebook-param-528x229

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.

Un outil prometteur

Zeppelin est un outil prometteur. En effet, 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.

Business & Decision

Plus de 20 ans d’expérience dans la mise en place d’architectures dédiées à la valorisation de vos données grâce aux technologies BI et Big Data.

En savoir plus >

Commentaires (3)

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Votre adresse de messagerie est uniquement utilisée par Business & Decision, responsable de traitement, aux fins de traitement de votre demande et d’envoi de toute communication de Business & Decision en relation avec votre demande uniquement. En savoir plus sur la gestion de vos données et vos droits.

ove Le 14 mai 2018 à 17h24
comment applique les commandes Sql sur zepplin §??
Stéphane WALTER Le 14 mai 2018 à 17h44
Bonjour Olivier,

Pour pouvoir faire des requêtes sql sous zeppelin, il faut créer dans la partie script une dataframe puis appliquer la fonction createOrReplaceTempView() pour pouvoir l'utiliser comme une table.

Imaginons que l'on crée une dataframe df contenant des informations sur les personnes, il suffit ensuite d'écrire:
df.createOrReplaceTempView("Personne")

On peut alors créer dans un bloc spécifique préfixé par %sql sa requête sql.

En espérant que cela puisse t'aider.
ove Le 14 mai 2018 à 18h01
merci
pour et le comment sql s'applique normalement ???