Post

Visualizzazione dei post con l'etichetta MapReduce

MapReduce: Volume III

Dove eravamo rimasti? Ah, si...all'implementazione concreta della classe astratta che permette l'esecuzione dell'algoritmo di MapReduce... Come dicevamo nel precente puntata, per portare a termine il nostro scopo, ci faremo dare una mano dalla libreria "Task Parallel Library", o TPL. Tale libreria, in precedenza rilasciata come estensione del .NET Framework, a partire dalla versione 4.0 è stata incorporata nel framework stesso, ponendosi come approccio più efficace per la gestione di processi multi-thread e asincroni in generale. Ma non perdiamo ulteriore tempo e vediamo il codice, per poi illustrare come sia nata la sua implementazione. Naturalmente la classe astratta deve implementare i requisiti dell'interfaccia "IMapReduceProcessor"; esporre le proprietà che servono per "osservare" lo stato, e il metodo di "Execute" che rappresenta il cuore dell'algoritmo. Come detto in precedenza, affichè MapReduce possa essere a...

MapReduce e TPL

Nel precedente post ho illustrato la "teoria" che si cela dietro all'algoritmo di "MapReduce". Ora veniamo al lato pratico della cosa. Prima di tutto è necessario pensare a come implementare i personaggi che partecipano alla nostra scenetta: il nostro palazzo, il coordinatore, e gli assistenti. Il palazzo, ovviamente non può essere che un dato enumerabile; il coordinatore è la classe che implementa fisicamente l'algoritmo di MapReduce; e, per finire, i nostri assistenti saranno delle entità che possono lavorare contemporaneamente: dei banalissimi thread. Il concetto di "thread" e "parallelismo" è molto comune nell'informatica. Negli ultimi anni, cioè da quando ci si è avvicinati troppo al limite fisico della velocità dei processori, si è cercato di migliorare la potenza dei sistemi andando nella direzione di aumentare il numero delle CPU, piuttosto che spingere ulteriormente sull'acceleratore del "clock". Con la pa...

MapReduce: do more with less...

Recentemente mi sono trovato a dover ristrutturare una applicazione parecchio datata; e con "datata" intendo che sono passato circa tre anni dalla sua prima implementazione (che nell'informatica sono equiparabili ad una era geologica). Diciamo anche che l'applicazione in oggetto ha sempre sofferto delle conseguenze della formula magica "il cliente ha fretta" e "ci metto una pezza". Il prodotto che ne è uscito è la classica "palla di pezze", composta da una miriade di soluzioni cervellotiche, dove è evidente che non si è fatto un utilizzo adeguato della materia cerebrale in momenti di elevata pressione. Tutto considerato, la soluzione soddisfa i requisiti: i risultati attesi dal cliente sono quelli sperati e non ci sono intoppi particolari; se non che si arriva al fatidico giorno dove l'utente di turno vuole processare un file con circa una "mezza milionata" di elementi. Il povero applicativo ce la mette tutta, ma non c...