Apache Hadoop in Amazon EMR

Perché Apache Hadoop su EMR?

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.

Applicazioni e framework nell'ecosistema Hadoop

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). È anche possibile installare Apache Tez, un framework di nuova generazione utilizzabile al posto di Hadoop MapReduce come motore di esecuzione. 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 su Amazon EMR, è anche possibile eseguire altri framework, quali Apache Spark per l'elaborazione in memoria e Presto per interattività SQL.

Hadoop: componenti fondamentali

Amazon EMR installa e configura in modo programmatico nel progetto Hadoop applicazioni come Hadoop MapReduce, YARN, HDFS e Apache Tez in tutti i nodi del cluster.

Hadoop MapReduce e Tez, motori di esecuzione nell'ecosistema Hadoop, elaborano i carichi di lavoro impiegando framework che suddividono le attività in processi di piccole dimensioni, distribuendoli sui nodi di un cluster Amazon EMR. Sono stati progettati prevedendo la possibilità che, in qualsiasi momento, possano verificarsi errori su una delle qualsiasi macchine 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 altra macchina fino al suo completamento.

È possibile scrivere programmi per MapReduce e Tez in Java, utilizzare Hadoop Streaming per eseguire script personalizzati in parallelo, impiegare Hive e Pig per ottenere livelli più elevati di astrazione su MapReduce e Tez o 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 permette di gestire carichi di lavoro Hadoop MapReduce e Tez, nonché qualsiasi altro framework distribuito come Apache Spark.

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, a elevata durabilità 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. Inoltre, il cluster Amazon EMR potrà essere terminato quando è inattivo per ridurre i costi, 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. Crittografare HDFS con una configurazione di sicurezza di Amazon EMR è inoltre molto semplice. 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.

Vantaggi di Hadoop e Amazon EMR

È 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, impostazione di configurazioni di sicurezza e manutenzione di Hadoop possono essere complesse. Amazon EMR è un servizio gestito che provvede a soddisfare i requisiti infrastrutturali di Hadoop, così da permetterti di 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, per consentire lo spostamento dei dati, i flussi di lavoro e l’analisi sui molteplici servizi disponibili sulla piattaforma AWS. Inoltre, è possibile utilizzare il Catalogo dati AWS Glue come repository gestito di metadati per Apache Hive e Apache Spark.

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. EMR 6.x supporta Hadoop 3, che consente a YARN NodeManager di avviare i container direttamente sull’host del cluster EMR o all’interno di un container Docker. Per ulteriori informazioni, consulta la documentazione.

L'utilizzo di Hadoop su 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 creare cluster con la capacità richiesta in pochi minuti, utilizzando lo scaling gestito EMR per ricalibrare dinamicamente le risorse nei nodi.

Cos'hanno in comune Hadoop e i Big Data?

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.

Casi d'uso

Apache e Hadoop sono marchi commerciali della Apache Software Foundation.

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 petabyte di dati parzialmente strutturati o del tutto non strutturati in informazioni strategiche su applicazioni e utenti.

Scopri come Yelp usa Hadoop in Amazon EMR per trarre il massimo vantaggio dalle funzionalità del sito

 

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.

Guarda come Netflix usa Hadoop in Amazon EMR per eseguire un data warehouse con capacità di più petabyte

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.

Scopri di più sul settore della genomica in AWS

 

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