Daten zu analysieren ist für Unternehmen schon immer von großer Bedeutung gewesen. Ob es nun die klassischen Excel Spreadsheets sind, Hadoop-Plattformen oder Spark-basierte Cluster: wichtig ist es immer, die entsprechenden Analysen möglichst schnell und zuverlässig durchzuführen. Doch genau da liegen in der Regel auch schon viele Probleme.
Wenn mehrere Akteure zusammen auf einer Plattform arbeiten, dann gibt es immer wieder Probleme, die unterschiedlichste Ursachen haben können. Dies kann das nicht ausreichende Wissen von Data Scientists sein, ein schlecht konfiguriertes Cluster vom Data Engineer, nicht korrekt und genau spezifizierte Anwendungsfälle vom Business etc. Die wichtigen Aufgaben, die erledigt werden müssen, um die Analyse von Daten durchführen zu können, sind immer identisch. Dennoch liegt der Fehler oftmals im Detail. Das Problem ist hierbei jedoch meist, dass heutzutage dann mehr als ein Team in der Arbeit blockiert ist, weil das Cluster nicht mehr reagiert, da alle Ressourcen in Verwendung sind. Dies ist gerade in großen und verteilten Teams ein sehr schwieriges Problem. Abhilfe schaffen können einige neuere Ansätze.
Spark - Mainstream für Data Analytics
Spark hat sich über die letzten Jahre hinweg neben R und Python als eine der Hauptprogrammiersprachen für Datenanalyse etabliert. Viele Open-Source-Projekte und Meetups, aber auch viele Unternehmen setzen auf Spark oder bieten eigene Dienste rund um das Ökosystem an. Die Sprache besitzt viele Vorzüge und eine Nähe zu Python und Java, was für die Adaption nicht unwichtig war. Mit Spark kann man auch viele skalierbare Machine Learning-Modelle implementieren, die oftmals auf anderen Frameworks nicht nativ vorhanden sind oder nicht skalieren. Hinzu kommt, dass man auch moderne Machine-Learning- oder Deep-Learning-Frameworks auf Spark laufen lassen kann, wie beispielsweise TensorFlow.
Freiheit und Flexibilität
Wer seine Daten immer noch gerne innerhalb der eigenen vier Wände halten möchte oder muss und nicht auf die Public Cloud setzt, der hat im eigenen Rechenzentrum oftmals die Qual der Wahl, wie man die vielen neuen und auch älteren Anwendungen betreiben soll. Eine gängige Wahl ist es dabei, die Anwendungen in Microservices zu konzipieren und diese dann in Containern zu betreiben.
Die Orchestrierung und das Management von Containern sind zunehmend in den Händen von Kubernetes. Das Open-Source-Projekt ist eines der heißesten Projekte seit Jahren. Daher gibt es mittlerweile ein großes Ökosystem rund um Kubernetes und ebenfalls viele Dienstleister, die beim Aufbau und Betrieb - auch lokal in Deutschland - helfen. Daher ist die Idee relativ naheliegend, dass wenn man sowieso schon ein oder mehrere Kubernetes Cluster betreibt, diese dann auch entsprechend für die Analyse von Daten mittels Spark nutzt. Die Vorteile sind offensichtlich:
einheitliche Infrastruktur-Administration
Automatische Skalierung
Bessere Ausnutzung der Ressourcen
Bessere Isolation der einzelnen Datenanalysen
Logging, Monitoring, Quota-Management, Zugriffskontrolle etc.
Daher ist Kubernetes als eine weitere Clustermanagement-Lösung neben YARN und Mesos eine sinnvolle Ergänzung. Das Open-Source-Projekt Apache Spark on Kubernetes hat Kubernetes als Clustermanager integriert, wodurch es möglich ist, Spark Jobs auf einem Kubernetes-Cluster auszuführen. Ein anderes Projekt (apache-spark-on-k8s/kubernetes-HDFS) sorgt aktuell für die Integration von HDFS, um den Zugriff auf die Daten unabhängig vom einzelnen Job global verfügbar zu machen. Eine der wichtigen Hürden, die Datenlokalität, ist dabei bereits genommen worden.