Veröffentlicht am

Virtuelle Maschinen vernetzen (Tutorial)

Tutorial Virtuelle Maschinen vernetzen

Virtuelle Maschinen vernetzen (Tutorial)

Eine eigene Cloud auf dem Laptop – das ist praktisch, gerade wenn man Big-Data-Systeme kennen lernen will. Dazu vernetzen wir mehrere virtuelle Maschinen.

Das folgende Tutorial zeigt eine Schritt für Schritt Anleitung zum Aufsetzen und Klonen einer einzelnen virtuellen Maschine mit VirtualBox.

Danach erläutert es die Konzepte zum Vernetzen der virtuellen Maschinen.

Das Tutorial ist ein Auszug aus dem E-Book Cluster aus Virtuellen Maschinen. Dort zeige ich auch das Vorgehen mit Parallels, einer Virtualisierungssoftware für ARM-Chips, also die neuen Mac-Prozessoren. Für beide Virtualisierungen zeige ich ausführlich die notwendigen Ubuntu-Linux-Befehle, um die virtuellen Maschine auch auf Linux-Ebene zu vernetzen. Das E-Book findest du im Shop.

Doch jetzt starten wir mit VirtualBox:

Wir arbeiten mit einem Mini-Cluster aus drei virtuellen Maschinen. Die Limitierung besteht in den Ressourcen des Host-Rechners, also unseres Laptops. Je mehr virtuelle Maschinen wir aufsetzen können, umso besser können wir die Big-Data-Welt kennen lernen.

Wichtigste Eigenschaften Virtueller Maschinen

Dank Virtualisierungstechnologien können wir auf dem Laptop zusätzlich zu allen Apps eine Umgebung installieren, die die Hardware und das Betriebssystem des Laptops nutzen, sich jedoch verhalten wie ein eigenständiger Rechner mit einem separaten Betriebssystem.

Hier eine schematische Darstellung einer Laptop-Cloud mit fünf virtuellen Maschinen:

Die layer der Virtualisierung
Ein Cluster basierend auf virtuellen Maschinen. Die drei mit F1 bezeichneten Blöcke sind drei Teile eines verteilten Big-Data-Files.

Der Laptop dient als Gastgeber, also Host. Und so ist die Rede vom Host-Betriebssystem.

Darauf installieren wir die Virtualisierungssoftware – genauer den Hypervisor. Innerhalb dieses Hypervisors installieren wir anschließend virtuelle Maschinen mit einem eigenen Betriebssystem. Man spricht vom “Gast”, englisch “Guest”. So kann man die beiden Betriebssysteme unterscheiden: Host und Gast. Ein Host kann mehrere Gäste haben. Vorausgesetzt, unser Laptop verfügt über genügend Rechenkapazität. Ein Beispiel: Der Host läuft mit Windows und der Gast läuft mit Linux.

Auf der schematischen Darstellung oben, sind drei virtuelle Maschinen, also “Gäste” dargestellt. Für den Trainings-Cluster werden wir für jede virtuellen Maschine eine eigene statische IP-Adresse konfigurieren.

Der Hypervisor virtualisiert auf Hardware-Ebene. Die virtuellen Maschinen sind vollständig voneinander isoliert und der Hypervisor enthält unter anderem als eine Art “Router”, weist den virtuellen Maschinen IP-Adressen zu und stellt die TCP-IP-Verbindung dazwischen her.

Jede virtuelle Maschine hat also ein eigenes Betriebssystem, ein eigenes Filesystem und eine eigene Installation der Tools und Apps, die wir kennenlernen wollen.

Wie jeder Computer, kann auch eine virtuelle Maschine gestartet und gestoppt werden. Es wird dann jeweils das betreffende Gast-Betriebssystem gestartet resp. gestoppt.

Images von virtuellen Maschinen können auch von einem Laptop auf einen anderen kopiert oder verschoben werden, mehrheitlich unabhängig vom Host-Betriebssystem der Laptops.

Wir werden mit Laptops arbeiten, um den Trainings-Cluster aufzubauen. Virtualisierung ist nicht auf Laptops beschränkt, sondern findet sehr viel Verbreitung bei Cloud-Providern. Dort werden virtuelle Server aufgebaut, verwaltet, vermietet.

Eine einzelne VirtualBox einrichten und klonen

Wer mit virtuellen Maschinen arbeiten will, kann unter verschiedenen Anbietern auswählen. Gerade im Ausbildungsbereich ist VirtualBox sehr beliebt, weil viele fürs Kennenlernen notwendige Funktionalitäten in der kostenlosen Version erhältlich sind. Wer in einem Produktionssystem virtualisieren möchte, wird nicht um eine Evaluation der verschiedenen Anbieter herumkommen. Für unser Big Data Training ist die Virtualisierung lediglich Mittel zum Zweck, so dass wir das Vorgehen mit VirtualBox zeigen.

Notwendige Vorkenntnisse

Für dieses Kapitel des Big Data Labors braucht man Administratorrechte auf dem eigenen Laptop (oder PC). Das Tutorial führt Schritt für Schritt durch den Installationsprozess, setzt jedoch voraus, dass der Leser mit Software-Installationen vertraut ist.

Grundlegende Kenntnisse mit Linux auf Ebene Kommandozeile werden für das Big Data Labor ebenfalls vorausgesetzt. Die Kommandos werden gezeigt und kurz erklärt.

Laptop-Ressourcen als Voraussetzung zum vernetzen virtueller Maschinen

Um mit dem Big-Data-Labor arbeiten können, brauchen wir einen Laptop (oder PC) mit genügend freien Kapazitäten. Hier eine Empfehlung:

  • min 16 GB RAM
  • min 100 GB freier Speicherplatz auf der Harddisk
  • 64-bit Prozessor
  • Internetverbindung.

Starker Prozessor um mehrere virtuelle Maschinen zuz vernetzen

Der Prozessor des Laptops muss Virtualisierung ermöglichen. Gerade in kostengünstigeren Laptops können Prozessoren verbaut sein, die Virtualisierung nicht unterstützen. Diese Seiten können weiter helfen, je nach Hersteller des Prozessors: Intel-Prozessoren  oder AMD-Prozessoren.

Die neuen Mac mit M1 und M2 Prozessoren basieren auf der ARM-Prozessor-Architektur. Die neueste Version von VirtualBox unterstützt auch diese Architekturen.

Im Zweifelsfall geht Probieren über Studieren.

Voraussetzung für die Virtualisierung im BIOS

Auch wenn der Prozessor Virtualisierung ermöglicht, dann ist sie nicht unbedingt aktiviert.

Der Task-Manager in Win 10 & 11 zeigt, ob die Möglichkeit zur Virtualisierung aktiviert wurde.

Ob die Virtualisierung auf einem Windows-Laptop möglich ist, lässt sich einfach herausfinden: Wir öffnen den Task-Manager (Strg-Alt-Del) und verzweigen dort auf die Registerkarte “Leistung”. Hier können wir ablesen, ob Virtualisierung möglich ist.

Wir können es auch einfach drauf ankommen lassen, und die erste virtuelle Maschine erstellen. Zu einem gewissen Zeitpunkt während des Vorgangs, wird eine entsprechende Fehlermeldung angezeigt. Diese macht darauf aufmerksam, dass im BIOS die Virtualisierung aktiviert werden soll.

Einblick in die BIOS-Konfiguration eines HP Rechners mit aktivierter Virtualisierung.

Wie man das BIOS aktiviert, hängt vom Hersteller des Laptops ab. Das Bild rechts zeigt als Beispiel die entsprechenden Einstellungen auf einem HP-Laptop.

 

Wenn wir dies mit unserem Laptop zum ersten Mal machen, dann wird nur eine Internetrecherche weiterhelfen. Wir suchen Beispielsweise nach Hersteller, Produktbezeichnung des Laptop, BIOS. In der Regel wird es darauf hinauslaufen, dass der Laptop neu gebootet werden muss und dass während des Bootvorgangs, noch bevor das Betriebssystem geladen wird, eine bestimmte, vom Hersteller definierte Tastenkombination gedrückt werden muss.

Wir sehen anschließend die BIOS Einstellungen. Diese Verändern wir nur sehr gezielt und mit größter Vorsicht. Normalerweise navigiert man in diesen Einstellungen mit den Pfeil- und Tab-Tasten. Wir suchen eine Einstellung, die beispielsweise den Begriff “Virtualisation Technology” enthält und wir sorgen dafür, dass diese eingeschaltet ist. Die Einstellungen müssen gespeichert werden und der Laptop muss neu gebootet werden.

Gast-Betriebssystem für die virtuelle Maschine herunterladen

Ubuntu-Server-Betriebssystem herunterladen: https://www.ubuntu.com/download/server Wichtig: Die weitere Anleitung bezieht sich auf Ubuntu. Bei Mac ist die zur Prozessorarchitektur passende Version zu wählen.

Als vorbereitenden Schritt laden wir ein Image des Gast-Betriebssystem herunter. In diesem Tutorial verwenden wir Ubuntu Server. Eine kurze Google Suche lässt uns die Download-Seite finden.

Wir laden die Software herunter und speichern das File vorerst auf der Festplatte des Laptops. Wir werden in einem späteren Installationsschritt die Datei verwenden.

Server Namen der vernetzten virtuellen Maschinen

Die einzelnen virtuellen Server werden Server-Namen brauchen. In diesem Tutorial nennen wir sie “pi-200”, “pi-201”, etc. Die Namensgebung kann beliebig sein, sollte jedoch der Einfachheit halber eine Nummerierung enthalten.

Virtualisierungssoftware – ohne sie läuft nichts

Die aktuelle Version von VirtualBox herunterladen

Als erstes laden wir die Software für VirtualBox auf den Laptop herunter.

Auf dieser Seite erscheint immer sehr prominent die Download-Möglichkeit für die Software. Zum Zeitpunkt der Erstellung des Tutorials war gerade die Version 6.0 aktuell. Die Folgeversionen verhalten sich analog.

Wir klicken auf die grüne Schaltfläche – oder auf das Icon auf künftigen Seiten, das dieser Schaltfläche entspricht.

Die Software muss auf dem Host-Betriebssystem laufen. Hier ist also das Betriebssystem des Laptops auszuwählen. Bei Mac zusätzlich die Prozessorarchitektur beachten.

Auf der nächsten Seite wird die Software für verschiedene Host-Betriebssysteme angeboten. Hier wählen wir das Betriebssystem aus, das auf unserem Laptop installiert ist.

Anschließend wird die Virtualisierungssoftware heruntergeladen. Wir speichern sie auf dem Laptop und installieren sie mit den Standardeinstellungen.

VirtualBox – eine erste virtuelle Maschine

Blick in eine neue Installation des Virtualbox Managers.

Wir starten die VirtualBox-Software und verschaffen uns einen Überblick über die Menu Optionen.

Als nächstes konfigurieren wir eine virtuelle Maschine. Wir klicken dazu auf “Neu”. Dazu können wir die entsprechende Menüoption oder auch die große Schaltfläche auf der Übersichtsseite verwenden.

Wir werden jetzt durch den Installationsprozess geführt.

Die virtuelle Maschine benennen und das Gast-Betriebssystem auswählen. Hier Linux sowie die im vorherigen Schritt heruntergeladene Ubuntu-Version auswählen.

Als erstes braucht die virtuelle Maschine einen eigenen Namen. Dazu verwenden wir die im Kapitel “Vorbereitung Server Namen” bestimmten Namen. Für dieses Tutorial fangen wir an mit pi-200.

Als Betriebssystem wählen wir Linux, weil die Big-Data-Software unter Linux läuft.

Wir können anschliessend die gewünschte Linux-Version auswählen. Für dieses Tutorial nehmen wir Ubuntu 64-bit. Wir können auch eine andere Version nehmen. 64-bit sollte es schon sein, die neueren Laptops haben ja 64-bit-Prozessoren und auch die Big-Data-Software geht von 64-bit aus.

Festlegen, wie viel RAM die virtuelle Maschine verwenden darf.
Größe des RAM auf dem Laptop spielt dabei eine wichtige Rolle.

Auf der folgenden Seite, legen wir fest, mit wie viel RAM die virtuelle Maschinen arbeiten darf.

Dabei spielt die Größe des RAM auf dem Laptop eine wichtige Rolle. Der virtuellen Maschine wird vom Laptop nicht mehr RAM zur Verfügung gestellt, als wir hier konfigurieren.

1GB, also 1024 MB sollten es mindestens sein. Diese Größe ist für einen Produktivbetrieb viel zu gering, für die ersten Kennenlernschritte jedoch mindestens ausreichen. Wir werden mindestens 3 virtuelle Maschinen benötigen und auch darauf achten, dass für das Host-System genügend RAM übrig bleibt.

Festlegen, wie viel Platz die virtuelle Maschine auf dem Gast-Rechner benötigen wird. Die Größe der Festplatte des Laptops, sowie der verfügbare Platz, spielen dabei eine wichtige Rolle.

 

 

Für die weiteren Schritte, übernehmen wir jeweils die Standard-Optionen.

Für die weiteren Optionen wählen wir vorerst die Standardeinstellungen und schließen die Konfiguration mit “Erzeugen” ab.

Die Standard-Vorgabe für die virtuelle Festplatte kann übernommen werden. 8 GB reichen gut für erste Tests. – für erweiterte Tests empfehle ich 20 GB.

Auf der nächsten Seite konfigurieren wir die Größe der Festplatte, sowie deren Name. Wir wollen ja nicht wirklich mit Big-Data arbeiten, also brauchen wir keine große Festplatte. Hier sollten wir aufpassen, dass genügend freier Festplattenplatz auf dem Laptop vorhanden ist. Wir werden ja mindestens 3 virtuelle Maschinen benötigen und alle werden auf dem Laptop diesen Platz verbrauchen.

Blick in den VirtualBox-Manager. Die neu konfigurierte VM erscheint links, die Konfiguration kann im Hauptbereich (rechts) eingesehen und verändert werden.

Die neu konfigurierte virtuelle Maschine ist jetzt im linken Bereich zu sehen.

Internes Netzwerk

Bevor wir loslegen, versehen wir die virtuelle Maschine mit einer weiteren Netzwerkkarte, damit wir mehrere VMs untereinander vernetzen können.

Mit VirtualBox geht das am Einfachsten, indem wir ein internes Netzwerk bilden. Dazu definieren wir für jede virtuelle Maschine eine zweite (virtuelle) Netzwerkkarte. Diesmal öffnen wir die Registerkarte “Adapter 2”.

Internes Netzwerk für das Cluster definieren
  • Wir aktivieren den Adapter.
  • Wählen aus, dass er an ein Internes Netzwerk angeschlossen sein soll.
  • Und geben dem Netzwerk einen Namen – hier bigdata.
  • Anschließend speichern wir mit OK.

Diesen Vorgang wiederholen wir für alle virtuellen Maschinen, die wir für das Cluster definieren und vergeben dabei immer denselben Netzwerknamen.

VirtualBox wird ein (virtuelles) Netzwerk mit diesem Namen zur Verfügung stellen.

Virtuelle Maschine starten und Gast-Betriebssystem installieren

Wir können sie starten, indem wir auf den grünen Pfeil klicken.

Die virtuelle Maschine ist erst in VirtualBox konfiguriert, doch das Gast-Betriebssystem ist noch nicht installiert. Beim ersten Starten wird diese Installation nun vorgenommen. Dies dauert eine Weile – wir nehmen uns also genug Zeit.

Das Betriebssystem wird erst beim ersten Starten der virtuellen Maschine installiert. Der Pfad zum vorher heruntergeladene Image muss hier angegeben werden.

Als Erstes werden wir gefragt, wo sich das Image des Gast-Betriebssystem befindet.

Spätestens jetzt müssen wir das Betriebssystem herunterladen (siehe Abschnitt “Gast-Betriebssystem herunterladen“). Und wir wählen die heruntergeladene Datei aus und klicken auf “Starten”.

Jetzt wird in der virtuellen Maschine das Ubuntu-Betriebssystem installiert. Die Installationsschritte sind identisch mit einer Installation direkt auf einer Hardware, nur dass wir eine virtualisierte Umgebung verwenden. Die Navigation erfolgt mit den Pfeiltasten, den Tabulatortasten, mit Enter oder mit Esc.

Es ist praktisch, wenn Ubuntu englisch eingestellt ist. Die bisher verfügbare Dokumentation ist ja auf Englisch verfasst.

Wir werden nach der Sprache gefragt. Big-Data-Software ist oft so neu, dass es noch keine deutschen Beschreibungen gibt. Wählen wir hier “English” aus, dann wird das installierte Betriebssystem zu den Produktbeschreibungen sprachlich passen. Wählen wir eine andere Sprache aus, dann werden wir später immer wieder übersetzen müssen.

Wichtig: Die Tastatur korrekt installieren.

Anders verhält es sich in Bezug auf die Tastatur, also das Keyboard. Hier konfigurieren wir das Layout derjenigen Tastatur, die wir einsetzen. Die gängigsten Tastaturen stehen zur Auswahl. Verwenden wir jedoch ein anderes Tastaturlayout, z.B. German Switzerland, dann  hilft die Option “Identify Keyboard” weiter. Diese führt durch einen Konfigurationsprozess, während dem man aufgefordert wird, verschiedene Tasten auf der Tastatur zu betätigen. Das Installationsprogramm ermittelt damit das passende Tastaturlayout. Wir kontrollieren noch und wenn alles in Ordnung ist, wählen wir anschließend “Done” aus.

Als nächstes konfigurieren wir die Netzwerkkarten. Für enp0s3 hat die automatische Konfiguration geklappt. Mit dieser Netzwerkkarte werden wir von der VM aus via Heimnetzwerk aus dem Internet Software herunterladen können.

Bei enp0s8 besteht Handlungsbedarf, die Konfiguration des internen Netzwerks muss manuell vorgenommen werden. Die folgende Abbildung zeigt die Abfolge der Auswahlen und Eingaben.

 

Bei enp0s8 muss die Konfiguration manuell vorgenommen werden. Navigieren mit Tab, Leerschlag und Enter.

In den nächsten Schritten übernehmen wir die Default Einstellungen:

In den weiteren Schritten übernehmen wir die Default-Einstellungen.

Bis wir schließlich nach Usernamen, Servernamen und Passwort gefragt werden.

Konfigurieren der Zugangsdaten für Ubuntu. Passwort nicht vergessen…

Als Name und Username geben wir beispielsweise “pi” ein.

Als Server-Name empfiehlt es sich, denselben Namen zu verwenden, den wir auch für die virtuelle Maschine in VirtualBox vergeben haben – im Falle dieses Tutorials ist es pi-200.

Das Passwort muss wiederholt werden. Wir werden es bei jedem Login verwenden und behandeln es mit der gebührenden Sorgfalt.

Wir brauchen keine vorkonfigurierten Pakete.

Vorkonfigurierte Pakete verwenden wir nicht, wählen also gleich “Done” aus.

Die Installation wird anschließend ausgeführt. Das kann eine kleine Weile dauern.

Am Ende werden wir aufgefordert, das Installationsmedium zu entfernen. Diese Meldung ist im Falle der Installation in eine virtuelle Maschine nicht weiter zu beachten und wir beantworten sie mit “Enter”.

Die Installation wurde ausgeführt und wir können einloggen. Login-Name und Passwort wurden während der Installation ausgewählt.

Jetzt wird der Server gebootet und der Login-Prompt erscheint.

Es kann vorkommen, dass nach dem ersten Anzeigen des Login-Prompts mit etwas Verspätung noch weitere Meldungen angezeigt werden. Wird die Enter-Taste gedrückt, dann erscheint der Login-Prompt wieder.

Username ist pi (wie während der Installation vergeben) und auch das Passwort haben wir während der Installation vergeben.

Auf dem Prompt werden wir im Folgenden Kommandos zur Administration des Servers eingeben.

Tipps:

  • Ist die Anzeige zu klein, dann hilft die Menu Option der Virtual Box weiter.
  • Es empfiehlt sich, die Ubuntu Pakete gleich zu updaten. Folgende beiden Befehle tun dies:
sudo apt-get update
sudo apt-get upgrade

Mit sudo können alle Befehle mit Root-Rechten ausgeführt werden. Beim ersten Mal wird man nach dem Passwort gefragt. Gemeint ist das Passwort für den aktuellen User, das wir während der Installation wählten und auch zum Einloggen verwenden.

Alle weiteren Prompts sind mit Y zu beantworten.

Wir fahren den virtuellen Server herunter mit:

sudo shutdown -h now

Klonen einer virtuellen Maschine

Wir stellen sicher dass die virtuelle Maschine heruntergefahren ist und können sie jetzt klonen. Das ist der einfachste Weg, eine Reihe identisch installierter virtueller Maschinen zu erstellen.

Die erste virtuelle Maschine ist jetzt konfiguriert. Sie kann geklont werden. Mit Rechtsklick erscheint das entsprechende Kontext-Menu.

Dazu rechtsklicken wir auf den Namen der virtuellen Maschine in der linken Spalte im VirtualBox Manager. Im Kontext-Menu wählen wir “Klonen”.

Angaben zum Klonen – die Namen vergeben wie im Kapitel “Vorbereitung: Server Namen” bestimmt.

Wir vergeben den Klonen passende Namen. Für das Big-Data-Labor benötigen wir mindestens 2 Klone erstellen. Wenn der Laptop es zulässt, können es auch mehr sein. Dieses Tutorial wird mit 5 virtuellen Maschinen arbeiten. Der Vorgang des Klonens wird entsprechend oft ausgeführt und die Nummerierung in der Namensgebung wird hochgezählt.

Der erste Klon erhält also den Namen: PI-201

Wir wählen die Option “verknüpfter” Klon und können dadurch Speicherplatz sparen.

Und wir lassen dem Klon neue (virtuelle) MAC-Adressen zuweisen.

Wir klicken auf Klonen und der Vorgang wird ausgeführt.

Das wird wie oben ausgeführt, mehrfach wiederholt. Dabei vergeben wir der Reihe nach die Namen, die wir im Kapitel “Vorbereitung: Server Namen” ausgewählt haben.

Sobald alle virtuellen Maschinen erstellt wurden, können wir sie gruppieren.

Um die Administration zu vereinfachen, fassen wir die virtuellen Maschine in eine Gruppe zusammen.

Dazu selektieren wir sie in der linken Spalte des VirtualBox Managers und rufen mit der rechten Maustaste das Kontext-Menu auf.

Hier wählen wir die Funktion “Gruppieren” aus.

Für den späteren Gebrauch ist es praktisch, die Gruppe auch gleich aussagekräftig zu benennen.

Rechtsklick auf den Gruppennamen zeigt ein Kontextmenu. Hier erhalten wir die Möglichkeit, die Gruppe zu benennen. Beispielsweise “Big Data Labor

Die virtuellen Maschine einer Gruppe können gleichzeitig gestartet und gestoppt werden.

Wir können eine Gruppe auswählen und auf Starten klicken. Der Virtual Box Manager startet dann alle virtuellen Maschinen der Gruppe.

Das Stoppen funktioniert analog.

Netzwerktopologie für das Cluster aus virtuellen Maschinen

Das folgende Bild visualisiert die Netzwerktopologie, die wir mit den virtuellen Maschinen errichten werden.

Netzwerktopologie virtuelle Maschinen

Netzwerktopologie des virtuellen Big-Data-Clusters

Üblicherweise liegt zwischen dem Internet und dem hausinternen LAN eine Router mit einer Firewall. Der Laptop verbindet sich mit dem hausinternen LAN und erhält üblicherweise eine dynamische IP Adresse.

Die VirtualBox errichtet auf dem Laptop auch eine virtuelle Firewall mit einem DHCP-Router. Die virtuellen Maschinen verbinden sich mit dieser NAT Schnittstelle.

Wie geht es weiter? Cluster aus virtuellen Maschinen

Klone die virtuelle Maschine, so dass du mindestens zwei Instanzen hast. Je mehr desto besser. Ein Laptop mit den genannten Ressourcen kann auch fünf oder mehr virtuelle Maschinen gleichzeitig starten.

Das Laptop wird dadurch ziemlich stark ausgelastet. Auch hier: Probieren geht über Studieren – letztendlich ist die Anzahl möglicher Instanzen eine Frage der freien Kapazitäten auf dem Laptop.

Das Tutorial dieser Seite ist ein Auszug aus dem ausführlichen Schritt-für-Schritt-Tutorial: Cluster aus Virtuellen Maschinen.

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 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 Training in der Laptop-Cloud mit VirtualBox

Big Data VirtualBox

Big Data Training in der Laptop-Cloud mit VirtualBox

Benötigt man mehr Infrastruktur als ein gutes Laptop 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: Wie kann man eine Cloud-Umgebung auf dem Laptop simulieren?

A: Big Data Computing ist verteiltes Rechnen. Es ist also wichtig, dass auf dem Laptop mehrere Server simuliert werden. Man baut ein virtuelles Rechnernetz auf. Statt von einem Server, spricht man von einem Node.

Um ein virtuelles Rechnernetz aufzubauen, hat man die Wahl zwischen mehreren virtuellen Maschinen, zum Beispiel mit VirtualBox oder Docker.

Q: Docker oder virtuelle Maschinen – welche Option eignet sich besser für die ersten Schritte?

A: Wer BigData Technologien von Grund auf kennen lernen möchte, ist besser bedient, zuerst die Installation auf einem Server kennen zu lernen. Eine Trainings-Umgebung mit Rasperry-Pi haben wir ja schon vorgestellt. Wir können denselben Lerneffekt erzielen, indem wir beispielsweise mit VirtualBox arbeiten.

Dazu installieren wir das VirtualBox Host System und innerhalb des Hostsystems bauen wir so viele virtuelle Maschinen auf, wie das Laptop verkraftet.

Wer das Zusammenspiel der Big-Data-Komponenten begriffen hat, wird dann eine Docker-Umgebung aufbauen können.

 Q: Wie muss das Laptop ausgestattet sein?

Ich habe mit einem Laptop mit 16 GB RAM und ca. 40 GB freiem Festplattenplatz getestet. Ich denke, dass jeder Big-Data-Interessierte ein ähnlich ausgestattetes Laptop besitzt. Damit konnte ich ein kleines Cluster, also Rechnernetz, aufbauen und einige Trainingseinheiten entwerfen.

Auch relativ komplexe Berechnungen sind möglich, halt nicht mit großen Datenmengen.

Die wichtigsten Eigenschaften der Big-Data-Tools lernt man auch so kennen. Es geht ja nicht zuletzt auch um einen Paradigmenwechsel hin zum verteilten Rechnen.

Q: Wie viele virtuelle Nodes sind möglich?

Diese Frage ist natürlich zentral. Ich habe auf meinem Laptop sämtliche Prozesse gestoppt, die für das Experiment nicht unbedingt nötig sind, beispielsweise Browser-Tabs geschlossen und Musik ausgeschaltet.

Dann habe ich virtuelle Maschinen (VM) gestartet – eine nach der anderen. Das System wurde ab der fünften oder sechsten VM etwas langsamer. Bei der zehnten VM wurde der Bildschirm schwarz, die Maus funktionierte noch. Ich habe dann wie im Dunkeln getappt und an dies Stellen geklickt, wo ich meinte, dass sich doch ein Button zum Schließen einer VM befand. Nachdem ich eine oder VM so schließen konnte, hat sich das System erholt. VirtualBox ist schon robust.

Bei diesem Experiment habe ich in den einzelnen Virtuellen Maschinen außer dem Betriebssystem keine weitere Software gestartet.

Je nach Auslastung des Host-Systems sollten drei bis fünf Virtuelle Maschinen möglich sein, in denen auch Big-Data-Software läuft. Damit kann man gut ein Training durchführen.

Q: Wie greift man auf die einzelnen Nodes zu?

Diese virtuellen Maschinen müssen untereinander vernetzt sein. Das habe ich in einem anderen Blog Post beschrieben.

Um vom Host-System, also von der Ebene-Laptop aus darauf zuzugreifen, arbeitet man mit Port-Forwarding.

Ist das Cluster so eingerichtet, dann greift man mit normalen SSH-Tools zu, ich mag MobaXTerm. Diese Tools haben ja (fast) alle ein Web UI. Darauf greift man normal mit dem Browser zu. Einziger klitzekleiner Nachteil: Man muss die Ports verwenden, die man im Port-Forwarding definiert hat.

Q: Wie könnte man die Komponenten einer Stream Analytics Pipeline auf die Nodes verteilen?

Je nachdem, welche Komponente, oder welches Zusammenspiel mehrere Komponenten man gerade kennen lernen möchte, wird man anders verfahren.

Grundsätzlich kann man alle Software auf allen zur Verfügung stehenden Nodes installieren und dann jeweils nur diejenigen Komponenten starten, die man gerade untersuchen möchte.

Die Big Data Tools skalieren ja horizontal, das heißt, dass die Anzahl der Nodes verändert werden kann, ohne das System ausschalten zu müssen. Das tönt natürlich verlockend, doch hat in der Praxis auch Randbedingungen, die erfüllt sein müssen.

Bei Apache Kafka beispielsweise ist es denkbar, die Anzahl laufender Broker zu variieren, je nachdem, welche Ressourcen für die aktuelle Trainingseinheit gerade benötigt werden. Im Trainingsbetrieb wird man sehr schnell merken, dass es wichtig ist, sich gut zu überlegen, wie man ein Kafka-Topic definiert, wenn man plant, die Anzahl Broker zu reduzieren, und verlangt, dass das Topic danach noch zur Verfügung steht.

Bei Apache Spark wiederum, dürfen der Cluster Manager und der Driver nicht ausfallen und müssen speziell abgesichert werden.

Solche Zusammenhänge aufzuzeigen, machen aus meiner Sicht ein gutes Big-Data-Training aus.

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. VirtualBox ist eine gute Alternative. Der vermeintliche Nachteil der beschränkten Ressourcen wird zum Vorteil, weil die Robustheit und Skalierbarkeit der Tools zwangsläufig im Training thematisiert werden.

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