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.