Săptămâna trecută am folosit fiecare Raspberry Pi pe care îl aveam pentru a construi un cluster de calcul HexaPi cu șase noduri.
De atunci am fost întrebat de mai multe ori: la ce este bun? Așa că voi arunca o privire la ultima parte din Raspberry Pi Projects – Build an OctaPi, și voi adăuga și un exemplu simplu al meu.
Oh, și am mai adăugat încă un server Raspberry Pi la cluster, respectând în continuare regula mea de „nu există două servere la fel”, așa că acum este de fapt un cluster HeptaPi cu șapte servere. La sfârșitul acestei postări voi adăuga o descriere a unora dintre noile echipamente hardware pe care le-am achiziționat și folosit pentru acest proiect.
În primul rând, la ce este bun? Am un exemplu simplu din propria mea experiență. Călătoresc destul de mult, îmi place să fac multe fotografii cu o cameră digitală SLR și fac adesea panorame cu mai multe imagini (Alpii elvețieni sunt subiecte deosebit de bune pentru acest tip de fotografie). Când ajung acasă, folosesc hugin panorama photo stitcher pentru a îmbina aceste loturi de fotografii individuale în vederi panoramice mult mai mari.
Dacă fac această procesare panoramică pe un singur calculator, trebuie să fac eu însumi „programarea” – asta înseamnă că trebuie să stau cu ochii pe ea, iar când o panoramă este terminată trebuie să o încep pe următoarea.
Dacă devin un pic mai ambițios, pot configura un program de control pe loturi și apoi să pun la coadă grupurile de imagini care urmează să fie îmbinate, dar ele tot nu se fac decât una după alta. Dacă am mai multe calculatoare disponibile pentru această sarcină, atunci trebuie să fac eu însumi distribuirea imaginilor și recuperarea panoramelor și, din nou, trebuie să fac eu însumi „programarea” pe fiecare calculator. Oricum ar fi, este un proces relativ plictisitor și consumator de timp și, din păcate, de multe ori mă trezesc că nu mai am timp (sau răbdare) înainte ca toate fotografiile mele să fie procesate.
Cu clusterul HeptaPi, aș putea configura un procesor de procesare pe loturi, bazat pe oricare dintre exemplele Python incluse în proiectul de cluster OctaPi, și apoi să instalez hugin pe fiecare dintre serverele clusterului. Apoi aș putea introduce grupuri de imagini în procesorul de loturi, care le-ar distribui pe serverele clusterului pentru procesare și ar primi ca retur imaginea panoramică finalizată.
Investiția mea în acest sens ar fi scrierea programului de control al loturilor specific aplicației și apoi identificarea grupurilor de imagini care să fie procesate împreună. Odată făcut acest lucru, timpul efectiv necesar până când aș avea toate frumoasele mele imagini panoramice ar fi redus dramatic – și l-aș putea reduce și mai mult prin simpla adăugare în orice moment a mai multor sisteme Raspberry Pi la cluster!
Un răspuns mai general la întrebarea pentru ce este bun clusterul Pi este: orice fel de lucrări sau sarcini care pot fi împărțite într-un număr de bucăți independente. Rețineți că doar sarcinile în sine trebuie să fie independente — rezultatele pot fi, de asemenea, independente, ca în cazul fotografiilor mele panoramice, dar se poate întâmpla și ca rezultatul fiecărei sarcini să contribuie la un rezultat mai mare. În acest caz, rezultatele pot fi colectate pe sistemul client și apoi procesate în continuare (poate chiar trimițându-le din nou ca o nouă sarcină) pentru a produce un rezultat final.
Desigur că aceasta nu este singura utilizare a calculatoarelor cluster. Există lucruri precum redundanța și toleranța la erori, bazate pe faptul că clientul dumneavoastră expediază munca către oricâte servere sunt disponibile; dacă un server este scos din funcțiune pentru întreținere (sau se prăbușește, sau orice altceva), procesarea dumneavoastră poate continua în continuare pe celelalte servere din cluster.
Toate acestea sunt concepte care se aplică de obicei la sisteme cluster mult mai mari și mai sofisticate – chiar până la centre întregi de date de servicii cloud. Dar ceea ce vreau să spun aici este că puteți construi un cluster simplu folosind sisteme Raspberry Pi cu costuri foarte mici și nu numai că puteți dobândi cunoștințe și experiență foarte utile făcând acest lucru, ci și să vă treziți cu o resursă utilă atunci când ați terminat.
Acum, trecând la hardware-ul pe care l-am folosit pentru acest proiect. Am menționat că am mai adăugat un server la cluster de când am postat scrierea inițială. Acest lucru s-a întâmplat pentru că navigam pe site-ul web Pi-Shop.ch și am observat Raspberry Pi 2 v1.2.
Specificațiile generale sunt aceleași cu cele ale Pi 2 original, dar noul model folosește același CPU ca și Pi 3 (dar cu o viteză de ceas mai mică). Nu este mare lucru și, probabil, nici nu este teribil de interesant pentru majoritatea oamenilor, deoarece Pi 3 este oricum mult mai popular acum. Dar a fost suficient pentru a mă motiva să îmi iau unul și să îl adaug la cluster.
Ceea ce este important de remarcat în legătură cu această adăugare este că nu a trebuit să fac nimic la sistemul client (controler), sau la oricare dintre celelalte servere. Pur și simplu am pregătit noul Pi 2 exact în același mod în care le pregătisem pe celelalte și apoi l-am conectat la rețeaua wireless dedicată Pi Cluster. Data următoare când am pornit o lucrare pe client, acesta a observat că noul server era disponibil și a început să îl folosească împreună cu toate celelalte.
Am menționat, de asemenea, în proiectul original că nu aveam suficiente adaptoare USB wi-fi pentru a conecta toate sistemele mele Pi și, desigur, adăugarea noului Pi 2 a însemnat că aveam nevoie de un adaptor și pentru acesta. Pi-Shop are câteva adaptoare noi listate, așa că m-am gândit că aceasta este o șansă bună de a le încerca.
Cel mai important criteriu de care trebuie să țineți cont atunci când cumpărați un adaptor USB wi-fi pentru un Raspberry Pi este că doriți să vă asigurați că acesta funcționează corect din fabrică.
Știu că poate părea o prostie, dar este exact opusul abordării pe care o adopt atunci când cumpăr astfel de periferice pentru restul laptopurilor și desktopurilor mele cu Linux. Pornesc de la premisa că majoritatea oamenilor cumpără și folosesc sistemele Raspberry Pi pentru un anumit scop specific – fie că este vorba de educație, hobby sau pentru un proiect specific sau pentru utilizarea unui dispozitiv. Desigur, este posibil ca aproape orice adaptor USB să funcționeze cu aproape orice distribuție Linux, dar dacă nu vreți să riscați să vă petreceți o parte semnificativă din timpul petrecut la școală/hobby/lucru pentru a configura driverele, alegeți calea ușoară și asigurați-vă că cumpărați un adaptor care a fost deja testat și funcționează.
Cel mai simplu mod de a fi sigur de acest lucru este să cumpărați de la un distribuitor autorizat Raspberry Pi și să vă asigurați că pe pagina lor web scrie că adaptorul pe care îl cumpărați a fost verificat pentru a funcționa cu Pi.
Primul pe care l-am încercat a fost dispozitivul Miniature WiFi (802.11b/g/n) 150Mbps. Cred că acesta este de fapt modulul Adafruit Miniature WiFi Module, deși imaginile nu arată la fel – poate că este un ambalaj personalizat sau ceva de genul acesta. Oricum, cel pe care l-am primit arată ca în poza de aici și, într-adevăr, a funcționat direct din cutie, așa cum a fost anunțat. A costat doar 9,90 CHF (aproximativ 8,99 euro/8,00 lire sterline/10,50 dolari).
Se bazează pe un cip Realtek RTL5370 și are un LED albastru de alimentare/link/status.
Din moment ce eram în modul „încercați lucruri noi” și am observat că există un alt adaptor wi-fi USB cu un debit mai mare oferit la Pi-Shop, am decis să îl încerc și pe acela. Acesta se numește simplu „USB WiFi Adapter for Raspberry Pi (300Mbps)” și arată ca în imaginea din dreapta.
Este considerabil mai scump, la 23,90 CHF (aproximativ 21,70 euro/19,40 lire sterline/25 dolari), așa că, probabil, merită să vă gândiți mai bine înainte de a-l cumpăra decât pe cel de mai sus. Nu uitați că vorbim despre sisteme Raspberry Pi și că acestea nu sunt renumite pentru viteza și eficiența conexiunilor lor USB. Așadar, diferența de viteză, care este cam singurul avantaj al acestui adaptor, s-ar putea să nu fie semnificativă în utilizarea reală a dispozitivului.
Acest dispozitiv se bazează pe cipul Realtek 8192SU și are, de asemenea, un LED de alimentare/link/status.
Ultima piesă nouă de hardware pentru acest proiect este cea care cred că se va dovedi a fi cea mai utilă în general – TP-Link TL WR802N Wireless N Nano Router.
Acest dispozitiv low-cost (în jur de 30 CHF/€27/£24/$32) este foarte mic și ușor și include o serie de moduri predefinite și preconfigurate pentru utilizări comune. Eu l-am folosit pentru a configura o rețea WLAN izolată fără conexiune la internet (Router Mode), dar, bineînțeles, poate oferi conectivitate la internet fie prin intermediul conectorului de rețea cu fir RJ45 (Access Point Mode), fie prin intermediul unei conexiuni WISP fără fir (Hotspot Mode).
De asemenea, poate fi folosit pentru a completa o rețea wi-fi existentă (Range Extender Mode) sau ca adaptor wi-fi pentru un dispozitiv care are doar o conexiune de rețea cu fir (Client Mode).
WR802N este livrat cu propriul adaptor de alimentare, dar poate fi alimentat și de un adaptor de alimentare Raspberry Pi (sau de un alt încărcător MicroUSB pentru smartphone), sau chiar prin conectarea la un port USB al unui computer.
Primele mele impresii despre acest dispozitiv au fost foarte pozitive și mă aștept ca acesta să fie foarte util atât acasă, cât și atunci când călătoresc.
Când am decis să construiesc Cluster Pi, mă așteptam să fie un lucru interesant de genul gee-whiz, dar am presupus, de asemenea, că îl voi demonta din nou în scurt timp. Acum că este în funcțiune, descopăr că mă gândesc la alte moduri interesante de a-l folosi și de a-l îmbunătăți.
Rețineți, nu trebuie să aveți un număr mare de sisteme Raspberry Pi pentru a configura unul – două servere și un client sunt suficiente pentru început. Dar aveți grijă, odată ce l-ați pus în funcțiune s-ar putea să descoperiți că este o scuză bună pentru a cumpăra mai multe și mai bune biți și piese pentru a-l extinde.
- Raspberry Pi: Cum am construit un cluster de calcul de tip OctaPi
- Raspberry Pi: Hands-on cu Fedora 26
- Raspbian GNU/Linux: Noua versiune include o imagine x86 instalabilă
- Raspberry Pi Zero W, hands-on: Un nou membru al familiei foarte binevenit
- Hands-on: Raspberry Pi 7-inch Touch Display și carcasă