Posts tagged: svn

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.

Ufficio Grid Computing con gli ambienti virtuali - Parte 1

Con , Venerdì 4 Dicembre, 2009 11:23

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.

Come PHP developer ho intenzione di utilizzare gli strumenti che uso ogni giorno e cioè Linux, mySQL , PHP, VirtualBox e Subversion (SVN). Comunque spero che questa guida si adatterà ad altri linguaggi e tecnologie altrettanto bene.

La soluzione che fornirà sarà molto liberamente ispirato al tipo di lavorazione che avevamo bisogno per raggiungere ciò però non può essere vero l'articolo per intero, come farò cambiare le cose per la semplicità, o per produrre scenari di utilizzo più interessanti.

Questi ambienti virtualizzati verrà eseguito su macchine windows in quanto questo è ciò che la maggior parte degli uffici eseguire. Il trattamento che le macchine per ufficio non dovrebbe interferire con il personale l'utilizzo di tali macchine, dovrebbe richiedere alcuna manutenzione alla macchina, ed essere facilmente utilizzabile a nuove macchine man mano che diventano disponibili. Inoltre, le nuove macchine virtuali non dovrebbe richiedere alcuna configurazione aggiuntiva in quanto riduce notevolmente la scalabilità e la facilità con cui il sistema della griglia può essere esteso.

Perché Distribuire un Grid Computing Office?

In primo luogo si può pensare, perché non utilizzare una risorsa cloud computing come piattaforma EC2 di Amazon ? Beh, le ragioni potrebbero essere diverse, ad esempio:

  • Non si affiderà determinati dati in un ambiente di cloud computing
  • Non puoi inserire determinati dati in un ambiente di cloud computing per motivi legali (ad esempio, dati di lasciare il paese), potenzialmente per motivi legali, ad esempio documenti NHS.
  • Si desidera mantenere le unità di elaborazione chiudere e avere il pieno controllo l'hardware troppo
  • Non hai i fondi del progetto di eseguire istanze di cloud
  • Il vostro ufficio non ha una connessione a internet e quindi la sua non è possibile utilizzare una risorsa nuvola
  • Non ti piace la pioggia, le nuvole suggeriscono pioggia, quindi si tiene ben lontano

Sono sicuro che l'elenco potrebbe continuare, ma penso che basta per ora.

Vantaggi di una Grid Computing di Office

Beh, lascia fare un po 'di matematica (e in vero stile fisica permette di fare alcune ipotesi radicali). Immaginate di avere grande beefy del server che esegue l'elaborazione di 100 lavori al giorno. In ufficio si dispone di 50 macchine che sono al minimo 16 ore al giorno, ognuna di queste macchine è del 10% potente come il sever di elaborazione beefy. (Tutti i risultati qui sono arrotondati a sottovalutare aumento delle prestazioni).

Quindi, 1 macchina * potenza del 10% * 2/3 volte = 0,067 ossia il 1 ° di elaborazione desktop in tempo di inattività in grado di elaborare 6 posti di lavoro completi al giorno.

Se ora questa scala ci vogliono fino a 15 desktop folli per elaborare i processi come molti al giorno, come il server di elaborazione principale fa.

Quindi, nel nostro ufficio finta di 50 macchine potremmo aumentare il nostro potere di trasformazione dal 1 server fino a 4 server di elaborazione completi, o potremmo essere l'elaborazione di 400 lavori al giorno invece di 100.

Avviso, per nessun investimento in hardware nuovo la vostra azienda ha appena aumentato la sua capacità di elaborazione batch 4 volte! Potenzialmente si sta andando ad aumentare il consumo di energia, ma dalla maggior parte degli ambienti di ufficio sono stato a macchine sono generalmente lasciati durante la notte in ogni caso, così si potrebbe vedere questa come iniziativa verde.

Altri vantaggi anche significare che gli investimenti in nuove (o aggiornato) server di elaborazione può essere ritardato se le macchine d'ufficio sono sufficienti e che, come si migliora la potenza delle vostre macchine d'ufficio la griglia ufficio diventa più potente automaticamente.

Technologies

Quello che vi serve? (O più correttamente ciò che ho usato):

  • Macchine per ufficio Idle (nel mio caso un ricambio vecchio Windows XP laptop)
  • VirtualBox (o un altro software di virtualizzazione client)
  • Una macchina virtuale con PHP, mySQL running l'esecuzione di un taglio verso il basso OS, sto chiamando questi miei server Limp :)
  • Offerte di lavoro per l'esecuzione
  • Server di lavoro (può essere un'altra macchina virtuale da qualche parte)

Lavori tipici

I tipi di lavoro che questo sistema è progettato per funzionare è la seguente:

  • Sistema riceve un elenco di dati su cui dobbiamo corrispondere e restituire risultati
  • Corrispondenza consiste nel verificare / ricerca diversi (abbastanza statica) fonti di dati
  • I risultati provenienti da fonti di dati può richiedere un'ulteriore conferma, la fusione, la verifica di ulteriori fonti di dati in risposta ai risultati
  • I dati vengono restituiti con i record corrispondenti pienamente convalidati e trasformati
  • Ogni record all'interno di un lavoro è indipendente dal resto

Quindi, fondamentalmente stiamo guardando l'esecuzione di lavori che richiedono una miscela di ricerche nei database e qualche scricchiolio numero, uno scenario abbastanza tipico in un ambiente aziendale.

Le soluzioni di rete non sono solo vantaggioso per l'elaborazione dei lavori di questo tipo. In sostanza, qualsiasi processo che può essere suddivisa in unità indipendenti possono essere eseguiti in parallelo. Vedere questo wikipedia per esempi ed ulteriori informazioni: Grid Computing , ma un paio di esempi famosi sono Seti @ Home e BIONC . Ci sono strutture per l'esecuzione di griglie di calcolo, e questi sono ben merita di essere esaminata.

Che cosa otteniamo?

Entro la fine di questi articoli spero di mostrare che la distribuzione di una griglia di ufficio non deve essere costoso o estremamente dispendioso di tempo. Io vado a discutere:

  • Impostazione del sistema di controllo di lavoro, configurazione del processo di
  • Creare una macchina virtuale idoneo trattamento
  • Come impostare il sistema su una macchina Windows
  • Garantire che stai usando l'ultima codice e dati
  • Distribuzione e benchmarking
  • Guardando al futuro

Sarò edificio (ok ho costruito, poi scrisse questo) una applicazione di esempio per testare i concetti su una macchina locale con Windows XP e la mia macchina 'GridMachine' virtuale. Il mio server di controllo del lavoro sarà la mia macchina principale che corre Fedora 11 .

Questo è in alcun modo lo scopo di dimostrare un sistema completamente funzionante robusta, il suo significato più di una dimostrazione e la discussione mostrando che queste cose può essere raggiunto in uno spazio di tempo ragionevolmente breve e con poca spesa. Non esitate a inviarmi commenti, correzioni o miglioramenti e farò del mio meglio per mantenere questo articolo aggiornato alla corrispondenza.

La prossima volta

In parte 2 inizierò guardando il sistema di controllo del lavoro, e in che modo i posti di lavoro dovrebbe essere configurato in modo da ottenere la massima quantità di elaborazione, assicurando nel contempo che ogni lavoro viene elaborato a colpo sicuro.













Tema di Panorama Themocracy

5 visitatori online
4 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