Video: BDT 2015 - Alberto Paro - Cos'è il Big Data? Nozioni e tecnologie 2024
Apache Hadoop è una piattaforma software gratuita e open source per scrivere ed eseguire applicazioni che elaborano una grande quantità di dati per l'analisi predittiva. Abilita un'elaborazione parallela distribuita di grandi set di dati generati da fonti diverse. Essenzialmente, è un potente strumento per la memorizzazione e l'elaborazione di big data.
Hadoop memorizza qualsiasi tipo di dati, strutturati o non strutturati, da fonti diverse - e quindi li aggrega in qualsiasi modo tu voglia. Hadoop gestisce dati eterogenei utilizzando l'elaborazione parallela distribuita, il che lo rende un framework molto efficiente da utilizzare nel software di analisi che si occupa di big data. Nessuna meraviglia che alcune grandi aziende adottino Hadoop, tra cui Facebook, Yahoo!, Google, IBM, Twitter e LinkedIn.
Prima di Hadoop, le aziende non erano in grado di sfruttare i big data, che non erano analizzati e quasi inutilizzabili. Il costo per archiviare tali dati in un database relazionale proprietario e creare un formato strutturato attorno ad esso non giustificava i benefici dell'analisi di tali dati e del loro utilizzo.
Hadoop, d'altra parte, sta rendendo questa attività senza problemi - ad una frazione del costo - consentendo alle aziende di trovare preziose informazioni sugli abbondanti dati che hanno acquisito e stanno accumulando.
Il potere di Hadoop sta nella gestione di diversi tipi - di fatto, di qualsiasi tipo - di dati: testo, parlato, e-mail, foto, post, tweet, il nome. Hadoop si occupa di aggregare questi dati, in tutta la sua varietà, e ti offre la possibilità di interrogare tutti i dati a tuo piacimento.
Non è necessario creare uno schema prima di poter dare un senso ai propri dati; Hadoop ti permette di interrogare quei dati nel loro formato originale.
Oltre a gestire grandi quantità di dati vari, Hadoop è tollerante ai guasti, utilizzando semplici programmi che gestiscono la pianificazione dell'elaborazione distribuita su più macchine. Questi programmi sono in grado di rilevare errori hardware e deviare un'attività su un'altra macchina in esecuzione. Questa soluzione consente a Hadoop di garantire un'elevata disponibilità, indipendentemente dall'errore hardware.
Hadoop utilizza due componenti principali (sottoprogetti) per eseguire il proprio lavoro: MapReduce e Hadoop Distributed File System. I due componenti funzionano in cooperazione:
-
MapReduce : L'implementazione di Hadoop di MapReduce si basa sulla ricerca di Google sui modelli di programmazione per elaborare grandi set di dati dividendoli in piccoli blocchi di attività. MapReduce utilizza algoritmi distribuiti, su un gruppo di computer in un cluster, per elaborare set di dati di grandi dimensioni.Comprende due funzioni:
-
La Mappa () funzione che risiede sul nodo master (computer in rete). Divide la query o l'attività di input in attività secondarie più piccole, che distribuisce quindi a nodi di lavoro che elaborano le attività più piccole e passano le risposte al nodo master. Le attività secondarie vengono eseguite in parallelo su più computer.
-
La funzione Riduci () raccoglie i risultati di tutte le attività secondarie e le combina per produrre un risultato finale aggregato, che restituisce come risposta alla query principale originale.
-
-
Hadoop Distributed File System (HDFS) : HDFS replica i blocchi di dati che risiedono su altri computer nel data center (per garantire l'affidabilità) e gestisce il trasferimento dei dati alle varie parti del sistema distribuito.
Prendi in considerazione un database di due miliardi di persone e supponi di voler calcolare il numero di amici sociali del signor X e organizzarli in base alle loro posizioni geografiche. È un compito arduo.
I dati per due miliardi di persone potrebbero provenire da fonti molto diverse come social network, elenchi di indirizzi di posta elettronica, post, tweet, cronologie di navigazione - e questo è solo per gli opener. Hadoop è in grado di aggregare questa massa enorme e diversificata di dati in modo che tu possa indagare con una semplice query.
Utilizzerai le funzionalità di programmazione MapReduce per risolvere questa query. La definizione delle procedure Mappa e Riduci rende gestibile anche questo grande set di dati. Utilizzando gli strumenti offerti dal framework Hadoop, crei un'implementazione MapReduce che eseguirà il calcolo come due sub-attività:
-
Calcola il numero medio di amici social di Mr. X.
-
Disegna gli amici di Mr. X in base alla posizione geografica.
Il tuo programma di implementazione MapReduce eseguirà queste sottoattività in parallelo, gestirà la comunicazione tra le sottoattività e assemblerà i risultati. Su due miliardi di persone, sapresti chi sono gli amici online del signor X.
Hadoop fornisce una gamma di processori di mappe; quale / i seleziona / i dipenderà dalla tua infrastruttura.
Ciascuno dei processori gestirà un certo numero di record. Supponiamo che ogni processore gestisca un milione di record di dati. Ogni processore esegue una procedura Mappa che produce più record di coppie chiave-valore dove G (chiave) è la posizione geografica una persona (paese) e N (valore) è il numero di contatti che la persona ha
Supponiamo che ogni processore della mappa produca molte coppie di moduli, come ad esempio:
Mappa processore # 1:
Mappa processore # 2:
Mappa processore # 3:
Mappa processore # 4:
Mappa processore # 5:
Mappa processore # 6:
Nella fase Riduci, Hadoop assegna un'attività a un certo numero di processori: Esegui la procedura Riduci che aggrega i valori delle stesse chiavi per produrre un risultato finale. Per questo esempio, l'implementazione Riduci riassume il conteggio dei valori per ciascuna chiave: posizione geografica. Quindi, dopo la fase Map, la fase Reduce produce quanto segue:
------ ----
Chiaramente, Mr.X è un ragazzo popolare - ma questo era un esempio molto semplice di come MapReduce può essere usato. Immagina di avere a che fare con un set di dati di grandi dimensioni in cui desideri eseguire operazioni complesse come il raggruppamento di miliardi di documenti in cui l'operazione ei dati sono troppo grandi per essere gestiti da una singola macchina. Hadoop è lo strumento da considerare.