Clustering con PVM: differenze tra le versioni
Nessun oggetto della modifica |
m (versioni compatibili) |
||
(8 versioni intermedie di 4 utenti non mostrate) | |||
Riga 1: | Riga 1: | ||
{{ | {{Versioni compatibili|Wheezy|Jessie}} | ||
__TOC__ | |||
== | == Introduzione == | ||
PVM (Parallel Virtual Machine) è un software che permette a diversi computer in rete di essere utilizzati come se fossero uno solo, aggregando le risorse di ognuno per ottenere una capacità computazionale maggiore.<br /> | |||
È una soluzione molto più economica e modulare che incrementare la dotazione hardware (CPU, RAM, etc.) di una singola macchina e permette di risolvere problemi molto complessi a costi molto contenuti.<br /> | |||
Utilizzato oggi su larga scala, è considerato lo standard per quanto riguarda il calcolo parallelo. | |||
Lo schema di funzionamento è abbastanza semplice: dato un insieme di macchine che si vogliono aggregare in cluster, su ognuna di esse si installerà e configurerà PVM. Ad installazione e configurazione completata, da ciascuna di queste macchine sarà possibile creare una vm cluster aggregando i nodi desiderati. | |||
In questa guida verrà trattata la realizzazione di un cluster composto da due macchine: ''node0'' e ''node1'' | |||
== Installazione e configurazione == | |||
PVM è presente nel ramo ''main'' dei [[repository]] di Debian e può essere installato semplicemente con: | |||
<pre> | |||
# apt-get install pvm pvm-dev | |||
</pre> | |||
Per poterlo utilizzare correttamente si dovrà modificare il file <code>/etc/profile</code> di ogni nodo aggiungendo: | |||
<pre> | |||
#variable for PVM | |||
PVM_ROOT=/usr/lib/pvm3 | |||
export PVM_ROOT | |||
PVM_ARCH=`$PVM_ROOT/lib/pvmgetarch` | |||
export PVM_ARCH | |||
PVM_RSH=/usr/bin/ssh | |||
export PVM_RSH | |||
PVM_TMP=/tmp | |||
export PVM_TMP | |||
#Add pvm binary to PATH | |||
PATH=$PVM_ROOT/bin:$PATH | |||
export PATH | |||
</pre> | |||
Si dovrà anche modificare il file <code>/usr/lib/pvm3/conf/LINUX.def</code> per specificare il metodo che si desidera utilizzare per connettersi (in questo caso SSH): | |||
<pre> | |||
#LINUX.def | |||
ARCHCFLAGS = -DSYSVSIGNAL -DNOWAIT3 -DRSHCOMMAND=\'''"/usr/bin/ssh\"''' \ | |||
-DNEEDENDIAN -DFDSETNOTSTRUCT -DHASERRORVARS \ | |||
-DCTIMEISTIMET -DSYSERRISCONST | |||
</pre> | |||
I nodi che faranno parte del cluster dovranno essere specificati nel file <code>/etc/hosts</code> di ogni nodo: | |||
<pre> | |||
127.0.0.1 localhost | |||
127.0.1.1 debian | |||
192.168.100.1 node0 | |||
192.168.100.8 node1 | |||
</pre> | |||
''(Si faccia attenzione ad impostare i corretti [[hostname]])''<br /> | |||
<br /> | |||
Infine, sempre su ogni nodo, si dovrà creare un utente specifico: | |||
<pre> | |||
root@nodeX:~# adduser pvmuser | |||
</pre> | |||
{{Suggerimento|È possibile evitare il dover ripetere le configurazioni effettuate su ciascun nodo a patto di disporre di home directory condivise. }} | |||
== Connessione SSH senza password == | |||
Openssh-server dovrà essere installato su tutti i nodi interessati.<br /> | |||
Affinché i nodi riescano a comunicare senza che sia necessario ogni volta inserire la password di login al momento della connessione SSH si dovrà generare una chiave nel server (si abbia cura di non inserire alcuna password...): | |||
<pre> | |||
pvmuser@node0:~$ ssh-keygen -t rsa | |||
</pre> | |||
e trasferirla sui nodi: | |||
<pre> | |||
pvmuser@node0:~$ ssh-copy-id pvmuser@192.168.100.8 | |||
</pre> | |||
== Identificazione dei nodi == | |||
Gli hostname degli host "partecipanti" al cluster dovranno essere inseriti nel file <code>.rhosts</code> presente nella home di ''pvmuser'' (creare il file se non esiste): | |||
<pre> | |||
pvmuser@node0:~$ cat /home/pvmuser/.rhosts | |||
node1 pvmuser | |||
node0 pvmuser | |||
</pre> | |||
Questa operazione dovrà essere fatta su ciascun nodo del cluster. | |||
== Avvio di PVM == | |||
PVM è pronto per essere lanciato da uno qualsiasi dei nodi: | |||
<pre> | |||
pvmuser@node0:~$ pvm | |||
pvm> conf | |||
conf | |||
1 host, 1 data format | |||
HOST DTID ARCH SPEED DSIG | |||
node0 40000 LINUX 1000 0x00408841 | |||
pvm> add node1 | |||
add node1 | |||
1 successful | |||
HOST DTID | |||
node1 80000 | |||
pvm> conf | |||
conf | |||
2 hosts, 1 data format | |||
HOST DTID ARCH SPEED DSIG | |||
node0 40000 LINUX 1000 0x00408841 | |||
node1 80000 LINUX 1000 0x00408841 | |||
pvm> quit | |||
quit | |||
Console: exit handler called | |||
pvmd still running. | |||
</pre> | |||
Come si può notare tutte le operazioni sono state effettuate dentro la console di pvm.<br /> | |||
Nello specifico: | |||
* '''conf''': mostra la configurazione attuale | |||
* '''add <hostname>''': aggiunge l'host all'elenco di pvm | |||
* '''delete <hostname>''': rimuove l'host dall'elenco | |||
* '''quit''': esce dalla console (pvm continua ad agire in background) | |||
* '''halt''': per interrompere pvm | |||
Se si vuole evitare di dover ogni volta inserire gli hostname delle macchine appartenenti al cluster è possibile richiamare un file appositamente creato che contenga l'elenco degli host desiderati: | |||
<pre> | |||
root@node0:~# cat /etc/pvm.nodes | |||
node0 | |||
node1 | |||
</pre> | |||
Detto file dovrà essere richiamato in questo modo: | |||
<pre> | |||
pvmuser@node0:~$ pvm /etc/pvm.nodes | |||
</pre> | |||
== Test di esempio == | |||
Nei repository sono presenti dei test di esempio che possono essere avviati dalla console di PVM: | |||
<pre> | |||
root@node0:~# apt-get install pvm-examples | |||
</pre> | |||
Per eseguirli dalla console di PVM si utilizzerà il comando ''spawn -> <program name>'': | |||
<pre> | |||
pvmuser@node0:~$ pvm | |||
pvm> spawn -> hello | |||
spawn -> hello | |||
[5] | |||
1 successful | |||
t4000c | |||
pvm> [5:t4000c] i'm t4000c | |||
[5:t4000c] from t80008: hello, world from node0 | |||
[5:t4000c] EOF | |||
[5:t80008] EOF | |||
[5] finished | |||
</pre> | |||
Happy clustering! | |||
[[ | {{Autori | ||
[[Categoria: | |Autore= [[Utente:Pmate|pmate]] | ||
(originariamente scritta da [[Utente:J3no|J3no]]) | |||
|Estesa_da= | |||
|Verificata_da= | |||
|Numero_revisori=0 | |||
}} | |||
[[Categoria:Cluster]] |
Versione attuale delle 18:31, 10 apr 2016
Attenzione. Questa guida è da considerarsi abbandonata, per via del tempo trascorso dall'ultima verifica.
Potrà essere resa obsoleta, previa segnalazione sul forum, se nessuno si propone per l'adozione. |
Versioni Compatibili Debian 7 "wheezy" Debian 8 "jessie" |
Introduzione
PVM (Parallel Virtual Machine) è un software che permette a diversi computer in rete di essere utilizzati come se fossero uno solo, aggregando le risorse di ognuno per ottenere una capacità computazionale maggiore.
È una soluzione molto più economica e modulare che incrementare la dotazione hardware (CPU, RAM, etc.) di una singola macchina e permette di risolvere problemi molto complessi a costi molto contenuti.
Utilizzato oggi su larga scala, è considerato lo standard per quanto riguarda il calcolo parallelo.
Lo schema di funzionamento è abbastanza semplice: dato un insieme di macchine che si vogliono aggregare in cluster, su ognuna di esse si installerà e configurerà PVM. Ad installazione e configurazione completata, da ciascuna di queste macchine sarà possibile creare una vm cluster aggregando i nodi desiderati.
In questa guida verrà trattata la realizzazione di un cluster composto da due macchine: node0 e node1
Installazione e configurazione
PVM è presente nel ramo main dei repository di Debian e può essere installato semplicemente con:
# apt-get install pvm pvm-dev
Per poterlo utilizzare correttamente si dovrà modificare il file /etc/profile
di ogni nodo aggiungendo:
#variable for PVM PVM_ROOT=/usr/lib/pvm3 export PVM_ROOT PVM_ARCH=`$PVM_ROOT/lib/pvmgetarch` export PVM_ARCH PVM_RSH=/usr/bin/ssh export PVM_RSH PVM_TMP=/tmp export PVM_TMP #Add pvm binary to PATH PATH=$PVM_ROOT/bin:$PATH export PATH
Si dovrà anche modificare il file /usr/lib/pvm3/conf/LINUX.def
per specificare il metodo che si desidera utilizzare per connettersi (in questo caso SSH):
#LINUX.def ARCHCFLAGS = -DSYSVSIGNAL -DNOWAIT3 -DRSHCOMMAND=\'''"/usr/bin/ssh\"''' \ -DNEEDENDIAN -DFDSETNOTSTRUCT -DHASERRORVARS \ -DCTIMEISTIMET -DSYSERRISCONST
I nodi che faranno parte del cluster dovranno essere specificati nel file /etc/hosts
di ogni nodo:
127.0.0.1 localhost 127.0.1.1 debian 192.168.100.1 node0 192.168.100.8 node1
(Si faccia attenzione ad impostare i corretti hostname)
Infine, sempre su ogni nodo, si dovrà creare un utente specifico:
root@nodeX:~# adduser pvmuser
Suggerimento È possibile evitare il dover ripetere le configurazioni effettuate su ciascun nodo a patto di disporre di home directory condivise. |
Connessione SSH senza password
Openssh-server dovrà essere installato su tutti i nodi interessati.
Affinché i nodi riescano a comunicare senza che sia necessario ogni volta inserire la password di login al momento della connessione SSH si dovrà generare una chiave nel server (si abbia cura di non inserire alcuna password...):
pvmuser@node0:~$ ssh-keygen -t rsa
e trasferirla sui nodi:
pvmuser@node0:~$ ssh-copy-id pvmuser@192.168.100.8
Identificazione dei nodi
Gli hostname degli host "partecipanti" al cluster dovranno essere inseriti nel file .rhosts
presente nella home di pvmuser (creare il file se non esiste):
pvmuser@node0:~$ cat /home/pvmuser/.rhosts node1 pvmuser node0 pvmuser
Questa operazione dovrà essere fatta su ciascun nodo del cluster.
Avvio di PVM
PVM è pronto per essere lanciato da uno qualsiasi dei nodi:
pvmuser@node0:~$ pvm pvm> conf conf 1 host, 1 data format HOST DTID ARCH SPEED DSIG node0 40000 LINUX 1000 0x00408841 pvm> add node1 add node1 1 successful HOST DTID node1 80000 pvm> conf conf 2 hosts, 1 data format HOST DTID ARCH SPEED DSIG node0 40000 LINUX 1000 0x00408841 node1 80000 LINUX 1000 0x00408841 pvm> quit quit Console: exit handler called pvmd still running.
Come si può notare tutte le operazioni sono state effettuate dentro la console di pvm.
Nello specifico:
- conf: mostra la configurazione attuale
- add <hostname>: aggiunge l'host all'elenco di pvm
- delete <hostname>: rimuove l'host dall'elenco
- quit: esce dalla console (pvm continua ad agire in background)
- halt: per interrompere pvm
Se si vuole evitare di dover ogni volta inserire gli hostname delle macchine appartenenti al cluster è possibile richiamare un file appositamente creato che contenga l'elenco degli host desiderati:
root@node0:~# cat /etc/pvm.nodes node0 node1
Detto file dovrà essere richiamato in questo modo:
pvmuser@node0:~$ pvm /etc/pvm.nodes
Test di esempio
Nei repository sono presenti dei test di esempio che possono essere avviati dalla console di PVM:
root@node0:~# apt-get install pvm-examples
Per eseguirli dalla console di PVM si utilizzerà il comando spawn -> <program name>:
pvmuser@node0:~$ pvm pvm> spawn -> hello spawn -> hello [5] 1 successful t4000c pvm> [5:t4000c] i'm t4000c [5:t4000c] from t80008: hello, world from node0 [5:t4000c] EOF [5:t80008] EOF [5] finished
Happy clustering!
Guida scritta da: pmate
(originariamente scritta da J3no) |
Debianized 20% |
Estesa da: | |
Verificata da: | |
Verificare ed estendere la guida | Cos'è una guida Debianized |