Pro e contro di un cluster Pi?


33

Ho visto molti post che mi chiedevano come costruire un "supercomputer" o un cluster con Raspberry Pis, ma ho trovato ben poco con i pro e i contro della creazione di una rete di Pis. Sono interessato a costruire il mio piccolo cluster, ma ho alcune domande.

Una volta raggruppati, gli RPI agiscono come un singolo computer virtuale o hai il controllo individuale su tutti gli RPI? Un nodo ha il controllo degli altri?

C'è qualcosa che un RPI può fare che è limitato in un cluster? Ad esempio, avrò ancora il controllo su tutte le singole porte GPIO?

Quanto più veloce rende il pi? Diciamo che creo un cluster a 2 nodi, con clock superiore a 1 GHz ciascuno, avrò essenzialmente un processore "dual core 1 GHz"? Il cluster deve essere in multipli binari? (ex. 1,2,4,8,16,32,64)

Questo complicherà il mio web hosting in esecuzione tramite NGINX per pi? Alla potenza di elaborazione di determinati nodi possono essere assegnate attività specifiche che gestiscono? Come il nodo 1 gestirà le richieste del servizio Web, il nodo 2 gestisce l'archiviazione cloud, ecc.

Risposte:


49

Alcune domande interessanti Penso che potresti fraintendere leggermente il funzionamento dei "supercomputer" realizzati con Raspberry Pis. Non funzionano come un sistema di condivisione automatica del carico. Sono progettati per qualcosa chiamato programmazione parallela , in cui un'attività complessa è suddivisa in pezzi che possono essere eseguiti contemporaneamente. Il Pi principale nel cluster (nodo principale) è responsabile dell'organizzazione dell'attività complessiva e ogni Pi nel cluster (nodi client) esegue il lavoro assegnato e riporta i risultati al nodo principale. Le biblioteche come OpenMPI sono fondamentali per questo.

Inoltre, i cluster Raspberry Pi che sono stati creati non sono stati creati come dispositivi di elaborazione efficienti. Sono stati costruiti come piattaforme di sviluppo . È molto più economico acquistare 32 Raspberry Pis rispetto a 32 PC desktop. In questo modo puoi sviluppare e testare il tuo software di programmazione parallela molto più economico. L'unica alternativa se non si dispone di Pis o PC è richiedere il tempo della CPU su un super computer reale. A seconda delle dimensioni del computer in questione, farlo può costare denaro o avere tempi di attesa lunghi prima che le risorse siano disponibili. Ecco perché le persone hanno creato i propri cluster personali. Ha senso eseguire la tua applicazione sul vero computer quando saprai che funziona!

Quindi, tienilo a mente e passa alle tue domande specifiche.

In un cluster appropriato, Pis non funziona come un singolo computer virtuale. Hai il controllo libero su ogni Pi sotto forma di un'attività o di un sistema di allocazione delle risorse come il Sun Grid Engine . Le attività vengono assegnate ai nodi in base alle esigenze e, una volta terminate le attività, le risorse di quel nodo vengono liberate per nuove attività.

In un cluster, poiché ogni Pi esegue la propria copia di Linux, ogni Pi manterrà il controllo locale delle sue porte GPIO. Non sono sicuro di come il software lo userebbe davvero in un ambiente di elaborazione parallelo, ma eccoti qui.

Un cluster non rende un Pi più veloce, perché non sono un singolo computer. Ciò che guadagni è semplicemente la capacità di fare di più in una volta. Non sei limitato a multipli di due. Esiste tuttavia un limite superiore pratico reale per i computer cluster in base alle attività eseguite. Immagina se stai eseguendo un calcolo parallelo su molti Pis che richiedono 200 passaggi. Tuttavia, ogni passaggio successivo richiede le informazioni che ogni Pi ha calcolato sul passaggio precedente. Quindi ogni Pi deve ricevere dati da ogni altro Pi ogni iterazione. A seconda del tempo impiegato da ogni iterazione per calcolare, puoi finire per dedicare più tempo all'invio dei dati che al calcolo. Questo è il motivo per cui la maggior parte dei supercomputer utilizza InfiniBandRete. È molto veloce, quindi puoi fare di più calcoli. La soluzione a questo è usare meno Pis ma farli lavorare di più ogni iterazione, ma ciò potrebbe non essere possibile a seconda dell'algoritmo. Da qui il limite superiore pratico. (Su Pis questo sarebbe particolarmente negativo perché Ethernet USB è piuttosto lenta.)

Quindi, su un'applicazione pratica, web hosting distribuito! Puoi approfittare di più Pis qui, non è solo un cluster normale. Di 'che hai 5 Pis. Li chiameremo GatewayPi, WebPi1, WebPi2, WebPi3 e DataPi. GatewayPi si affaccia su Internet, eseguendo Nginix per gestire le richieste Web, ma non esegue alcuna elaborazione. Invece quello che fa è il bilanciamento del carico. Utilizza il proxy e inoltra casualmente la richiesta in arrivo a WebPi1, WebPi2 o WebPi3. Abbiamo appena triplicato la potenza della nostra infrastruttura Web, perché ora possiamo gestire più richieste contemporaneamente. Che dire di DataPi? DataPi ha collegato un disco rigido che memorizza tutti i nostri dati web e sta eseguendo un server NFS. WebPiX monta la condivisione NFS in modo che abbia accesso ai dati per l'elaborazione. In questo modo dobbiamo solo eseguire i backup in una posizione e possiamo risparmiare spazio su disco.

Quello che ho appena descritto è essenzialmente il modello utilizzato da grandi aziende come Google e Facebook, ma ridotto alla dimensione di Raspberry Pi. L'unico problema è, a causa dei costi di Pis, che in questo modo si crea essenzialmente la stessa piattaforma di sviluppo (ma per il servizio Web) di un cluster di Pis per la programmazione parallela. Utilizzando più Pis, a causa della loro capacità computazionale relativamente bassa, presto si perde in termini di prestazioni al consumo energetico mentre si procede verso la gestione di grandi quantità di dati. Ma solo per imparare? Sono perfetti


Quindi, se sto lavorando a un progetto domestico, per l'hosting web economico di 2 siti Web, il controllo delle ventole di raffreddamento tramite GPIO, SSH, FTP, archiviazione cloud, un'automazione domestica, varrebbe la pena creare un piccolo cluster per distribuire correttamente le attività?
SuperAdmin,

4
+1 Sono arrivato a questa domanda curioso e me ne sono andato con un po 'di educazione. Bella risposta.
jrhorn424,

@iOSNoob, se sei l'unica persona che lo utilizza e fai una qualsiasi di queste cose alla volta, potrebbe non valere un cluster anche allora, perché le risorse sono allocate come necessario. Se semplicemente non c'è abbastanza RAM o hai più carico di una singola persona, probabilmente ne vale la pena. Metterei cose come fan e domotica su Pis separati semplicemente per sicurezza. Vuoi davvero 0 possibilità che qualcuno stia scherzando con cose a casa tua ... Se devi saltare un Pi in più per arrivare a quei sistemi tanto meglio. Questo è un ulteriore livello di sicurezza.
Fred,

@ jrhorn424 Sono contento che ti sia piaciuto! Di recente ho partecipato a un evento di elaborazione (super) ad alte prestazioni, quindi questa roba era fresca nella mia mente. Tempismo perfetto per scriverlo.
Fred,

1
Per un esempio concreto della quasi esatta architettura di web hosting che Fred ha descritto: pidramble.com (link al codice / istruzioni su GitHub dove puoi crearne uno tuo con qualsiasi sapore di Pi).
geerlingguy,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.