Apache™ Hadoop® è un progetto software open source che consente di elaborare in modo efficiente grandi set di dati. Invece di utilizzare un solo computer molto potente per elaborare e immagazzinare i dati, con Hadoop è possibile unire in cluster prodotti hardware di largo consumo per analizzare set di dati di grandi dimensioni in parallelo.
L'ecosistema Hadoop dispone di molte applicazioni e motori di esecuzione, che offrono gli strumenti adatti alla maggior parte dei carichi di lavoro di analisi. Con Amazon EMR è semplice creare e gestire cluster elastici completamente configurati di istanze Amazon EC2 che eseguono Hadoop e altre applicazioni del suo ecosistema.
Con il termine Hadoop ci si riferisce in genere al progetto Apache Hadoop, che include MapReduce (framework di esecuzione), YARN (gestione risorse) e HDFS (storage distribuito). Amazon EMR include inoltre EMRFS, un connettore che consente ad Hadoop di utilizzare Amazon S3 come layer di storage.
Nell'ecosistema Hadoop, tuttavia, sono presenti anche altre applicazioni e framework, ad esempio strumenti che consentono query a bassa latenza, interfacce utente grafiche per l'esecuzione di query interattive, una serie di interfacce quali SQL e database NoSQL distribuiti. L'ecosistema Hadoop include molti strumenti open source progettati per aggiungere funzionalità ai componenti di base di Hadoop. È inoltre possibile usare Amazon EMR per installare in un cluster e configurare con la massima semplicità strumenti quali Hive, Pig, Hue, Ganglia, Oozie e HBase. Oltre ad Hadoop e Amazon EMR, è anche possibile eseguire altri framework, quali Apache Spark per l'elaborazione in memoria e Presto per interattività SQL.
Amazon EMR installa e configura in modo programmatico nel progetto Hadoop applicazioni come Hadoop MapReduce, YARN e HDFS in tutti i nodi del cluster. È anche possibile installare applicazioni aggiuntive quali Hive e Pig.
Hadoop MapReduce, un motore di esecuzione in Hadoop, elabora carichi di lavoro utilizzando il framework MapReduce, che suddivide i processi in attività di piccole dimensioni che possono essere distribuite sui diversi nodi di un cluster Amazon EMR. Il motore MapReduce di Hadoop è costruito prevedendo la possibilità che possano verificarsi errori nei computer all'interno del cluster e dispone pertanto di un'ampia tolleranza ai guasti. Se si verifica un errore su un server durante l'esecuzione di un'attività, Hadoop trasferisce l'attività su un altro computer fino al suo completamento.
È possibile scrivere programmi per MapReduce in Java, oppure utilizzare Hadoop Streaming per eseguire script personalizzati in parallelo, Hive e Pig (se installati nel cluster Amazon EMR) per un maggiore livello di astrazione su MapReduce oppure altri strumenti per interagire con Hadoop.
A partire da Hadoop 2, la gestione delle risorse è affidata a Yet Another Resource Negotiator (YARN). YARN tiene traccia di tutte le risorse all'interno del cluster e ne assicura in modo dinamico la corretta allocazione per portare a termine le attività previste dai processi di elaborazione. YARN è in grado di gestire i carichi di lavoro Hadoop MapReduce e di altri framework distribuiti quali Apache Spark, Apache Tez e molti altri.
Utilizzando il file system EMR o EMRFS (EMR File System) nel cluster Amazon EMR, è possibile sfruttare Amazon S3 come layer dati per Hadoop. Amazon S3 è un servizio altamente scalabile, progettato per durare e dai costi contenuti, ideale per i datastore per l'elaborazione dei Big Data. Memorizzando i dati in Amazon S3 è possibile separare il layer di elaborazione da quello di storage, permettendo di dimensionare il cluster Amazon EMR secondo i livelli di CPU e di memoria strettamente necessari per il carico di lavoro e senza dover prevedere nodi aggiuntivi con il solo scopo di sfruttare lo storage su cluster. Per ridurre i costi, sarà inoltre possibile terminare il cluster Amazon EMR in caso di inattività, dal momento che i dati sono memorizzati in Amazon S3.
EMRFS è ottimizzato per Hadoop, perciò consente di eseguire operazioni di lettura e scrittura in parallelo in Amazon S3 in modo efficiente e di elaborare oggetti crittografati con crittografia Amazon S3 lato server e lato client. EMRFS consente di utilizzare Amazon S3 come data lake, mentre Hadoop in Amazon EMR può essere impiegato come layer di query elastico.
Hadoop include un sistema di storage distribuito, chiamato Hadoop Distributed File System o HDFS, che memorizza i dati su dischi locali del cluster in blocchi di grandi dimensioni. Il sistema HDFS dispone di un fattore di replica configurabile (il cui valore di default è 3) che garantisce maggiori disponibilità e durabilità. HDFS monitora i processi di replica e distribuisce i dati su tutti i nodi in caso di rimozione a causa di errori o aggiunti.
HDFS viene installato automaticamente con Hadoop nel cluster Amazon EMR e può essere utilizzato insieme ad Amazon S3 per memorizzare i dati in ingresso e in uscita. Amazon EMR configura inoltre Hadoop in modo da utilizzare HDFS e il disco locale per i dati parziali creati durante i processi Hadoop MapReduce, anche quando i dati in ingresso si trovano in Amazon S3.
È possibile avviare un nuovo cluster Hadoop in modo dinamico e con la massima semplicità, oppure aggiungere server a un cluster Amazon EMR esistente, riducendo in modo significativo il tempo necessario per rendere disponibili nuove risorse agli utenti e ai data scientist. Hadoop sulla piattaforma AWS permette di migliorare l'agilità riducendo i costi e il tempo necessari per allocare risorse per esigenze di sperimentazione e sviluppo.
Le attività di configurazione, networking, installazione di server e manutenzione di Hadoop possono essere complesse. Amazon EMR è un servizio gestito che provvede a soddisfare i requisiti infrastrutturali di Hadoop, così potrai concentrarti sulla tua attività.
L'ambiente Hadoop può essere integrato con la massima semplicità con altri servizi, ad esempio Amazon S3, Amazon Kinesis, Amazon Redshift e Amazon DynamoDB, oltre ad Amazon EMR, per abilitare dinamicità dei dati, flussi di lavoro e processi di analisi sui molteplici servizi disponibili sulla piattaforma AWS.
Molti processi Hadoop hanno per definizione molti picchi di elaborazione. Un processo di tipo ETL, ad esempio, può venire eseguito ogni ora, quotidianamente oppure mensilmente; un processo di elaborazione di modelli finanziari oppure di sequenziamento genetico viene invece avviato solo alcune volte all'anno. Utilizzando Hadoop in Amazon EMR, è possibile avviare con la massima semplicità un cluster in grado di eseguire questo tipo di carichi di lavoro, salvarne i risultati e infine disattivare le risorse Hadoop quando non servono più, eliminando costi accessori di manutenzione dell'infrastruttura.
L'utilizzo di Hadoop in Amazon EMR fornisce la flessibilità necessaria per avviare cluster in un qualsiasi numero di zone di disponibilità in qualsiasi regione AWS. Se si verifica un problema o una minaccia potenziale in una determinata regione o zona, è possibile aggirarlo in pochi minuti creando un cluster in una zona differente.
Quando la capacità viene pianificata prima di distribuire un ambiente Hadoop, spesso succede che alcune risorse rimangano inutilizzate, o al contrario che la capacità non sia sufficiente. Con Amazon EMR, è possibile accedere esattamente alle risorse necessarie, aumentando e riducendo la capacità con solo pochi minuti di preavviso.
Hadoop viene spesso utilizzato nei carichi di lavoro per i Big Data per la sua eccezionale scalabilità. Per aumentare la potenza di calcolo del cluster Hadoop, è sufficiente aggiungere server con i requisiti di CPU e memoria appropriati.
Hadoop offre elevati livelli di durabilità e disponibilità e allo stesso tempo permette di elaborare carichi di lavoro di analisi in parallelo. Ciò che rende Hadoop lo strumento ideale per l'elaborazione di Big Data è la combinazione di disponibilità, durabilità e scalabilità. Con Amazon EMR bastano pochi minuti per creare e configurare un cluster di istanze Amazon EC2 che eseguono Hadoop; creare valore aggiunto dai dati non è mai stato così facile.
Hadoop può essere utilizzato per analizzare i dati di clickstream e classificare gli utenti esaminandone le preferenze. Si rivela quindi decisivo per le aziende di marketing che desiderano pubblicare inserzioni più efficaci grazie allo studio dei dati di clickstream e dei log delle impressioni.
Scopri come Razorfish usa Hadoop in Amazon EMR per l'analisi dei dati di clickstream »
Hadoop è ideale per elaborare i log generati da applicazioni Web e app mobili. Hadoop consente di trasformare dati parzialmente o non strutturati in informazioni strategiche su applicazioni e utenti.
Le applicazioni dell'ecosistema di Hadoop, ad esempio Hive, permettono agli utenti di sfruttare Hadoop MapReduce tramite interfaccia SQL, consentendo analisi su data warehouse distribuiti, di grandi dimensioni e con tolleranza agli errori. Usa Hadoop per memorizzare i dati e consentire agli utenti di inviare query su dati di qualsiasi dimensione.
La mappatura di un genoma, con la sua enorme mole di dati, è un'applicazione che sfrutta particolarmente la rapidità e l'efficienza fornite da Hadoop. AWS ha reso pubblici i dati del progetto 1000 Genomes perché fossero disponibili gratuitamente alla comunità scientifica.
Per la sua natura scalabile e i costi ridotti, Hadoop è un servizio ideale per i carichi di lavoro di estrazione, trasformazione e caricamento dei dati o ETL (Extract Transform Load), ad esempio raccolta, ordinamento, unione e aggregazione di set di dati di grandi dimensioni per l'utilizzo con sistemi a valle.
Scopri come Euclid usa Hadoop in Amazon EMR per ETL e aggregazione dei dati »
Apache e Hadoop sono marchi commerciali della Apache Software Foundation.