Apache Hadoop
Apache Hadoop è la forza trainante della crescita dell’industria dei Big Data e viene menzionato spesso insieme a tecnologie come Hive e Pig. Ma che cosa fa realmente e perché si ha bisogno di tutte queste “tecnologie” collegate come Oozie, Zookeeper e Flume?
Hadoop offre la capacità di elaborare grandi quantità di dati economicamente, indipendentemente dalla loro struttura. In generale, l’ordine della grandezza va dai 10-100 gigabyte in su. Che cosa cambia rispetto ai “vecchi” metodi di elaborazione?
Le aziende esistenti che si occupano di data warehouse e di database relazionali eccellono nel trattamento dei dati strutturati e nella capacità di memorizzazione di grandi quantità di dati anche se ad un costo: questo limita i tipi di dati che possono essere elaborati e rende inadatti i data warehouse per analisi veloci su grandi quantità di dati non strutturati. In queste situazioni, Hadoop può fare una grande differenza.
Nel corso degli anni, Hadoop ha acquisito componenti che migliorano la sua usabilità e le sue funzionalità e, ora, il termine “Hadoop” rappresenta l’intero ecosistema.
In partiolare, i componenti principali sono:
- Ambari: distribuzione, configurazione e il monitoraggio;
- Flume: raccolta e importazione di dati di log;
- HBase: database con struttura a tabelle che può contenere miliardi di righe;
- HCatalog: condivisione degli schema e dei tipi di dati su Pig, Hive e MapReduce;
- HDFS: File system distribuito di Hadoop;
- Hive: Data warehouse con accesso SQL-like;
- Mahout: libreria di algoritmi di data mining di apprendimento e di dati macchina;
- MapReduce: calcolo parallelo su cluster dei server;
- Pig: linguaggio di programmazione di alto livello per l”elaborazione dei dati;
- Oozie: gestione del flusso di lavoro;
- Sqoop: importazione dei dati da database relazionali;
- Whirr: distribuzione di cluser su cloud;
- Zookeeper: gestione delle configurazioni;
Hadoop visto da vicino
Il nucleo: MapReduce
Creato da Google in risposta al problema di creazione indici per la ricerca web, il framework MapReduce è il cuore su cui si basano la maggior parte delle elaborazione dei Big Data. Oltre ad Hadoop altri database NoSQL, come Vertica o MongoDB, si basano su questo framework.
La novità più importante introdotta da MapReduce è la capacità di dividere un dataset su più nodi ed eseguire una query su ogni nodo, in parallelo. La distribuire del calcolo risolve il problema delle grandi quantità di dati memorizzati su una singola macchina.
File System: HDFS
Come già discusso sopra, MapReduce permette di distribuire il calcolo su più server. Per permettere ciò, ciascun server deve avere accesso ai dati.
Questo è il ruolo della HDFS, il File System Distribuito di Hadoop.
I server di un cluster Hadoop possono fallire e non interrompere il processo di calcolo. HDFS replica i dati in ogni istanza dei cluster e, al termine di ogni processo di elaborazione, ogni nodo ritornerà i risultati all’HDFS.
L’HDFS non vincola la tipologia di informazioni da memorizzare infatti, vi si possono trovare sia dati strutturati sia non strutturati (a differenza dei database relazionali che richiedono una struttura ben definita).
Con HDFS, è lo sviluppatore a dare un senso ai dati tramite gli algoritmi d’analisi.
Accesso ai dati: Pig e Hive
Hadoop offre due soluzioni per rendere la programmazione e l’estrazione dei dati più facili: Pig e Hive.
Pig è un linguaggio di programmazione che semplifica le operazioni più comuni: caricamento dati, elaborazione dei dati e memorizzare del risultato finale.
Le funzionalità fornite da Pig possono aiutare a dare un senso ai dati semi-strutturati, come i file di log; il linguaggio è estendibile tramite Java per aggiungere ulteriori tipi di dati;
Hive permette di operare come una data warehouse perchè è più adatto con strutture di dati prevalentemente statiche che hanno la necessità di essere analizzate frequentemente. I dati presenti nell’HDFS possono essere elaborati tramite delle query utilizzando una sintassi simile a SQL. Come con Pig, le funzionalità di Hive sono estendibili.
Migliorare l’accesso ai dati: HBase, Sqoop e Flume
Hadoop, al suo interno, è un sistema orientato ai batch ovvero, i dati vengono caricati nell’HDFS, elaborati e poi recuperati. Questo è un po’ un ritorno al passato e, spesso, si necessita dell’accesso casuale ai dati.
HBase è un database con struttura a colonne che viene eseguito sull’HDFS e il suo obiettivo, come BigTable di Google, è quello di memorizzare miliardi di righe di dati e garantirne un accesso rapido.
MapReduce può utilizzare HBase sia come sorgente sia come destinazione per i suoi calcoli e Hive/Pig possono essere utilizzati per l’interazione.
Per consentire l’accesso casuale ai dati, HBase impone delle restrizioni: le elaborazioni dei dati con Hive sono 4-5 volte più lente rispetto all”uso normale dell’HDFS e la quantità massima di dati memorizzabile è di circa un petabyte(rispetto al limite di oltre 30 petabyte dell”HDFS).
L’interoperabilità di Hadoop con gli altri sistemi è fornita da Sqoop e Flume. Sqoop è uno strumento progettato per importare dati da database relazionali in Hadoop direttamente nell”HDFS o in Hive.
Flume, invece, è progettato per recuperare dati di log da più web server e salvarli direttamente su HDFS, dopo averli aggregati.
Flusso di lavoro: Zookeeper e Oozie
Con l’aumentare delle applicazioni distribuite in esecuzione nei cluster Hadoop, nasce la necessità di servizio distribuito per il coordinamento delle singole parti perchè i componenti dei nodi devono essere sincronizzati tra loro e allineati sulle configurazioni. Tutto ciò è gestito da Zookeeper.
I sistemi che utilizzano Hadoop possono contenere spesso delle trasformazioni complesse, lagate tra loro da dipendenze. Oozie fornisce funzioni per la pianificazione del flusso di lavoro per gestire i vari processi.
Gestione e configurazione dei cluster: Ambari
Alcune funzioni più comunemente incluse nelle configurazioni Hadoop sono il monitoraggio e la gestione dei nodi. Ambari si occupa di queste funzionalità, facilitando gli amministratori di sistema nella configurazione di Hadoop, nell”aggiornamenti dei cluster e nel controllo dei servizi.
Download
Il 12 settembre 2014 è stata rilasciata la versione 2.5.1 di Apache Hadoop e la si può recuperare dal sito ufficiale a questo link.