Veröffentlicht am

Big Data Training mit minimaler Infrastruktur

Infrastruktur Big-Data Training

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:

Big-Data-Cluster mit Raspberry Pi

16 Raspberry Pi Model 3B mit 16 GB SD-Karten, und zwar

Zusätzlich 1 Raspberry Pi Model 4 mit 4GB und 16 GB SD-Karte für

SELRES_0.35861486414680643SELRES_0.26042752953760684Siehe auch: Big Data Streaming mit Raspberry Pi

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.

Trainings-Cluster Raspberry Pi
  • Chatbot als Lernassistent
  • Prompt Engineering Personas und Wiederholungen
  • AI-Engineering-Fachglossar
  • EBook Tutorial: Cluster aus virtuellen Maschinen
  • Ebook: Apache ZooKeeper
  • Ebook: Realtime Streaming Pipelines
  • LSM-Trees: Log Structured Merge Trees
  • Aufbau einer Enterprise Search
  • Zeit Stream Analytics
  • B-Tree-Index in Datenbanken
  • Ordering Guarantee in Apache Kafka
  • CAP Theorem
  • MapReduce Funktionale Programmierung
  • Konzepte des HDFS
  • Optimistisches Concurrency Control
Veröffentlicht am

Big Data Streaming mit Raspberry Pi

Big Data Taining Raspberry Pi

Big Data Streaming mit Raspberry Pi

Schon erstaunlich, dass Big Data Technologien auch auf Winzlingen wie Raspberry Pi funktionieren. 

Nachdem ich immer mit gut ausgestatteten Rechnern gearbeitet habe, reizte mich das Experiment, die Big-Data Software mit unter Minimalbedingungen zum Laufen zu bringen. 

Das Ergebnis ist verblüffend – die Latenz ist viel geringer, als ursprünglich vermutet.

Und so funktioniert das erste Experiment

Ein simpler Generator schreibt in einer Endlosschleife einen String in ein Apache Kafka Topic. Dieses wird von Apache Spark analysiert und zwar werden die Events pro Minute gezählt. Spark die Ergebnisse in Apache Cassandra einem Wide Column Store und auch in Redis, einer In-Memory Datenbank. Mit Hilfe von Apache Zeppelin werden mit wenigen Klicks übersichtliche Auswertungen visualisiert.

Dazu gehören diese Open Source Tools

Mit dabei ist auch die Überwachung: Prometheus und Grafana sind ein bewährtes Gespann und monitoren Kafka, Zookeeper und Redis. Spark bringt ein eigenes – und seit Spark 3 sehr übersichtliches – Monitoring mit.

 

Das Failover-Verhalten kann mit der Trainingsumgebung gut überprüft und optimiert werden. Der Netzwerkstecker wird herausgezogen und bald zeigen die Monitoring-Tools das Fehlen des Nodes an.

Dieses Trainings-Cluster läuft auf 16 Raspberry Pi. Dazu verwendete ich Model 3 B mit je 1GB RAM und 4 Cores. 16 GB SD-Karten sind ausreichend für viele Experimente. Ein zusätzliches Raspi wurde als Router für dieses Netzwerk aufgesetzt und es bot sich an, Redis auch dort laufen zu lassen.

Die Visualisierung der Auswertung mit Apache Zeppelin wollte auf Model 3B nicht laufen – Antwortzeiten von mehr als 30 Minuten sind halt nicht gerade prickelnd.

Ein Raspberry Pi Model 4B schaffte Abhilfe. 2GB RAM reichen für einfachere Analysen ganz gut. Ich habe 8GB RAM beschafft und so laufen Zeppelin, Redis und der Router problemlos auf einem Gerät.

Das nächste Experiment

Ich habe bisher erfolglos versucht, in dieser Pipeline eine Backpressure zu provozieren. Ein Generator, der auf demselben Node läuft wie auch der Router, und ungebremst kleine Events in die Pipeline pumpt, schafft es nicht, einen Rückstau zu verursachen. Vielleicht wird es klappen mit mehreren Generatoren oder auch mit einer viel komplexeren Auswertung.

Fazit

Die untersuchte Big Data Software lässt nicht nur ein Scale-Up zu sondern auch ein Scale-Down. Auf minimal ausgestatteten Single-Board Computern wie Raspberry Pi funktioniert die Software einwandfrei und erstaunlich schnell. Gerade auf dieser Minimal-Infrastruktur werden die Grenzen der verarbeitbaren Datenmengen relativ schnell erreicht. So ist es möglich, das Verhalten der Pipeline unter “Extrembedingungen” kennen zu lernen und zu tunen.

Trainings-Cluster Raspberry Pi
  • Chatbot als Lernassistent
  • Prompt Engineering Personas und Wiederholungen
  • AI-Engineering-Fachglossar
  • EBook Tutorial: Cluster aus virtuellen Maschinen
  • Ebook: Apache ZooKeeper
  • Ebook: Realtime Streaming Pipelines
  • LSM-Trees: Log Structured Merge Trees
  • Aufbau einer Enterprise Search
  • Zeit Stream Analytics
  • B-Tree-Index in Datenbanken
  • Ordering Guarantee in Apache Kafka
  • CAP Theorem
  • MapReduce Funktionale Programmierung
  • Konzepte des HDFS
  • Optimistisches Concurrency Control