Post

Visualizzazione dei post da gennaio, 2013

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