Vorige week heb ik elke Raspberry Pi die ik had gebruikt om een HexaPi rekencluster met zes knooppunten te bouwen.
Sindsdien is me een aantal keren gevraagd: waar is het goed voor? Dus ik ga het laatste stukje van de Raspberry Pi Projecten – Bouw een OctaPi bekijken, en ook een eenvoudig voorbeeld van mezelf toevoegen.
Oh, en ik heb nog een Raspberry Pi server aan het cluster toegevoegd, terwijl ik nog steeds mijn regel van ‘geen twee servers gelijk’ respecteer, dus het is nu eigenlijk een HeptaPi zeven-server cluster. Aan het eind van dit bericht zal ik een beschrijving toevoegen van enkele van de nieuwe hardware die ik heb aangeschaft en gebruikt voor dit project.
Voreerst, waar is het goed voor? Ik heb een eenvoudig voorbeeld uit mijn eigen ervaring. Ik reis nogal veel, ik maak graag veel foto’s met een digitale spiegelreflexcamera, en ik maak vaak panorama’s met meerdere beelden (de Zwitserse Alpen zijn bijzonder goede onderwerpen voor dit soort fotografie). Als ik thuis kom, gebruik ik de hugin panorama photo stitcher om die batches van afzonderlijke foto’s samen te voegen tot veel grotere panorama’s.
Als ik deze panorama’s op een enkele computer bewerk, moet ik zelf de ‘planning’ doen — dat wil zeggen, ik moet het in de gaten houden, en als een panorama klaar is, moet ik aan de volgende beginnen.
Als ik wat ambitieuzer ben, kan ik een batch besturingsprogramma opzetten en dan de samen te voegen groepen foto’s in een rij zetten, maar ze worden nog steeds alleen maar na elkaar gedaan. Als ik meer computers beschikbaar heb voor de taak, dan moet ik zelf de verdeling van de foto’s en het herstel van de panorama’s doen, en weer moet ik zelf de ‘scheduling’ doen op elke computer. Hoe dan ook, het is een relatief vervelend en tijdrovend proces, en helaas kom ik vaak tijd (of geduld) tekort voordat al mijn foto’s zijn verwerkt.
Met het HeptaPi cluster, zou ik een batch processor kunnen opzetten, gebaseerd op een van de Python voorbeelden in het OctaPi cluster project, en dan hugin installeren op elk van de cluster servers. Dan zou ik groepen foto’s kunnen invoeren in de batch-processor, die ze zou distribueren naar cluster-servers voor verwerking, en het voltooide panoramabeeld zou ontvangen als een retour.
Mijn investering hierin zou het schrijven van het applicatie-specifieke batch besturingsprogramma zijn, en dan het identificeren van de groepen foto’s die samen verwerkt moeten worden. Als dat eenmaal was gedaan, zou de werkelijke tijd die nodig is totdat ik al mijn mooie panoramafoto’s heb, drastisch worden verminderd — en ik zou het nog verder kunnen verminderen door eenvoudig meer Raspberry Pi-systemen op elk gewenst moment aan het cluster toe te voegen!
Een algemener antwoord op de vraag waar het Pi-cluster goed voor is, is: elk soort banen of taken die kunnen worden verdeeld in een aantal onafhankelijke stukken. Merk op dat het alleen de taken zelf zijn die onafhankelijk moeten zijn — de resultaten kunnen dat ook zijn, zoals in het geval van mijn panorama foto’s, maar het kan ook zijn dat het resultaat van elke taak bijdraagt aan een groter resultaat. In dat geval kunnen de resultaten worden verzameld op het client-systeem, en dan verder worden verwerkt (misschien zelfs door ze als een nieuwe taak weer naar buiten te sturen) om een uiteindelijke output te produceren.
Natuurlijk is dit niet het enige nut voor clustercomputers. Er zijn dingen als redundantie en fouttolerantie, gebaseerd op het feit dat uw client werk verzendt naar het aantal servers dat beschikbaar is; als een server wordt uitgeschakeld voor onderhoud (of crasht, of wat dan ook), kan uw verwerking nog steeds doorgaan op de resterende servers in het cluster.
Dit zijn allemaal concepten die typisch worden toegepast op veel grotere, meer geavanceerde clustersystemen — zelfs tot volledige cloud services datacenters. Maar mijn punt hier is dat je een eenvoudig cluster kunt bouwen met zeer goedkope Raspberry Pi-systemen, en daarbij niet alleen zeer nuttige kennis en ervaring opdoet, maar ook eindigt met een nuttige bron als je klaar bent.
Nu verder met de hardware die ik voor dit project heb gebruikt. Ik heb gezegd dat ik nog een server aan het cluster heb toegevoegd, sinds ik de oorspronkelijke write-up heb gepost. Dat is gebeurd omdat ik op de Pi-Shop.ch website aan het surfen was en de Raspberry Pi 2 v1.2.
De algemene specificaties zijn hetzelfde als de originele Pi 2, maar het nieuwe model gebruikt dezelfde CPU als de Pi 3 (maar met een lagere kloksnelheid). Niet zo heel erg, en waarschijnlijk niet eens zo interessant voor de meeste mensen omdat de Pi 3 nu toch al veel populairder is. Maar het was genoeg om me te motiveren er een aan te schaffen en aan het cluster toe te voegen.
Het belangrijkste om op te merken over deze toevoeging was dat ik niets hoefde te doen aan het client (controller) systeem, of aan een van de andere servers. Ik bereidde de nieuwe Pi 2 voor op precies dezelfde manier als ik de anderen had voorbereid, en sloot hem toen aan op het speciale draadloze netwerk van Pi Cluster. De volgende keer dat ik een opdracht op de client startte, merkte hij dat de nieuwe server beschikbaar was en begon hem samen met de rest te gebruiken.
Ik zei ook in het oorspronkelijke project dat ik niet genoeg USB wi-fi adapters had om al mijn Pi systemen aan te sluiten, en natuurlijk betekende het toevoegen van de nieuwe Pi 2 dat ik ook een adapter voor die ene nodig had. De Pi-Shop heeft een paar nieuwe adapters op de lijst staan, dus ik dacht dat dit een goede kans was om ze uit te proberen.
Het belangrijkste criterium om in gedachten te houden bij het kopen van een USB wi-fi adapter voor een Raspberry Pi is dat je er zeker van wilt zijn dat het goed werkt uit de doos.
Ik weet dat dit misschien gek klinkt, maar het is precies het tegenovergestelde van de aanpak die ik volg bij het kopen van dergelijke randapparatuur voor de rest van mijn Linux-laptops en desktops. Ik ga ervan uit dat de meeste mensen Raspberry Pi systemen kopen en gebruiken voor een specifiek doel – of het nu gaat om onderwijs, hobby of een specifiek project of apparaatgebruik. Natuurlijk is het mogelijk om zo’n beetje elke USB-adapter werkend te krijgen met zo’n beetje elke Linux-distributie, maar tenzij je het risico wilt lopen dat je een aanzienlijk deel van je tijd op school/hobby/werk moet besteden aan het instellen van drivers, kies je gewoon voor de makkelijke weg en zorg je ervoor dat je een adapter koopt die al getest is en werkt.
De eenvoudigste manier om hier zeker van te zijn is om te kopen bij een geautoriseerde Raspberry Pi-distributeur, en ervoor te zorgen dat op hun webpagina staat dat de adapter die je koopt is geverifieerd om met de Pi te werken.
De eerste die ik probeerde was het Miniature WiFi (802.11b/g/n) 150Mbps-apparaat. Ik geloof dat dit eigenlijk de Adafruit Miniature WiFi Module is, hoewel de foto’s er niet hetzelfde uitzien — misschien is het een aangepaste verpakking of iets dergelijks. Hoe dan ook, degene die ik kreeg ziet eruit als op de foto die hier getoond wordt, en het werkte inderdaad recht uit de doos, zoals geadverteerd. Hij kost slechts CHF 9,90 (ongeveer €8,99/£8,00/$10,50).
Hij is gebaseerd op een Realtek RTL5370 chip, en hij heeft een blauwe power/link/status LED.
Omdat ik in de ‘probeer nieuwe dingen uit’ modus zat, en ik zag dat er een andere USB wi-fi adapter met hogere doorvoer werd aangeboden in de Pi-Shop, besloot ik om die ook eens te proberen. Hij heet simpelweg de ‘USB WiFi Adapter for Raspberry Pi (300Mbps)’, en ziet eruit als op de foto rechts.
Hij is aanzienlijk duurder met CHF 23.90 (ongeveer €21.70/£19.40/$25), dus het is waarschijnlijk de moeite waard om er nog eens over na te denken voordat je hem koopt in plaats van de bovenstaande. Vergeet niet dat we het hier hebben over Raspberry Pi systemen, en die staan niet bekend om de snelheid en efficiëntie van hun USB-verbindingen. Dus het snelheidsverschil dat zo’n beetje het enige voordeel van deze adapter is, is misschien niet significant in uw werkelijke gebruik van het apparaat.
Dit apparaat is gebaseerd op de Realtek 8192SU-chip, en het heeft ook een power/link/status-LED.
Het laatste nieuwe stukje hardware voor dit project is het stukje hardware waarvan ik denk dat het het meest algemeen bruikbaar zal blijken te zijn – de TP-Link TL WR802N Wireless N Nano Router.
Dit goedkope apparaat (rond CHF 30/€27/£24/$32) is erg klein en licht, en bevat een aantal voorgedefinieerde en voorgeconfigureerde modes voor veelvoorkomend gebruik. Ik gebruikte het om een geïsoleerd WLAN zonder internetverbinding op te zetten (Router Mode), maar natuurlijk kan het internet connectiviteit bieden via zijn RJ45 bedrade netwerkconnector (Access Point Mode), of via een draadloze WISP verbinding (Hotspot Mode).
Het kan ook worden gebruikt om een bestaand wi-fi netwerk aan te vullen (Range Extender Mode), of als een wi-fi adapter voor een apparaat dat alleen een bedrade netwerkverbinding heeft (Client Mode).
De WR802N wordt geleverd met een eigen voedingsadapter, maar kan ook worden gevoed door een Raspberry Pi voedingsadapter (of een andere MicroUSB smartphone-oplader), of zelfs door aansluiting op een USB-poort van een computer.
Mijn eerste indrukken van dit apparaat zijn zeer positief, en ik verwacht dat het erg nuttig zal zijn, zowel thuis als wanneer ik op reis ben.
Toen ik besloot om de Pi Cluster te bouwen, verwachtte ik dat het een gee-whiz soort interessant ding zou zijn om te doen, maar ik ging er ook van uit dat ik het binnen al te lange tijd weer uit elkaar zou halen. Nu dat het draait, merk ik dat ik andere interessante manieren bedenk om het te gebruiken, en om het te verbeteren.
Houd in gedachten dat je niet veel Raspberry Pi systemen hoeft te hebben om er een op te zetten — twee servers en een client zijn genoeg om mee te beginnen. Maar pas op, als je het eenmaal draaiend hebt, zou je kunnen ontdekken dat het een goed excuus is om meer en betere stukjes en beetjes te kopen om het uit te breiden.
- Raspberry Pi: Hoe ik een OctaPi-achtig computercluster bouwde
- Raspberry Pi: Hands-on met Fedora 26
- Raspbian GNU/Linux: Nieuwe release bevat installeerbare x86 image
- Raspberry Pi Zero W, hands-on: Een zeer welkom nieuw lid van de familie
- Hands-On: Raspberry Pi 7-inch Touch Display en case