Erste Schritte mit Data Science auf Kubernetes - Jupyter und Zeppelin

Es ist kein Geheimnis, dass die Datenanalyse-Community dazu übergegangen ist, mehr Open-Source- und Cloud-basierte Tools zu verwenden. Apache Zeppelin und Jupyter Notebooks sind zwei der beliebtesten Tools, die heute von Data Scientists verwendet werden. In diesem Blogbeitrag zeigen wir Ihnen, wie Sie Ilum einfach in diese Notebooks integrieren können, damit Sie Ihre Datenanalyse-Workloads auf k8s ausführen können.
Kubernetes für Data Science
Mit dem Aufkommen von Big Data und datenintensiven Anwendungen ist die Verwaltung und Bereitstellung von Data-Science-Workloads immer komplexer geworden. Hier kommt Kubernetes ins Spiel, da es eine skalierbare und flexible Plattform für den Betrieb interaktiver Computing-Plattformen wie Jupyter und Zeppelin bietet.
Die Data-Science-Community verwendet Jupyter-Notebooks schon seit langer Zeit. Aber wie sieht es mit der Ausführung von Data Science auf Kubernetes aus? Können wir Jupyter-Notebooks auf k8s verwenden? Die Antwort ist ja! In diesem Blogbeitrag erfahren Sie, wie Sie Data Science auf Kubernetes mit Jupyter Notebooks und Zeppelin ausführen können.
Wir werden interaktive Apache Spark- und Ilum-Sitzungen verwenden, um die Berechnung zu verbessern. Mit der Funktion für interaktive Sitzungen können Sie Spark-Code übermitteln und die Ergebnisse in Echtzeit anzeigen. Dies ist eine großartige Möglichkeit, Daten zu untersuchen und verschiedene Algorithmen auszuprobieren. Mit Apache Spark können Sie problemlos große Datenmengen verarbeiten, und die interaktive Sitzungsfunktion von Ilum macht es einfach, verschiedene Code-Schnipsel auszuprobieren und die Ergebnisse sofort zu sehen.
Ilum, Apache Livy und Sparkmagic
Ilum wurde entwickelt, um es Data Scientists und Ingenieuren leicht zu machen, Spark auf Kubernetes auszuführen. Wir glauben, dass wir durch die Vereinfachung dieses Prozesses den Benutzern den Einstieg in diese Technologien erleichtern und die Akzeptanz von k8s in der Data Science-Community erhöhen können.
Ilum implementiert die Livy-Rest-Schnittstelle, so dass sie als ein Ersatz für Apache Livy in jeder Umgebung. Wir zeigen, wie Sie Ilum in Sparkmagic integrieren können.
Sowohl Ilum als auch Livy können lang laufende Spark-Kontexte starten, die für mehrere Spark-Jobs von mehreren Clients verwendet werden können. Es gibt jedoch einige wichtige Unterschiede zwischen den beiden.
Ilum ist eine gut gepflegte und aktiv weiterentwickelte Software, die mit neuen Bibliotheken und Funktionen aktualisiert wird. Livy hingegen verfügt über eine robuste Community, die Integrationen mit vielen Anwendungen erstellt hat. Leider ist die Entwicklung von Livy ins Stocken geraten und daher ist Livy noch nicht bereit für die Cloud Native Transformation.
Ilum kann einfach nach oben und unten skaliert werden und ist hochverfügbar. Ein großer Vorteil, den Ilum gegenüber Livy hat, ist, dass es auf Kubernetes funktioniert. Es ermöglicht auch die Integration mit GARN .
Beide Tools bieten eine einfach zu bedienende Weboberfläche zur Überwachung von Spark-Clustern und Spark-Anwendungen, aber die von Livy scheint veraltet und sehr begrenzt zu sein.
Warum sollten wir also nicht die Vorteile von Ilum und Livius voll ausschöpfen?
Ilum-livy-proxy
Ilum verfügt über eine eingebettete Komponente, die die Livy-API implementiert. Es ermöglicht Benutzern, die Vorteile der REST-Schnittstelle von Livy und der Ilum-Engine gleichzeitig zu nutzen.
Wir arbeiten hart daran, Python Unterstützung von Ilum zusätzlich zu den bestehenden Scala unterstützen. Behalten Sie unsere Fahrplan um über unsere Fortschritte auf dem Laufenden zu bleiben.
Zeppelin und Jupyter
Zeppelin und Jupyter sind webbasierte Notebooks, die interaktive Datenanalysen und kollaborative Dokumentenerstellung in verschiedenen Sprachen ermöglichen.
Jupyter-Notebooks sind besonders bei Python-Benutzern beliebt. Das Projekt hat sich aus der IPython-Umgebung entwickelt, bietet aber jetzt Unterstützung für viele Sprachen.

Die Liste der Jupyter-Kernel ist riesig .
Zeppelin ist gut in Big-Data-Tools integriert. In Zeppelin ist es möglich, verschiedene Interpreter in einem Notebook zu kombinieren und sie dann in verschiedenen Absätzen laufen zu lassen.

Hier finden Sie eine Liste der Dolmetscher, die von Zeppelin unterstützt werden hier
Integration von Notebooks mit Ilum
Ilum einrichten
Beginnen wir mit dem Start des Apache Spark-Clusters auf Kubernetes. Mit Ilum ist das ganz einfach. Wir werden minikube für die Zwecke dieses Artikels verwenden. Als erstes müssen wir einen Kubernetes-Cluster ausführen:
minikube start --cpus 4 --memory 12288 --addons metrics-server
Sobald minikube läuft, können wir mit der Installation von Ilum fortfahren. Fügen wir zunächst ein Helm-Chart-Repository hinzu:
helm repo add ilum https://charts.ilum.cloud
Ilum enthält sowohl Zeppelin als auch Jupyter, diese müssen jedoch manuell in den Installationseinstellungen zusammen mit ilum-livy-proxy aktiviert werden.
helm install ilum ilum/ilum --set ilum-zeppelin.enabled=true --set ilum-jupyter.enabled=true --set ilum-livy-proxy.enabled=true
Es kann einige Zeit dauern, bis alle Pods initialisiert sind. Sie können den Status mit dem folgenden Befehl überprüfen:
kubectl Pods abrufen

Jupyter
Beginnen wir mit:
kubectl port-forward svc/ilum-jupyter 8888:8888
Ilum verwendet Sparkmagic, um mit Apache Spark in Jupyter-Notebooks zu arbeiten. Standardmäßig wird Jupyter (mit installierter Sparkmagic-Bibliothek) auf Port 8888 ausgeführt. Um auf den Server zuzugreifen, öffnen Sie Ihren Browser und gehen Sie zu localhost:8888. Sie müssen sich mit einem Passwort aus den Protokollen anmelden, oder Sie können die gesamte URL kopieren und einfügen, wobei "localhost" anstelle der Domain eingefügt wird.
kubectl logs ilum-jupyter-85f6d9bfb8-t642d

Sobald der Jupyter geöffnet ist, müssen wir das Python3-Notebook starten:

Führen wir nun die folgenden Befehle aus, um spark magic zu laden und einen Endpunkt einzurichten.
1. Zuerst müssen wir die Spark Magic-Erweiterung laden. Führen Sie dazu den folgenden Befehl aus:
%load_ext geschenke-geschenke.magics
2. Als Nächstes müssen wir einen Endpunkt einrichten. Ein Endpunkt ist einfach eine URL, die auf einen bestimmten Spark-Cluster verweist. Führen Sie dazu den folgenden Befehl aus:
%manage_spark

Bundled Jupyter ist sofort einsatzbereit und verfügt über eine vordefinierte Endpunktadresse, die auf livy-proxy verweist. Alles, was Sie tun müssen, ist, diesen Endpunkt aus der Dropdown-Liste auszuwählen und auf die Schaltfläche Sitzung erstellen zu klicken. So einfach ist das. Nun verbindet sich Jupyter über ilum-livy-proxy mit ilum-core, um eine Spark-Sitzung zu erstellen. Es kann einige Minuten dauern, bis der Funkenbehälter wieder einsatzbereit ist. Sobald sie bereit ist, erhalten Sie die Information, dass eine Spark-Sitzung verfügbar ist.

Sie können jetzt Ihre Ilum-Sitzung verwenden, um Spark-Code dafür auszuführen. Der Name, den Sie der Sitzung zugewiesen haben, wird in der Datei %%Funken-Magie , um den Code auszuführen.

Apache Zeppelin
Beginnen wir mit:
KUBECTL Port-Forward SVC/ILUM-Zeppelin 8080:8080
Ähnlich wie bei Jupyter haben wir auch das Zeppelin Notebook mit Ilum gebündelt. Bitte beachten Sie, dass sich die Zeit für die Erstellung von Containern aufgrund der erhöhten Bildgröße verlängern kann. Nachdem der Container erstellt und ausgeführt wurde, können Sie dann in Ihrem Browser unter http://localhost:8080 auf das Zeppelin-Notebook zugreifen.
- Um Code auszuführen, müssen wir eine Notiz erstellen:

2. Da die Kommunikation mit Ilum über livy-proxy abgewickelt wird, müssen wir livy als Standardinterpreter auswählen.

3. Öffnen wir nun die Notiz und fügen wir etwas Code in den Absatz ein:

Wie Jupyter hat auch Zeppelin eine vordefinierte Konfiguration, die für Ilum benötigt wird. Sie können die Einstellungen einfach anpassen. Öffnen Sie einfach das Kontextmenü in der oberen rechten Ecke und klicken Sie auf die Schaltfläche Dolmetscher.

Es gibt eine lange Liste von Interpretern und ihren Eigenschaften, die angepasst werden könnten.

Zeppelin bietet 3 verschiedene Modi zum Ausführen des Interpreterprozesses: freigegeben, bereichsbezogen und isoliert. Weitere Informationen zum Interpreterbindungsmodus hier .
Jupyter und Zeppelin sind zwei der beliebtesten Tools für Data Science und jetzt auf k8s verfügbar. Das bedeutet, dass Data Scientists jetzt Kubernetes verwenden können, um ihre Data-Science-Anwendungen zu verwalten und bereitzustellen.
Ilum bietet einige Vorteile für Data Scientists, die Jupyter und Zeppelin einsetzen. Erstens kann Ilum eine verwaltete Umgebung für Jupyter und Zeppelin bereitstellen. Das bedeutet, dass sich Data Scientists nicht um die Verwaltung ihres eigenen Kubernetes-Clusters kümmern müssen. Zweitens bietet Ilum eine einfache Möglichkeit, mit Data Science auf Kubernetes zu beginnen. Mit Ilum können Data Scientists einfach eine Jupyter- oder Zeppelin-Instanz starten und mit der Erkundung ihrer Daten beginnen.
Wenn Sie also ein Data Scientist sind, der mit Data Science auf Kubernetes beginnen möchte, sollten Sie sich Ilum ansehen. Mit Ilum können Sie schnell und einfach loslegen, ohne sich um die Verwaltung Ihres eigenen Kubernetes-Clusters kümmern zu müssen.
Insgesamt kann Data Science auf Kubernetes eine großartige Möglichkeit sein, den eigenen Workflow zu verbessern und mehr Zusammenarbeit zu ermöglichen. Es ist jedoch wichtig, mit einem grundlegenden Verständnis des Systems und seiner Funktionsweise zu beginnen, bevor man zu tief eintaucht. Vor diesem Hintergrund sind Jupyter und Zeppelin zwei großartige Tools, die Ihnen den Einstieg in Data Science auf Kubernetes erleichtern.

Ist Kubernetes wirklich notwendig für Data Science?
Kubernetes ist ein Open-Source-System zur Automatisierung der Bereitstellung, Skalierung und Verwaltung von containerisierten Anwendungen. Es gruppiert Container, aus denen eine Anwendung besteht, in logische Einheiten, um die Verwaltung und Erkennung zu vereinfachen.
Data Science ist ein Prozess der Extraktion von Wissen oder Erkenntnissen aus Daten in verschiedenen Formen, entweder strukturiert oder unstrukturiert, die verwendet werden können, um Entscheidungen oder Vorhersagen zu treffen.
Ist Kubernetes also wirklich notwendig für Data Science? Die Antwort lautet ja und nein. k8s kann zwar dazu beitragen, die Bereitstellung und Verwaltung von Data-Science-Anwendungen zu automatisieren, ist aber nicht unbedingt erforderlich. Data Scientists können weiterhin andere Methoden verwenden, um ihre Anwendungen bereitzustellen und zu verwalten. Kubernetes kann ihnen jedoch das Leben erleichtern, indem es eine einheitliche Plattform für die Verwaltung mehrerer Data-Science-Anwendungen bietet.