Letzte Woche habe ich jeden Raspberry Pi, den ich hatte, verwendet, um einen HexaPi-Computing-Cluster mit sechs Knoten zu bauen.
Seitdem wurde ich mehrmals gefragt: Wofür ist das gut? Also werde ich einen Blick auf den letzten Teil des Raspberry Pi Projects – Build an OctaPi werfen und auch ein einfaches Beispiel von mir hinzufügen.
Oh, und ich habe einen weiteren Raspberry Pi Server zum Cluster hinzugefügt, während ich immer noch meine Regel „keine zwei Server gleich“ respektiere, so dass es jetzt eigentlich ein HeptaPi-Cluster mit sieben Servern ist. Am Ende dieses Beitrags werde ich eine Beschreibung einiger der neuen Hardware hinzufügen, die ich für dieses Projekt erworben und verwendet habe.
Zuerst, wofür ist sie gut? Ich habe ein einfaches Beispiel aus meiner eigenen Erfahrung. Ich reise viel, fotografiere gerne mit einer digitalen Spiegelreflexkamera und mache oft Mehrbild-Panoramen (die Schweizer Alpen sind ein besonders gutes Motiv für diese Art der Fotografie). Wenn ich nach Hause komme, benutze ich den hugin panorama photo stitcher, um diese Stapel von Einzelbildern zu viel größeren Panorama-Ansichten zusammenzufügen.
Wenn ich diese Panorama-Bearbeitung auf einem einzelnen Computer durchführe, muss ich die „Zeitplanung“ selbst vornehmen – das heißt, ich muss sie im Auge behalten, und wenn ein Panorama fertig ist, muss ich das nächste beginnen.
Wenn ich etwas ehrgeiziger bin, kann ich ein Stapelverarbeitungsprogramm einrichten und die zusammenzufügenden Bildgruppen in eine Warteschlange stellen, aber sie werden trotzdem nur nacheinander bearbeitet. Wenn ich mehrere Computer für die Aufgabe zur Verfügung habe, muss ich die Verteilung der Bilder und die Wiederherstellung der Panoramen selbst vornehmen, und auch hier muss ich die „Zeitplanung“ auf jedem Computer selbst vornehmen. In jedem Fall ist es ein relativ mühsamer und zeitaufwändiger Prozess, und leider geht mir oft die Zeit (oder die Geduld) aus, bevor alle meine Bilder verarbeitet sind.
Mit dem HeptaPi-Cluster könnte ich einen Batch-Prozessor einrichten, der auf einem der Python-Beispiele basiert, die im OctaPi-Cluster-Projekt enthalten sind, und dann hugin auf jedem der Cluster-Server installieren. Dann könnte ich Gruppen von Bildern an den Stapelverarbeitungsprozessor weiterleiten, der sie zur Verarbeitung an die Cluster-Server verteilt und das fertige Panoramabild zurückerhält.
Mein Aufwand dabei wäre, das anwendungsspezifische Stapelsteuerungsprogramm zu schreiben und dann die Gruppen von Bildern zu identifizieren, die zusammen verarbeitet werden sollen. Sobald das erledigt ist, würde sich die tatsächliche Zeit, die benötigt wird, bis ich alle meine schönen Panoramabilder habe, drastisch reduzieren – und ich könnte sie sogar noch weiter reduzieren, indem ich einfach jederzeit weitere Raspberry Pi-Systeme zum Cluster hinzufüge!
Eine allgemeinere Antwort auf die Frage, wofür der Pi-Cluster gut ist, lautet: jede Art von Jobs oder Aufgaben, die sich in eine Reihe unabhängiger Teile aufteilen lassen. Es ist zu beachten, dass nur die Aufgaben selbst unabhängig sein müssen – die Ergebnisse können es auch sein, wie im Fall meiner Panoramafotos, aber es kann auch sein, dass das Ergebnis jeder Aufgabe zu einem größeren Ergebnis beiträgt. In diesem Fall können die Ergebnisse auf dem Client-System gesammelt und dann weiterverarbeitet werden (vielleicht sogar, indem sie als neue Aufgabe wieder nach draußen geschickt werden), um eine endgültige Ausgabe zu erzeugen.
Natürlich ist dies nicht der einzige Nutzen für Cluster-Computer. Es gibt Dinge wie Redundanz und Fehlertoleranz, die auf der Tatsache beruhen, dass Ihr Client die Arbeit auf so viele Server verteilt, wie verfügbar sind; wenn ein Server wegen Wartungsarbeiten außer Betrieb genommen wird (oder abstürzt oder was auch immer), kann Ihre Verarbeitung immer noch auf den verbleibenden Servern im Cluster fortgesetzt werden.
Dies sind alles Konzepte, die normalerweise auf viel größere, ausgefeiltere Clustersysteme angewandt werden – bis hin zu ganzen Rechenzentren für Cloud-Dienste. Aber ich will damit sagen, dass man mit sehr preiswerten Raspberry Pi-Systemen einen einfachen Cluster aufbauen kann und dabei nicht nur sehr nützliche Kenntnisse und Erfahrungen sammelt, sondern auch eine nützliche Ressource erhält, wenn man fertig ist.
Nun zu der Hardware, die ich für dieses Projekt verwendet habe. Ich habe erwähnt, dass ich dem Cluster einen weiteren Server hinzugefügt habe, seit ich den ursprünglichen Bericht geschrieben habe. Das geschah, weil ich auf der Pi-Shop.ch Webseite den Raspberry Pi 2 v1.2.
Die allgemeinen Spezifikationen sind die gleichen wie beim ursprünglichen Pi 2, aber das neue Modell verwendet die gleiche CPU wie der Pi 3 (aber mit einer niedrigeren Taktrate). Das ist keine große Sache und wahrscheinlich für die meisten Leute nicht einmal besonders interessant, weil der Pi 3 jetzt sowieso viel beliebter ist. Aber es war genug, um mich zu motivieren, mir einen zu besorgen und ihn dem Cluster hinzuzufügen.
Das Wichtigste an dieser Ergänzung war, dass ich nichts am Client-System (Controller) oder an einem der anderen Server tun musste. Ich bereitete den neuen Pi 2 einfach genauso vor wie die anderen und schloss ihn dann an das dedizierte drahtlose Pi-Cluster-Netzwerk an. Als ich das nächste Mal einen Job auf dem Client startete, bemerkte er, dass der neue Server verfügbar war, und begann, ihn zusammen mit allen anderen zu verwenden.
Ich hatte im ursprünglichen Projekt auch erwähnt, dass ich nicht genügend USB-Wi-Fi-Adapter hatte, um alle meine Pi-Systeme anzuschließen, und das Hinzufügen des neuen Pi 2 bedeutete natürlich, dass ich auch für diesen einen Adapter brauchte. Der Pi-Shop hat ein paar neue Adapter im Angebot, also dachte ich mir, dass dies eine gute Gelegenheit ist, sie auszuprobieren.
Das wichtigste Kriterium beim Kauf eines USB-Wi-Fi-Adapters für einen Raspberry Pi ist, dass man sicher sein will, dass er direkt nach dem Auspacken richtig funktioniert.
Ich weiß, das mag albern klingen, aber es ist genau das Gegenteil von dem, was ich beim Kauf solcher Peripheriegeräte für den Rest meiner Linux-Laptops und -Desktops mache. Ich gehe davon aus, dass die meisten Leute Raspberry Pi-Systeme für einen bestimmten Zweck kaufen und verwenden – sei es für die Ausbildung, für ein Hobby oder für ein bestimmtes Projekt oder Gerät. Natürlich ist es möglich, so ziemlich jeden USB-Adapter mit so ziemlich jeder Linux-Distribution zum Laufen zu bringen, aber wenn Sie nicht riskieren wollen, dass Sie einen beträchtlichen Teil Ihrer Schul-/Hobby-/Arbeitszeit damit verbringen müssen, Treiber einzurichten, nehmen Sie einfach den einfachen Weg und stellen Sie sicher, dass Sie einen Adapter kaufen, der bereits getestet wurde und funktioniert.
Am einfachsten ist es, bei einem autorisierten Raspberry Pi-Händler zu kaufen und darauf zu achten, dass auf dessen Webseite steht, dass der Adapter, den man kauft, mit dem Pi funktioniert.
Das erste, das ich ausprobiert habe, war das Miniatur-WiFi (802.11b/g/n) 150Mbps Gerät. Ich glaube, dass es sich dabei um das Miniatur-WiFi-Modul von Adafruit handelt, auch wenn die Bilder nicht so aussehen – vielleicht ist es eine Sonderverpackung oder so etwas. Jedenfalls sieht das Modul, das ich bekommen habe, so aus wie das hier gezeigte, und es funktionierte tatsächlich sofort nach dem Auspacken, wie in der Werbung angegeben. Er kostete nur CHF 9.90 (ca. €8.99/£8.00/$10.50).
Er basiert auf einem Realtek RTL5370 Chip und hat eine blaue Power/Link/Status-LED.
Da ich gerade im „neue Dinge ausprobieren“-Modus war und bemerkte, dass im Pi-Shop ein weiterer USB-Wi-Fi-Adapter mit höherem Durchsatz angeboten wurde, beschloss ich, auch diesen auszuprobieren. Er heißt einfach ‚USB WiFi Adapter for Raspberry Pi (300Mbps)‘ und sieht aus wie auf dem Bild rechts.
Er ist mit CHF 23,90 (ca. €21,70/£19,40/$25) deutlich teurer, so dass es wahrscheinlich eine zweite Überlegung wert ist, bevor man ihn kauft, anstatt den oben genannten. Denken Sie daran, dass es sich hier um Raspberry Pi-Systeme handelt, die nicht gerade für die Geschwindigkeit und Effizienz ihrer USB-Verbindungen bekannt sind. Der Geschwindigkeitsunterschied, der so ziemlich der einzige Vorteil dieses Adapters ist, könnte also für die tatsächliche Verwendung des Geräts unbedeutend sein.
Dieses Gerät basiert auf dem Realtek 8192SU-Chip und hat auch eine Power/Link/Status-LED.
Das letzte neue Gerät für dieses Projekt ist dasjenige, das sich meiner Meinung nach als am nützlichsten erweisen wird – der TP-Link TL WR802N Wireless N Nano Router.
Dieses preiswerte Gerät (ca. 30 CHF/€27/£24/$32) ist sehr klein und leicht und enthält eine Reihe von vordefinierten und vorkonfigurierten Modi für gängige Anwendungen. Ich habe es verwendet, um ein isoliertes WLAN ohne Internetverbindung einzurichten (Router-Modus), aber natürlich kann es Internetkonnektivität entweder über seinen kabelgebundenen RJ45-Netzwerkanschluss (Access Point-Modus) oder über eine drahtlose WISP-Verbindung (Hotspot-Modus) bereitstellen.
Es kann auch verwendet werden, um ein bestehendes Wi-Fi-Netzwerk zu ergänzen (Range Extender-Modus) oder als Wi-Fi-Adapter für ein Gerät, das nur eine kabelgebundene Netzwerkverbindung hat (Client-Modus).
Das WR802N wird mit einem eigenen Netzteil geliefert, kann aber auch über ein Raspberry Pi-Netzteil (oder ein anderes MicroUSB-Smartphone-Ladegerät) mit Strom versorgt werden, oder sogar durch Anschluss an einen USB-Port eines Computers.
Meine ersten Eindrücke von diesem Gerät sind sehr positiv, und ich erwarte, dass es sowohl zu Hause als auch auf Reisen sehr nützlich sein wird.
Als ich beschloss, den Pi-Cluster zu bauen, erwartete ich, dass es eine interessante Sache sein würde, aber ich ging auch davon aus, dass ich ihn bald wieder auseinandernehmen würde. Jetzt, wo er in Betrieb ist, finde ich, dass ich über andere interessante Möglichkeiten nachdenke, ihn zu nutzen und zu verbessern.
Denken Sie daran, dass Sie keine große Anzahl von Raspberry Pi-Systemen haben müssen, um ein solches System einzurichten – zwei Server und ein Client reichen für den Anfang aus. Aber Vorsicht, wenn es erst einmal läuft, könnte es eine gute Ausrede dafür sein, mehr und bessere Teile zu kaufen, um es zu erweitern.
- Raspberry Pi: Wie ich einen OctaPi-ähnlichen Computing-Cluster gebaut habe
- Raspberry Pi: Hands-on mit Fedora 26
- Raspbian GNU/Linux: Neue Version enthält installierbares x86-Image
- Raspberry Pi Zero W, Hands-on: Ein sehr willkommenes neues Familienmitglied
- Hands-On: Raspberry Pi 7-Zoll Touch Display und Gehäuse