Il software Apache Hadoop è un framework open source che permette l'archiviazione e l'elaborazione distribuite di grandi set di dati in cluster di computer utilizzando semplici modelli di programmazione. Hadoop è progettato per fare lo scale up da un singolo computer a migliaia di computer in cluster, dove ogni macchina fornisce calcolo e archiviazione locali. Ciò consente a Hadoop di archiviare ed elaborare in modo efficiente set di dati di grandi dimensioni che vanno da gigabyte a petabyte.
Scopri di più sull'utilizzo di Dataproc per eseguire i cluster Apache Hadoop, su Google Cloud, in modo più semplice, integrato e conveniente.
Hadoop nasce agli albori del World Wide Web. Con la crescita del web a milioni e poi miliardi di pagine, l'attività di ricerca e restituzione dei risultati è diventata una delle sfide più importanti. Startup come Google, Yahoo e AltaVista hanno iniziato a creare framework per automatizzare i risultati di ricerca. Gli informatici Doug Cutting e Mike Cafarella hanno creato un progetto chiamato Nutch sulla base delle prime iniziative di Google su MapReduce (che vedremo più avanti) e su Google File System. Nutch è stato infine trasferito alla base software open source di Apache ed è stato diviso in Nutch e Hadoop. Yahoo, dove Cutting ha iniziato a lavorare nel 2006, ha reso Hadoop open source nel 2008.
Sebbene Hadoop sia talvolta definito come l'acronimo di "High Availability Distributed Object Oriented Platform", in origine prende il nome dall'elefante giocattolo del figlio di Cutting.
Hadoop è un framework open source basato su Java che gestisce l'archiviazione e l'elaborazione di grandi quantità di dati per le applicazioni. Hadoop utilizza l'archiviazione distribuita e l'elaborazione parallela per gestire i job di big data e analisi, suddividendo i carichi di lavoro in carichi di lavoro più piccoli che possono essere eseguiti contemporaneamente.
Il framework principale di Hadoop è costituito da quattro moduli che operano collettivamente per formare l'ecosistema Hadoop:
Hadoop Distributed File System (HDFS): in quanto componente principale dell'ecosistema Hadoop, HDFS è un file system distribuito in cui i singoli nodi Hadoop operano su dati che risiedono nel loro spazio di archiviazione locale. Ciò elimina la latenza di rete, fornendo accesso a velocità effettiva elevata ai dati delle applicazioni. Inoltre, gli amministratori non devono definire gli schemi in anticipo.
Yet Another Resource Negotiator (YARN): YARN è una piattaforma di gestione delle risorse che si occupa di gestire le risorse di calcolo in cluster e di utilizzarle per programmare le applicazioni degli utenti. Esegue la programmazione e l'allocazione delle risorse in tutto il sistema Hadoop.
MapReduce: MapReduce è un modello di programmazione per l'elaborazione dei dati su vasta scala. Nel modello MapReduce, i subset di set di dati più grandi e le istruzioni per l'elaborazione dei subset vengono inviati a più nodi diversi, dove ogni subset viene elaborato da un nodo in parallelo con altri job di elaborazione. Dopo l'elaborazione dei risultati, i singoli subset vengono combinati in un set di dati più piccolo e più gestibile.
Hadoop Common: Hadoop Common comprende le librerie e le utilità utilizzate e condivise da altri moduli Hadoop.
Oltre a HDFS, YARN e MapReduce, tutto l'ecosistema open source Hadoop continua a crescere e include molti strumenti e applicazioni per aiutare a raccogliere, archiviare, elaborare, analizzare e gestire i big data. Tra questi, Apache Pig, Apache Hive, Apache HBase, Apache Spark, Presto e Apache Zeppelin.
Hadoop consente la distribuzione di set di dati su un cluster di hardware standard. L'elaborazione viene eseguita in parallelo su più server contemporaneamente.
I client software inseriscono dati in Hadoop. HDFS gestisce i metadati e il file system distribuito. MapReduce quindi elabora e converte i dati. Infine, YARN divide i job nel cluster di elaborazione.
Tutti i moduli Hadoop sono progettati partendo dal presupposto fondamentale che gli errori dell'hardware di singole macchine o rack di macchine sono comuni e devono essere gestiti automaticamente nel software dal framework.
Scalabilità
Hadoop è uno dei principali strumenti per archiviare ed elaborare rapidamente enormi quantità di dati. Per farlo, utilizza un modello di calcolo distribuito che consente l'elaborazione rapida dei dati grazie alla scalabilità ottenuta aggiungendo nodi di computing.
Costi ridotti
Hadoop è un framework open source eseguibile su hardware standard ed è dotato di un ampio ecosistema di strumenti, che lo rendono un'opzione a basso costo per l'archiviazione e la gestione dei big data.
Flessibilità
Hadoop offre flessibilità per l'archiviazione dei dati, dato che questi non richiedono pre-elaborazione prima dell'archiviazione. Questo significa che un'organizzazione può archiviare tutti i dati che vuole e utilizzarli in un secondo momento.
Resilienza
In quanto modello di computing distribuito, Hadoop rende possibili la tolleranza agli errori e la resilienza del sistema, il che significa che in caso di errore di uno dei nodi hardware, i job vengono reindirizzati ad altri. I dati archiviati in un cluster Hadoop vengono replicati su altri nodi all'interno del sistema per prevenire eventuali guasti hardware o software.
MapReduce è un sistema ad alta intensità di file e può quindi essere uno strumento difficile da utilizzare per job complessi, come attività analitiche interattive. Le funzioni MapReduce devono essere scritte in Java e possono richiedere una curva di apprendimento ripida. L'ecosistema MapReduce è piuttosto ampio, con molti componenti per funzioni diverse che possono rendere difficile determinare quali strumenti utilizzare.
La sensibilità e la protezione dei dati possono essere problematiche, perché Hadoop gestisce set di dati di grandi dimensioni. È emerso quindi un ecosistema di strumenti per l'autenticazione, la crittografia, il controllo e il provisioning per aiutare gli sviluppatori a proteggere i dati in Hadoop.
Hadoop non dispone di molti strumenti solidi per la gestione e la governance dei dati, né per la qualità e la standardizzazione dei dati.
Come molte altre aree di programmazione, Hadoop ha una nota carenza di talenti. Trovare sviluppatori con la combinazione di competenze richieste in Java per programmare MapReduce, sistemi operativi e hardware può essere difficile. Inoltre, MapReduce ha una curva di apprendimento ripida, che complica l'aggiornamento dei nuovi programmatori alle best practice e all'ecosistema.
La società di ricerca IDC ha stimato che nel 2020 sono stati creati o replicati 62,4 zettabyte di dati grazie all'utilizzo di Internet of Things, social media, edge computing e dati creati nel cloud. La società ha previsto una crescita dei dati dal 2020 al 2025 pari al 23% all’anno. Anche se non tutti i dati vengono salvati (vengono eliminati dopo il consumo o vengono sovrascritti), le esigenze in termini di dati di tutto il mondo continuano a crescere.
Hadoop è dotato di un ampio ecosistema di strumenti open source in grado di aumentare ed estendere le funzionalità del modulo principale. Alcuni dei principali strumenti software utilizzati con Hadoop includono:
Apache Hive: un data warehouse che consente ai programmatori di lavorare con i dati in HDFS utilizzando un linguaggio di query chiamato HiveQL, simile a SQL
Apache HBase: un database open source non relazionale distribuito spesso abbinato a Hadoop
Apache Pig: uno strumento utilizzato come livello di astrazione su MapReduce per analizzare grandi set di dati, che attiva funzioni come filtro, ordinamento, caricamento e unione
Apache Impala: motore di query SQL open source con elaborazione a elevato parallelismo, spesso utilizzato con Hadoop
Apache Sqoop: un'applicazione con interfaccia a riga di comando per trasferire in modo efficiente dati collettivi tra database relazionali e Hadoop
Apache ZooKeeper: un server open source che consente un coordinamento distribuito affidabile in Hadoop; un servizio per "la gestione delle informazioni di configurazione, la denominazione, la sincronizzazione distribuita e la fornitura di servizi di gruppo"
Apache Oozie: uno scheduler di flusso di lavoro per i job Hadoop
Ecco alcuni casi d'uso comuni per Apache Hadoop:
Analisi e big data
Un'ampia varietà di aziende e organizzazioni utilizza Hadoop per le attività di ricerca, elaborazione dei dati di produzione e analisi che richiedono l'elaborazione di terabyte o petabyte di big data, l'archiviazione di set di dati diversi e l'elaborazione parallela dei dati.
Archiviazione dei dati
Dato che Hadoop consente l'archiviazione di massa su hardware standard, è utile come opzione di archiviazione a basso costo per tutti i tipi di dati, come transazioni, flussi di clic o dati di sensori e macchine.
Data lake
Dato che Hadoop può aiutare ad archiviare i dati senza pre-elaborazione, può essere utilizzato come integrazione ai data lake, in cui vengono archiviate grandi quantità di dati non elaborati.
Analisi di marketing
I reparti di marketing spesso utilizzano Hadoop per archiviare e analizzare i dati del sistema di gestione dei rapporti con i clienti (CRM).
Gestione dei rischi
Banche, compagnie assicurative e altre società di servizi finanziari utilizzano Hadoop per creare modelli di gestione e analisi del rischio.
IA e machine learning
Gli ecosistemi Hadoop aiutano con l'elaborazione delle operazioni di addestramento di dati e modelli per le applicazioni di machine learning.
Inizia a creare su Google Cloud con 300 $ di crediti gratuiti e oltre 20 prodotti Always Free.