Datenfreak

Webbasierte Datenanalysen mit Apache Zeppelin

Webbasierte Datenanalysen mit Apache Zeppelin

Datenfreak

Webbasierte Datenanalysen mit Apache Zeppelin


Datenanalysen werden immer wichtiger. Denn Organisation, Analyse und Visualisierung von Daten lassen Muster erkennen und ermöglichen so wertvolle Einblicke. Besonders hilfreich sind hierbei webbasierte Notebooks wie Apache Zeppelin, da sich Datenanalysen damit interaktiv gestalten lassen. Zudem bleiben die Daten auf dem neuesten Stand, weil aktualisierte Daten per Knopfdruck heruntergeladen und Visualisierungen sowie Berechnungen an diese angepasst werden können.

Apache Zeppelin ist ein echtes Multitalent [1], denn es hilft dem Anwender dabei, sich beim Durchforsten der Daten einen ersten Überblick zu verschaffen. Große Datenmengen lassen sich einfach transformieren, beispielsweise in Strings festgehaltene Zahlen in einen passenden Datentyp konvertieren oder mehrere CSV-Dateien zu einer CSV-Datei kombinieren. Des Weiteren lassen sich Daten mit Zeppelin analysieren und visualisieren. Zudem beherrscht Zeppelin das Erstellen von simplen Formularen. All das geschieht mittels eines webbasierten Notebooks.

Zeppelin vs. Jupyter

Es gibt allerdings einen Konkurrenten für Apache Zeppelin – das Jupyter Notebook [2]. Obwohl sich beide für Datenanalysen eignen, unterscheiden sie sich stark. Apache Zeppelin ist innerhalb des Netzwerks verfügbar, sodass mehrere Benutzer zur selben Zeit an ihrem eigenen Notebook herumwerkeln können. Jupyter Notebook wird hingegen lokal auf dem eigenen Rechner betrieben. Was das Erstellen von Diagrammen angeht, lassen sich mehrere Interpreter innerhalb eines Zeppelin Notebooks benutzen, während Jupyter lediglich einen Interpreter innerhalb des Notebooks erlaubt. Die Berichterstellung erfolgt bei beiden Notebooks mittels Markdown, sodass der Text formatiert ausgegeben wird, der Code jedoch verschwindet.

Zeppelin verfügt über mehr Einstellmöglichkeiten. So lässt sich wahlweise der Code samt Text ausgeben oder ausschließlich der formatierte Text einblenden. Außerdem kann ein Absatz (Paragraph) für die Ausgabe von Text in HTML genutzt oder mit der eigenen Webseite verlinkt werden, um beispielsweise ein Kuchendiagramm in einen Blogpost zu integrieren [3].

Zeppelin ermöglicht das Abspeichern des Notebooks in ein eigenes Format, .zpln, sowie als Jupyter-Notebook-Datei, .ipynb. Unter Jupyter lassen sich die Notebooks nicht nur in Dateien vom Typ .ipynb exportieren, sondern die gesamte Datei kann als HTML exportiert werden. Das ist vor allem bei viel Code leserlicher, da unter anderem keine störenden Zeilenumbrüche wie im PDF vorkommen.

In Sachen Sicherheit bietet Apache Zeppelin etliche Einstellungsmöglichkeiten. So haben etwa nur ausgewählte Benutzer Zugriff auf den Zeppelin-Server oder die Authentifizierung der Benutzer wird via LDAP/Active Directory geregelt. Zudem lassen sich SSL und Kerberos einstellen.

Der größte Vorteil von Zeppelin gegenüber Jupyter besteht darin, dass mehrere Paragraphs in einer einzigen Zeile ausgeführt werden können. Demgegenüber beherrscht Jupyter die Autovervollständigung von Code und beinhaltet zahlreiche Tastenkürzel.

Zusammengefasst richtet sich Zeppelin vor allem an ganze Firmen, da es LDAP-Integration sowie Rechteverwaltung zur Verfügung stellt. Jupyter erfordert dank seiner lokalen Nutzung keine aufwendige Konfiguration. Zusätzlich verfügt Jupyter über zahlreiche Erweiterungen und Integrationen, was es vor allem bei Nutzern von Analyseprogrammen bezüglich Machine Learning und künstlicher Intelligenz beliebt macht [4].

Installation und Konfiguration

Ihr könnt die Binärpakete der aktuellen Version (0.10.1) von Apache Zeppelin auf der Homepage herunterladen und nach dem Entpacken den Zeppelin-Server konfigurieren. Um die Konfiguration einfach zu halten, wechselt ihr ins Unterverzeichnis zeppelin-0.10.1-bin-all/conf und kopiert die Datei shiro.ini.template nach shiro.ini. Dasselbe macht ihr mit den restlichen Dateien, die auf .template enden und sich im Unterordner conf befinden. Allerdings ist die Datei shiro.ini die einzige, die ihr anpassen solltet, falls Zeppelin lediglich im heimischen Netzwerk zum Einsatz kommt. Die Konfigurationsdatei shiro.ini gliedert sich in die vier Abschnitte users, main, roles und urls. Im Abschnitt users tragt ihr die Benutzer ein, die sich am lokalen Zeppelin-Server einloggen dürfen, sowie deren Passwörter (Listing 1).

Listing 1

[users]
admin = password1, admin
user1 = password2, role1, role2
user2 = password3, role3
user3 = password4, role2

Die Rollen sind im Abschnitt roles bereits definiert und brauchen für die schnelle Lösung nicht angepasst zu werden. Den Abschnitt main lasst ihr einfach unverändert. Im letzten Abschnitt, genannt urls, könnt ihr angeben, ob sich Benutzer anonym (siehe anon in Listing 2) einloggen dürfen. Für eine schnelle und einfache Form der Authentifizierung, bei der die Benutzernamen sowie Passwörter im Klartext definiert sind, sollte authc als Authentifizierungsmethode gewählt werden. Aus diesem Grund kommentiert ihr alle Zeilen aus, in denen authc vorkommt.

Listing 2

[users]
/api/version = anon
/api/cluster/address = anon
/api/interpreter/setting/restart/** = authc
/api/interpreter/** = authc, roles[admin]
/api/notebook-repositories/** = authc, roles[admin]
/api/configurations/** = authc, roles[admin]
/api/credential/** = authc, roles[admin]
/api/admin/** = authc, roles[admin]
/** = anon
/** = authc

Um euch am Zeppelin-Server anzumelden, startet ihr den Server wie folgt:

zeppelin-0.10.1-bin-all/bin/zeppelin-daemon.sh start

Sofern die Standardeinstellungen der Konfiguration übernommen worden sind, könnt ihr via localhost:8080 auf Zeppelin zugreifen.

Downloads automatisieren

Ihr könnt zum Beispiel ein Notebook erstellen, um Daten herunterzuladen, die die Grundlage einer Datenanalyse bilden. Aktuell stehen zwar über 30 Interpreter zur Verfügung, doch beschränkt sich dieser Artikel auf Python sowie Markdown. Denn unter Python lässt sich in einem Paragraph eine Variable definieren, die in einem der darauffolgenden Paragraphs weiterbenutzt wird. Mit Java ist das nicht möglich.

Auf der Startseite von Zeppelin klickt ihr auf create new note und wählt im Pop-up-Fenster einen Interpreter aus. Anschließend vergebt ihr einen Namen für das Notebook. Beim Herunterladen von Daten geht ihr im Prinzip wie bei einem Python-Skript vor. Zuerst importiert ihr in einem Paragraph die erforderlichen Bibliotheken (Listing 3).

Listing 3

%python
import os
import requests
import glob
import zipfile
import pandas as pd

Die erste Zeile in Listing 3 besagt lediglich, dass als Interpreter Python eingesetzt wird. Dann...