Warning: fopen(/homepages/30/d192847469/htdocs/evilprofessor.co.uk/public_html/wp-content/gt-cache/it/_it_tag_script) [function.fopen]: failed to open stream: Disk quota exceeded in /homepages/30/d192847469/htdocs/evilprofessor.co.uk/public_html/wp-content/plugins/global-translator/translator.php on line 1183

Warning: flock() expects parameter 1 to be resource, boolean given in /homepages/30/d192847469/htdocs/evilprofessor.co.uk/public_html/wp-content/plugins/global-translator/translator.php on line 1184

Warning: fwrite(): supplied argument is not a valid stream resource in /homepages/30/d192847469/htdocs/evilprofessor.co.uk/public_html/wp-content/plugins/global-translator/translator.php on line 1188

Warning: fclose(): supplied argument is not a valid stream resource in /homepages/30/d192847469/htdocs/evilprofessor.co.uk/public_html/wp-content/plugins/global-translator/translator.php on line 1190
Evilprofessor.co.uk »script di

Posts tagged: script

Ufficio Grid Computing con gli ambienti virtuali - Parte 4

Con , Venerdì 4 Dicembre 2009 11:59

Introduzione

Io lavoro in una società dove eseguire i processi di elaborazione in batch molti milioni di record di dati ogni giorno e ho pensato di recente su tutte le macchine che si siedono intorno ogni giorno senza far nulla per diverse ore. Non sarebbe un bene se abbiamo potuto utilizzare queste macchine per sostenere la potenza di elaborazione dei nostri sistemi? In questa serie di articoli che sto andando a guardare i potenziali benefici di impiegare un ufficio griglia con ambienti virtualizzati.

In parte 3 abbiamo creato la nostra macchina virtuale, l'elaborazione e configurare macchine Windows a diventare idle-time.

L'esecuzione del codice più recente

Inevitabilmente dopo aver creato il tuo business cambierà lavoratori logica, bug verrà trovata, il codice più velocemente più efficiente sarà prodotta lasciando in tal modo i lavoratori seduti intorno trattamento dei dati utilizzando vecchio codice puzzolente . Come possiamo allora sì che siamo sempre utilizzando la versione ultima e più grande dei nostri script di elaborazione?

Ci sono alcuni modi molto semplici semplici che possiamo fare questo, il trucco, però, è quello di ridurre la potenza di elaborazione e il traffico di rete in questo senso. Iniziamo con la più semplice delle soluzioni e migliorare lentamente nel corso di un paio di iterazioni.

Il primo metodo sarebbe quello di collegare semplicemente il nostro lavoro di controllo del server (tramite samba, FTP, o simili) e tirare giù l'ultima versione del codice. Non molto efficiente, ma farà il lavoro. Consente di migliorare un po 'che, come sulla creazione di uno script rsync e l'utilizzo che ogni volta, invece? In alternativa, quello di mettere il nostro script più recente trasformazione in sovversione analizzando il codice inizialmente e poi semplicemente aggiornando il nostro codice su ogni run ( svn update )?

Alla fine potremmo ritrovarci con uno script bash (chiamato da cron ogni 10 minuti) che sembra semplice come questo:

  #! / Bin / sh
 se ps ax | grep-v grep | grep php > / dev / null
 poi
     echo "Job sta elaborando, uscita"
 altro
     echo "Il lavoro non è in esecuzione, inizia ora"
     cd / path / to / lavoro / copy
     svn update
     php yourJobProcessingScript.php
 fi 

Ora possiamo essere sicuri che ad ogni run siamo sicuramente in funzione l'ultimo codice. Siamo garantire questo aggiornando il nostro codice di base ogni volta che esegue una corsa e riducendo il traffico di rete solo il trasferimento di file attraverso le differenze la nostra rete.

Nel mio setup dimostrazione, ho fatto esattamente come sopra. Subversion è stato installato sul mio server processo di elaborazione e ho semplicemente tirato l'ultimo codice da un ramo 'lavoratore' usando 'svn update'. Ho anche aggiunto un tag numero di versione per il mio script di elaborazione che è stato restituito al database come parte del rendimento dei risultati. In questo modo ho potuto vedere che il mio codice veniva aggiornato ogni volta che ho copiato il mio baule nel ramo lavoratore vale a dire che mi è stato sicuramente l'esecuzione dello script più recente elaborazione.

Utilizzando i dati più recenti

Se la vostra elaborazione del processo si avvale di fonti di dati ad un certo punto questi stanno per essere aggiornato troppo. A meno che voi chiamate le fonti di dati su una base molto raro si sta andando ad inondare la rete con traffico non appena i lavoratori iniziare a portare tutto a un punto morto. Per la mia soluzione, ho deciso che mi piacerebbe spostare le mie fonti di dati in giro con le mie macchine virtuali.

Tenere sei cavalli lì! Cosa succede se le mie fonti di dati sono ENORMI? Beh, questa è davvero un caso di quantità di dati stiamo parlando? Potrebbe essere più conveniente installare un ulteriore disco rigido più grande in ogni macchina che per l'acquisto di un server di elaborazione. Si tratta di una questione di budget, ed è fino al business a decidere. E 'forse che le vostre fonti di dati sono così grandi che il suo solo irrealizzabile per mantenere tale quantità di dati nelle vostre macchine worker. In quel caso cosa faresti? Beh, abbiamo potuto guardare chiamando un server locale di dati, ma questo potrebbe causare problemi con la rete. In questo caso un sistema a griglia come questo può diventare realistico da includere nel vostro ambiente di ufficio. Può anche essere che si può guardare in strategie alternative di esecuzione, ad esempio solo chiamare i tuoi operai 08:00-06:00 ogni notte e / o le richieste di limitazione di origine dei dati.

Passando diciamo i nostri dati quantità fonti a 100GB di dati. Ebbene sì questo è un po 'di dati per spostarsi all'interno della rete su un aggiornamento. Come ci assicuriamo che abbiamo l'ultima copia dei dati in questo caso? Rsync è una possibilità, ma personalmente penso che eseguendo la vostra ultima fonte di dati sul server dei processi di trasformazione e di impostazione come un master in replica (con un bel log bin lungo) potrebbe essere la strada da percorrere:

replicazione Impostando ciascuno dei vostri operai come uno schiavo per gli aggiornamenti lavoro di controllo del server per le vostre fonti di dati trickle down bene ai vostri lavoratori senza un enorme aumento delle attività di rete (cioè a meno che si esegue un aggiornamento enorme di dati e tutti i tuoi calci i lavoratori in in una sola volta). Questo ha dei vantaggi rispetto a rsync che non si otterrebbe una lunga pausa prima di ogni lavoro, come gli aggiornamenti del database, il mysql daemon sul ​​lavoratore continuamente aggiornare i propri dati, mentre l'elaborazione continua.

Ecco come ho impostato il mio server dimostrazione. Per impostare la replica ho seguito la guida sul sito mySQL ( impostazione di una replica ) e in 20 minuti ho avuto il mio lavoratore inital replicare il controllo dei processi server dataset. Per ogni lavoratore addizionale le impostazioni di replica e il processo di lavoro ogni volta che il VM è stato copiato.

Riassunto

In questa sezione di questo articolo abbiamo visto come sia facile e indolore è quello di mantenere il vostro codice di elaborazione fino a data da rsync using o subverion (SVN) per fare il lavoro e ridurre il traffico di rete alla stessa file.Un Abbiamo anche discusso di come per mantenere le informazioni sull'origine dati up-to-date, consentendo che possano essere estesi ad ognuno dei vostri lavoratori. Così zona assicurando che tenere il passo con la logica di business e di informazione nel nostro sistema ufficio griglia. Ci sarà ovviamente innumerevoli alternative a svolgere questi compiti, ma qui erano due semplici esempi per mostrare come sia facile una soluzione è da trovare.

La prossima volta

Nella parte finale di questa serie, giustamente intitolato Parte 5 , parleremo di distribuzione di questo sistema per. Cercherò di riassumere quanto è stato appreso e ciò che sono riuscito a creare.













Tema di Panorama Themocracy

4 visitatori online
3 persone, 1 bot, 0 utenti
Numero max di visitatori oggi: 11 alle 01:15 UTC
Questo mese: 40 alle 23-05-2012 03:33 am UTC
Quest'anno: 69 alle 27-02-2012 09:56 am UTC
Tutto il tempo: 130 28-03-2011 alle 10:40 UTC