La storia di Hadoop – Parte I

Secondo alcuni ricercatori Hadoop è un adolescente di circa 12 anni, misurati secondo i canoni umani. Per altri studiosi di informatica è un singolare esemplare di maschio alfa adulto. Poi ci sono i soliti complottisti che ipotizzano una montatura architettata da un singolo elefantino di pezza che vorrebbe conquistare il mondo.

In realtà si mormora che sia un ecosistema ampio e variegato di strumenti per l’immagazzinamento, la preparazione e l’elaborazione di una grande quantità di dati in modo distribuito e localizzato.

Ma facciamo un salto indietro, agli albori della sua storia.

Nel 2002, l’allora direttore della divisione Search dell’Internet Archive, tale Doug Cutting, e uno studente della Washington University, Mike Cafarella, volevano costruire un motore di ricerca open source. Perché? Semplice, non c’era ancora il predominio di pochi in questo settore (chi si ricorda di Altavista, Excite, Lycos, LookSmart, ecc..?) e sembrava una buona idea avere un’alternativa aperta.

Doug Cutting
Doug Cutting

 

Mike Cafarella
Mike Cafarella

Lo scopo era tanto semplice quanto complesso nella sua realizzazione: implementare un sistema in grado di scalare con il crescere del web stesso per effettuare il crawling dei siti internet (il progetto Nutch) e indicizzarne i contenuti (quello che sarebbe divenuto Lucene).

Il sistema doveva avere un’architettura necessariamente distribuita e un framework per il processing delle informazioni basato sulle logiche di sort e merge. Come afferma lo stesso Doug Cutting, in un’intervista a Gigaom, all’epoca si pensava che fosse sufficiente indicizzare circa 1 miliardo di pagine internet. A titolo puramente informativo si stima che attualmente siano presenti circa 1,2 miliardi di siti internet e 4,5 miliardi di pagine web. Entrambi avevano ipotizzato che l’hardware necessario sarebbe costato circa 500.000 dollari e che il costo mensile di mantenimento dell’intera infrastruttura si sarebbe attestato sui 30.000 dollari.

Nonostante questo decisero che ne sarebbe valsa la pena.

Un prototipo embrionale di Nutch venne quindi realizzato e fatto girare su 4 nodi: era in grado di indicizzare 100 milioni di pagine internet circa, ma era molto oneroso da gestire e alquanto instabile. Non meno importante, era decisamente complicato da rendere scalabile.

Proprio nel momento di maggiore impasse venne in aiuto dei due programmatori Google, che a ottobre del 2003, pubblicò un white paper di 15 pagine inerente un file system distribuito denominato GFS (Google File System). L’implementazione di una tecnologia come quella descritta nel documento di Google avrebbe risolto una parte significativa dei problemi di scaling finora riscontrati.

Lo stesso Cafarella ricorda che all’epoca era abbastanza orgoglioso del lavoro svolto, durato diversi mesi quando, leggendo il white paper di Google, esclamò: “Oh, that’s a much better way of doing it. We should do it that way“.

Iniziò così lo sviluppo del file system distribuito da utilizzare con Nutch e che sarebbe stato chiamato NDFS (Nutch Distributed File System).

E’ bene ricordare che in quella fase tutto il lavoro era in carico ai soli Cutting e Cafarella, i quali potevano dedicarsi solo part-time al progetto. Quasi ultimato il lavoro di implementazione del nuovo file system, si rendeva subito necessario risolvere la restante parte del problema. Come processare quell’imponente mole di dati in modo distribuito e scalare?

E Google arrivò nuovamente in loro aiuto, pubblicando, a dicembre del 2004, un secondo white paper che illustrava il funzionamento di un framework denominato MapReduce. Nel whitepaper si descriveva un framework in grado di processare in modo distribuito, secondo una logica di map e di reduce, un’enorme mole di dati.

E’ ancora Cafarella a ricordare così quel momento: “Then, by the time we had a first working version, the MapReduce paper came out and that seemed like a pretty good idea, too.“.

Personalmente aggiungerei: “Thanks guys!”, ma è solo l’umile opinione di chi vi scrive.

Lo sviluppo procedeva quindi con rinnovato vigore e all’inizio del 2005 era disponibile la prima implementazione di Nutch su MapReduce. Per la metà dello stesso anno tutti i principali algoritmi di Nutch vennero migrati per funzionare con NDFS e MapReduce. Il lavoro fu svolto interamente in Java, laddove la versione MapReduce di Google era scritta in C++.

E’ il dicembre del 2005: il nuovo prototipo veniva implementato su di un cluster a 20 nodi. I risultati si rivelarono entusiasmanti per l’intraprendente duo. Il sistema risultava molto più semplice da programmare e manutenere, riusciva a scalare a diverse centinaia di milioni di pagine web ed era stabile. Ma il tutto era ancora distante dal poter gestire a ordini di grandezza superiori.

A febbraio del 2006, dopo quasi due anni di lavoro, NDFS e MapReduce vennero estrapolati dal progetto Nutch per confluire in un nuovo sub-project di Lucene, Hadoop (dal nome di un elefantino giocattolo che apparteneva al figlio di Doug Cutting).

Doug Cutting con Hadoop
Doug Cutting con Hadoop

E’ il momento del battesimo di HDFS (Hadoop Distributed File System) e di MapReduce.

Add a Comment

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *