Poslední týden jsem použil všechny Raspberry Pi, které jsem měl, k sestavení výpočetního clusteru HexaPi se šesti uzly.
Od té doby jsem byl několikrát dotázán: K čemu je to dobré? Takže se podívám na poslední kousek článku Projekty Raspberry Pi – Sestavte OctaPi a přidám i svůj vlastní jednoduchý příklad.
Aha, a do clusteru jsem přidal ještě jeden server Raspberry Pi, přičemž jsem stále respektoval své pravidlo „žádné dva stejné servery“, takže je to teď vlastně cluster HeptaPi se sedmi servery. Na závěr tohoto příspěvku přidám popis části nového hardwaru, který jsem pro tento projekt pořídil a použil.
Nejprve k čemu je to dobré? Mám jednoduchý příklad z vlastní zkušenosti. Poměrně hodně cestuji, rád hodně fotografuji digitální zrcadlovkou a často pořizuji panoramata s více snímky (švýcarské Alpy jsou pro tento druh fotografie obzvláště vhodným objektem). Když se vrátím domů, používám program hugin panorama photo stitcher, abych tyto dávky jednotlivých snímků spojil do mnohem větších panoramatických pohledů.
Pokud toto zpracování panoramat provádím na jednom počítači, musím si „plánování“ provádět sám – to znamená, že to musím hlídat, a když je jedno panorama hotové, musím začít další.
Pokud budu trochu ambicióznější, mohu si nastavit program pro dávkové řízení a pak skupiny snímků, které se mají sloučit, zařadit do fronty, ale stejně se udělají jen jeden po druhém. Pokud mám k dispozici více počítačů pro tento úkol, musím pak rozdělení obrázků a obnovu panoramat provést sám a opět musím provést „plánování“ na každém počítači sám. Tak jako tak je to poměrně zdlouhavý a časově náročný proces a bohužel se mi často stává, že mi dojde čas (nebo trpělivost) dříve, než jsou všechny obrázky zpracovány.
V případě clusteru HeptaPi bych mohl nastavit dávkový procesor založený na některém z příkladů Pythonu obsažených v projektu clusteru OctaPi a pak nainstalovat hugin na každý ze serverů clusteru. Pak bych mohl dávkovému procesoru předávat skupiny obrázků, který by je distribuoval na servery clusteru ke zpracování a jako návratku by obdržel hotový panoramatický obrázek.
Mojí investicí v tomto směru by bylo napsání programu pro řízení dávek specifického pro danou aplikaci a pak identifikace skupin obrázků, které mají být zpracovány společně. Jakmile by to bylo hotovo, skutečný čas potřebný k tomu, abych měl všechny své krásné panoramatické obrázky, by se dramaticky zkrátil – a mohl bych ho ještě zkrátit tím, že bych kdykoli jednoduše přidal do clusteru další systémy Raspberry Pi!“
Obecnější odpověď na otázku, k čemu je Pi Cluster dobrý, zní: k jakémukoli druhu úloh nebo úkolů, které lze rozdělit na několik nezávislých částí. Všimněte si, že nezávislé musí být pouze samotné úlohy – nezávislé mohou být i výsledky, jako v případě mých panoramatických fotografií, ale také to může být tak, že výsledek každé úlohy přispívá k nějakému většímu výsledku. V takovém případě lze výsledky shromáždit v klientském systému a pak je dále zpracovávat (třeba i tak, že je znovu odešlete jako novou úlohu), aby vznikl konečný výstup.
To samozřejmě není jediné využití clusterových počítačů. Existují věci jako redundance a odolnost proti chybám, založené na tom, že váš klient rozesílá práci na libovolný počet serverů, které jsou k dispozici; pokud je některý server vyřazen z provozu kvůli údržbě (nebo se zhroutí nebo cokoli jiného), vaše zpracování může stále pokračovat na zbývajících serverech v clusteru.
To všechno jsou koncepty, které se obvykle uplatňují u mnohem větších a sofistikovanějších clusterových systémů – dokonce až u celých datových center cloudových služeb. Chci tím ale říct, že můžete vytvořit jednoduchý cluster pomocí velmi levných systémů Raspberry Pi a nejenže při tom získáte velmi užitečné znalosti a zkušenosti, ale také nakonec získáte užitečný zdroj, až budete hotovi.
Nyní přejdeme k hardwaru, který jsem pro tento projekt použil. Zmínil jsem se, že od doby, kdy jsem zveřejnil původní zápis, jsem do clusteru přidal další server. Stalo se tak proto, že jsem procházel web Pi-Shop.ch a všiml si Raspberry Pi 2 v1.2.
Celkové specifikace jsou stejné jako u původního Pi 2, ale nový model používá stejný procesor jako Pi 3 (ale s nižším taktem). Nic moc a pro většinu lidí to pravděpodobně ani není strašně zajímavé, protože Pi 3 je teď stejně mnohem populárnější. Ale stačilo to k tomu, abych si ho pořídil a přidal do clusteru.
Důležité na tomto přidání bylo, že jsem nemusel dělat nic s klientským (řídicím) systémem ani s žádným z ostatních serverů. Jednoduše jsem připravil nový počítač Pi 2 přesně stejným způsobem, jakým jsem připravil ostatní, a pak jsem ho připojil k vyhrazené bezdrátové síti klastru Pi. Když jsem příště spustil úlohu na klientovi, všiml si, že je nový server k dispozici, a začal ho používat spolu s ostatními.
V původním projektu jsem se také zmínil, že nemám dostatek adaptérů USB wi-fi pro připojení všech svých systémů Pi, a přidání nového Pi 2 samozřejmě znamenalo, že potřebuji adaptér i pro něj. V obchodě Pi-Shop je uvedeno několik nových adaptérů, takže jsem si řekl, že je to dobrá příležitost je vyzkoušet.
Nejdůležitějším kritériem, které je třeba mít na paměti při nákupu USB wi-fi adaptéru pro Raspberry Pi, je to, že chcete mít jistotu, že funguje správně po vybalení z krabice.
Vím, že to může znít hloupě, ale je to přesný opak přístupu, který uplatňuji při nákupu takových periferií pro ostatní své linuxové notebooky a stolní počítače. Předpokládám, že většina lidí kupuje a používá systémy Raspberry Pi za nějakým konkrétním účelem – ať už jde o vzdělávání, hobby nebo pro nějaký konkrétní projekt či použití zařízení. Samozřejmě je možné zprovoznit prakticky jakýkoli adaptér USB s prakticky jakoukoli distribucí Linuxu, ale pokud nechcete riskovat, že budete muset strávit značnou část svého školního/koníčkového/pracovního času nastavováním ovladačů, zvolte jednodušší cestu a ujistěte se, že jste si koupili adaptér, který již byl otestován a funguje.
Nejjednodušší způsob, jak se o tom přesvědčit, je koupit adaptér od autorizovaného distributora Raspberry Pi a ujistit se, že na jeho webové stránce je uvedeno, že adaptér, který kupujete, byl ověřen, aby fungoval s Pi.
První, co jsem vyzkoušel, bylo zařízení Miniature WiFi (802.11b/g/n) 150Mbps. Domnívám se, že se skutečně jedná o Adafruit Miniature WiFi Module, i když na obrázcích to tak nevypadá – možná se jedná o vlastní balení nebo něco podobného. Každopádně ten, který jsem dostal, vypadá jako na obrázku zde a skutečně fungoval hned po vybalení z krabice, jak bylo inzerováno. Stál jen 9,90 CHF (asi 8,99 €/ 8,00 GBP/ 10,50 USD).
Je založen na čipu Realtek RTL5370 a má modrou LED diodu napájení/spojení/stav.
Protože jsem byl v režimu „zkoušení nových věcí“ a všiml jsem si, že v Pi-Shopu je nabízen další USB wi-fi adaptér s vyšší propustností, rozhodl jsem se vyzkoušet i ten. Jmenuje se jednoduše ‚USB WiFi Adapter for Raspberry Pi (300Mbps)‘ a vypadá jako na obrázku vpravo.
Je podstatně dražší, stojí 23,90 CHF (asi 21,70 €/ 19,40 GBP/ 25 USD), takže se asi vyplatí si jeho koupi před koupí rozmyslet, než si pořídit ten výše uvedený. Nezapomeňte, že mluvíme o systémech Raspberry Pi, které nejsou proslulé rychlostí a efektivitou připojení USB. Takže rozdíl v rychlosti, který je v podstatě jedinou výhodou tohoto adaptéru, nemusí být při vašem skutečném používání zařízení významný.
Toto zařízení je založeno na čipu Realtek 8192SU a má také LED diodu napájení/spojení/stav.
Závěrečný nový kus hardwaru pro tento projekt je ten, o kterém si myslím, že se ukáže jako obecně nejužitečnější – TP-Link TL WR802N Wireless Nano Router.
Toto levné zařízení (cca 30 CHF/€27/£24/$32) je velmi malé a lehké a obsahuje řadu předdefinovaných a předem nakonfigurovaných režimů pro běžné použití. Použil jsem jej k nastavení izolované sítě WLAN bez připojení k internetu (režim routeru), ale samozřejmě může poskytovat připojení k internetu buď prostřednictvím svého konektoru RJ45 pro kabelovou síť (režim přístupového bodu), nebo prostřednictvím bezdrátového připojení WISP (režim hotspotu).
Lze jej také použít k doplnění stávající sítě wi-fi (režim rozšiřovače dosahu) nebo jako adaptér wi-fi pro zařízení, které má pouze připojení ke kabelové síti (režim klienta).
Síť WR802N se dodává s vlastním napájecím adaptérem, ale lze ji napájet také pomocí napájecího adaptéru Raspberry Pi (nebo jiné nabíječky MicroUSB pro chytré telefony), nebo dokonce připojením k portu USB počítače.
Moje první dojmy z tohoto zařízení jsou velmi pozitivní a očekávám, že bude velmi užitečné jak doma, tak na cestách.
Když jsem se rozhodl sestavit Pi Cluster, očekával jsem, že to bude geekovsky zajímavá věc, ale také jsem předpokládal, že ji zanedlouho zase rozeberu. Teď, když už funguje, jsem zjistil, že mě napadají další zajímavé způsoby, jak ho využít a jak ho vylepšit.
Pamatujte si, že k jeho zřízení nemusíte mít velký počet systémů Raspberry Pi – pro začátek stačí dva servery a klient. Ale pozor, jakmile ho jednou zprovozníte, možná zjistíte, že je to dobrá záminka k nákupu dalších a lepších kousků k jeho rozšíření.
- Raspberry Pi: Jak jsem postavil výpočetní cluster ve stylu OctaPi
- Raspberry Pi: Hands-on with Fedora 26
- Raspbian GNU/Linux:
- Raspberry Pi Zero W, praktické ukázky: Nová verze obsahuje instalovatelný obraz x86
- Raspberry Pi Zero W, praktické ukázky: Velmi vítaný nový člen rodiny
- Praktické použití: Raspberry Pi se 7palcovým dotykovým displejem a pouzdrem