Che cos'è Hadoop?
Immagina la seguente sfida: hai molti dati e con molto intendo almeno Terabyte. Vuoi trasformare questi dati o estrarre alcune informazioni ed elaborarle in un formato che viene indicizzato, compresso o "digerito" in modo da poter lavorare con esso.
Hadoop è in grado di parallelizzare un tale processo di elaborazione e, qui viene la parte migliore, si occupa di cose come la memorizzazione ridondante dei file, la distribuzione dell'attività su diversi computer sul cluster ecc. (Sì, è necessario un cluster , altrimenti Hadoop non è in grado di compensare la perdita di prestazioni del framework).
Se osservi per la prima volta l'ecosistema di Hadoop troverai 3 grandi termini: HDFS (Hadoop Filesystem), Hadoop stesso (con MapReduce) e HBase (il "database" a volte colonna, che non si adatta esattamente)
HDFS è il filesystem utilizzato da Hadoop e HBase. È un ulteriore livello in cima al normale filesystem degli host. HDFS suddivide i file caricati in blocchi (in genere 64 MB) e li mantiene disponibili nel cluster e si occupa della loro replica.
Quando Hadoop ottiene un'attività da eseguire, ottiene il percorso dei file di input su HDFS, il percorso di output desiderato, un Mapper e una Classe di riduzione. Il Mapper e il Reducer sono di solito una classe Java passata in un file JAR (ma con Hadoop Streaming è possibile utilizzare qualsiasi strumento di comando che si desidera). Il mappatore viene chiamato per elaborare ogni voce (di solito per riga, ad esempio: "restituisce 1 se la riga contiene una parola F * non valida") dei file di input, l'output viene passato al riduttore, che unisce i singoli output in un desiderato altro formato (es .: aggiunta di numeri). Questo è un modo semplice per ottenere un contatore di "parolacce".
La cosa interessante: il calcolo della mappatura viene eseguito sul nodo: si elaborano i blocchi in modo lineare e si spostano solo i dati semi-digeriti (di solito più piccoli) sulla rete verso i riduttori.
E se uno dei nodi muore: ce n'è un altro con gli stessi dati.
HBase sfrutta la memoria distribuita dei file e memorizza le sue tabelle, suddivise in blocchi sul cluster. HBase dà, contrariamente a Hadoop, accesso casuale ai dati.
Come vedete HBase e Hadoop sono molto diversi da RDMBS. Inoltre a HBase mancano molti concetti di RDBMS. La modellazione dei dati con trigger, dichiarazioni preparate, chiavi esterne ecc. Non è la cosa che HBase pensava di fare (non sono sicuro al 100%, quindi correggimi ;-))
Can Django integrato con Hadoop?
Per Java è semplice: Hadoop è scritto in Java e tutte le API sono lì, pronte per l'uso.
Per Python/Django non lo so (ancora), ma sono sicuro che si può fare qualcosa con Hadoop streaming/Jython come ultima risorsa. Ho trovato il seguente: Hadoopy e Python in Mappers and Reducers.
Non ho usato Hadoop. Ho appena letto la prima pagina. Penso che sia solo una soluzione per filesystem. Non sostituirà un RDBMS e potrebbe non funzionare bene con uno. Penso che mettere un database su un'unità logica distribuita su più macchine possa causare seri problemi di prestazioni; questo richiede maggiori ricerche se hai intenzione di provarlo. – dokkaebi
Hadoop funziona su semplici file di grandi dimensioni e non ha indicizzazione. Se vuoi un accesso casuale ai dati hai bisogno di HBase. Entrambi si basano su HDFS, che gestisce file enormi in un cluster. Darò una spiegazione migliore più tardi :-) – romedius
@romedius per favore, non posso aspettare :). Finora tutte le letture che ho passato mi rendono più confuso. –