Welches ist die minimal benötigte Infrastruktur, um sich mit Big-Data-Technologien vertraut zu machen. Dieser Artikel gibt Antworten in Form eines FAQ und berücksichtigt insbesondere den Aspekt des verteilten Rechnens und der horizontalen Skalierbarkeit.
Q: Laufen Big-Data-Tools auf Raspberry Pi?
A: Ja, das funktioniert und eignet sich bestens zum Kennenlernen der Big Data Technologien. Das Bild oben zeigt ein Raspberry Pi Cluster für eine Stream Analytics Pipeline mit den folgenden Komponenten:
16 Raspberry Pi Model 3B mit 16 GB SD-Karten, und zwar
-
3 x Apache ZooKeeper
-
4 x Apache Kafka
-
5 x Apache Spark
-
3 x Apache Cassandra
-
1 x Prometheus, Grafana, Kafdrop
Zusätzlich 1 Raspberry Pi Model 4 mit 4GB und 16 GB SD-Karte für
-
und als Router
Big Data Streaming mit Raspberry Pi
Siehe auch:Q: Geht es auch mit mehr Nodes?
A: Die Big Data Tools sind auf auf horizontale Skalierung, also scale-out, ausgerichtet. Je größer die Rechenlast ist, also je mehr Daten verarbeitet werden müssen, umso mehr Rechner – also Nodes – werden ins Cluster aufgenommen.
In der oben beschriebenen Pipeline ist dies sinnvoll für Apache Kafka, Apache Spark, Apache Cassandra und je nach Zweck der Pipeline auch für Redis. Da können auch Hunderte von Nodes im Einsatz sein. Ob das für eine Trainingsumgebung mit Raspberry Pi noch sinnvoll ist, sei dahingestellt.
Apache ZooKeeper ist ein Koordinations Service für verteilte Systeme. Als solcher sollte er auf mehreren Nodes deployed werden, drei bis fünf werden meistens reichen.
Für die Monitoring-Tools Prometheus, Grafana Kafdrop reicht ein Node.
Q: Geht es auch mit weniger Nodes?
A: Hier stellt sich die Frage, was mit dem Trainings-Cluster erreicht werden soll. Geht es darum, beispielsweise Apache Kafka oder Apache Spark als verteilte Systeme kennen zu lernen, dann würde ich mindestens drei Nodes aufsetzen. Denn so lässt sich der Ausfall eines Nodes gerade noch simulieren.
Geht es darum, das Zusammenspiel von zwei dieser Komponenten, beispielsweise Apache Kafka oder Apache Spark, zu erproben, dann würde ich mit mindestens sechs Nodes arbeiten wollen. Angesichts dessen, dass all diese Systeme auch im Single-Node-Modus laufen, könnte die Trainingsumgebung weiter verkleinert werden. Mit weniger als fünf Nodes sehe ich kein lehrreiches Experiment mehr, um die Eigenschaften der verteilten Systeme kennen zu lernen.
Q: Würde sich auch VirtualBox oder eine andere Virtualisierung eignen?
A: Diese Frage ist positiv zu beantworten. Aber: Für die Anzahl der gleichzeitig laufenden virtuellen Maschinen gelten dieselben Überlegungen wie für die minimal notwendige Anzahl Raspberry Pi (siehe oben). Mindestens fünf virtuelle Maschinen sollten gleichzeitig auf dem Host-System laufen können. Auf einem guten Laptop ist das machbar.
Ich habe die Grenze auf meinem Win-10-Laptop mit 16 GB RAM und VirtualBox ausgetestet. Dazu habe ich alle nicht notwendigen Windows-Programme geschlossen und eine VM nach der anderen gestartet. Auf den VMs lief lediglich Ubuntu 18.04 für Server. Weitere Vorsichtsmaßnahmen habe ich keine getroffen.
Beim Starten der zehnten VM wurde der Bildschirm schwarz. Der Mauszeiger war noch zu sehen und reagierte. Es gelang mir dann, im Dunkeln tappend, einige der VMs zu schließen. Das System hat sich erholt, das Bild kehrte zurück. Das spricht doch sehr für die Robustheit der VirtualBox, die ja kostenlos erhältlich ist. Das Minimum von 5 VMs läuft auf meinem Laptop gut, auch mit gestarteten Big-Data Services.
Q: Funktioniert VirtualBox mit allen Prozessoren?
A: VirtualBox funktioniert mit gängigen Intel-Prozessoren, allgemeiner mit AMD-Prozessoren. Neuere Mac-Produkte verbauen den ARM-basierten M1-Prozessor. VirtualBox funktioniert dort nicht. Natürlich gibt es eine Alternative mit Parallels – einer ARM-basierten Virtualisierung. Ist die virtuelle Maschine mit Linux installiert, dann funktioniert das weitere Aufsetzen des Clusters für beide Virtualisierungssoftwaren identisch.
Q: Sind auch Cloud-Angebote sinnvoll einsetzbar?
A: Cloud-Dienstleister bieten ja out-of-the Box Big Data Lösungen als SaaS (Software as a Service) an. Das ist an sich eine wunderbare Sache. Doch wird man damit die Technologien nicht in gleichem Maße kennenlernen, wie wenn man sie selbst aufbaut.
Doch die Cloud kennt ja verschiedene Ausprägungen – als IaaS, also Infrastructure as a Service, können wir in der Cloud virtuelle Maschinen beziehen. Mit minimalen Ressourcen sind sie gut erschwinglich. Dort installieren wir mit ein paar Mausklicks Ubuntu Server und können anschließend dieselben Trainingseinheiten durchführen, wie mit VirtualBox oder Raspberry Pi. Die Kosten sollte man im Auge behalten und die VMs jeweils stoppen, wenn man sie nicht benötigt.
Q: Wie sieht es aus mit Docker und Kubernetes?
A: Eine berechtigte Frage: viele der Big Data Tools sind Cloud-Native, also für Kubernetes gebaut. Andere Tools werden von ihren Communities gerade Kubernetes-tauglich gemacht. Aus meiner Sicht stellt Kubernetes eine zusätzliche Schicht dar, für die ein Verständnis aufgebaut werden muss.
Ich empfehle darum, Kubernetes separat von den “klassischen” Big Data Tools kennen zu lernen. Dieses nimmt dann die Rolle eines Cluster Managers dar, den viele der Tools von Haus aus in der einen oder anderen Form mitbringen. Docker nimmt man im Rahmen der Big-Data-Thematik weniger wahr und die Nachricht, dass Kubernetes Docker in kublets nicht mehr unterstützt, hat zusätzlich für Verunsicherung gesorgt. Wer mit Docker Compose ein Docker File erstellen möchte, muss sowieso zuerst die Zusammenhänge kennen. So gesehen ist Docker ein zusätzlicher Schritt wenn es um die Einarbeitung in die genannten Big-Data-Tools geht.
Fazit
Big Data Analyse und Verarbeitung bedeutet zwangsläufig, dass die Rechenlast auf mehrere Server verteilt werden muss. Will man diese Technologien kennen lernen, dann benötigt man eine verteilte Umgebung, also ein Cluster. Für den Trainingsbetrieb gibt es mehrere Alternativen:
- VirtualBox setzt ein gut ausgestattetes Laptop voraus und ist abgesehen davon kostenlos.
- IaaS in der Cloud ist ebenfalls eine gute Variante – die Kosten müssen im Auge behalten werden.
- Mit Raspberry Pi kann ebenfalls ein Cluster aufgebaut werden. Die anfängliche Investition wird sich auszahlen, wenn das Training länger dauert. Und zudem können diese Kleincomputer später für andere Projekte eingesetzt werden.
Das Ergebnis: eine minimale und bestens geeignete Trainingsumgebung, um Hands-On die einzelnen Tools zu deployen, zu hinterfragen und zu optimieren.
Die Latenz ist erstaunlich gering und das Cluster läuft erfreulich stabil.