Cluster Hadoop
Cos'è un cluster Hadoop?
Apache Hadoop è un framework software e un motore di elaborazione parallela open-source basato su Java. Consente di suddividere le attività di analisi dei Big Data in attività più piccole che possono essere eseguite in parallelo utilizzando un algoritmo (come l'algoritmo MapReduce) e distribuendole su un cluster Hadoop. Un cluster Hadoop è un insieme di computer, chiamati "nodi", collegati in rete per eseguire questo tipo di calcoli paralleli su set di Big Data. A differenza di altri cluster di computer, i cluster Hadoop sono progettati specificamente per archiviare e analizzare quantità enormi di dati strutturati e non strutturati in un ambiente di calcolo distribuito. Gli ecosistemi Hadoop si distinguono da altri cluster di computer anche per la loro struttura e architettura uniche. I cluster Hadoop consistono in una rete di nodi master e slave collegati tra loro che utilizzano hardware commerciali ad alta disponibilità e a basso costo. La capacità di scalare linearmente e di aggiungere o sottrarre rapidamente nodi in base ai volumi da gestire li rende adatti all'analisi di Big Data con set di dati di dimensioni molto variabili.
Architettura del cluster Hadoop
I cluster Hadoop sono composti da una rete di nodi master e worker che orchestrano ed eseguono i vari job sul file system distribuito di Hadoop. I nodi master utilizzano in genere hardware di qualità superiore e comprendono un NameNode, un Secondary NameNode e un JobTracker, ciascuno eseguito su una macchina separata. I worker consistono in macchine virtuali che eseguono i servizi DataNode e TaskTracker su hardware commerciali e svolgono il lavoro effettivo di archiviazione ed elaborazione in base alle indicazioni dei nodi master. La parte finale del sistema è costituita dai nodi client, responsabili del caricamento dei dati e del recupero dei risultati.
- I nodi master sono responsabili dell'archiviazione dei dati in HDFS e della supervisione di operazioni chiave, come l'esecuzione di calcoli paralleli dati utilizzando MapReduce.
- I nodi worker comprendono la maggior parte delle macchine virtuali in un cluster Hadoop e si occupano dell'archiviazione dei dati e dell'esecuzione dei calcoli. Ogni nodo worker esegue i servizi DataNode e TaskTracker, utilizzati per ricevere le istruzioni dai nodi master.
- I nodi client hanno il compito di caricare i dati nel cluster. I nodi client inviano lavori MapReduce che contengono istruzioni su come elaborare i dati e poi recuperano i risultati al termine dell'elaborazione.
Cos'è la dimensione del cluster in Hadoop?
Una dimensione del cluster Hadoop è un insieme di parametri che definisce le capacità di archiviazione e calcolo per l'esecuzione dei carichi di lavoro di Hadoop, ovvero:
- Numero di nodi - Numero di nodi Master, Edge, e Worker.
- Configurazione di ciascun tipo di nodo - Numero di core per nodo, RAM e volume del disco.
Quali sono i vantaggi di un cluster Hadoop?
- I cluster Hadoop aumentano la velocità di elaborazione di molti job di analisi dei Big Data, grazie alla loro capacità di suddividere le attività di calcolo di grandi dimensioni in attività più piccole che possono essere eseguite in modo parallelo e distribuito.
- I cluster Hadoop sono facilmente scalabili e possono aggiungere rapidamente nodi per aumentare il throughput e mantenere la velocità di elaborazione quando si devono gestire numeri crescenti di blocchi di dati.
- L'uso di hardware commerciali a basso costo e ad alta disponibilità rende i cluster Hadoop relativamente facili ed economici da configurare e mantenere.
- I cluster Hadoop replicano un set di dati sul file system distribuito, rendendoli resilienti alla perdita di dati e ai guasti nel cluster.
- I cluster Hadoop consentono di integrare e sfruttare i dati provenienti da diversi sistemi di origine e di diversi formati.
- A scopo di valutazione, è possibile distribuire Hadoop utilizzando un'installazione a nodo singolo.
Quali problematiche presenta un cluster Hadoop?
- Problemi con i file di piccole dimensioni - Hadoop ha difficoltà a gestire grandi volumi di file di dimensioni inferiori a quelle dei blocchi Hadoop predefiniti da 128 o 256 MB. Inoltre, non è stato progettato per supportare i Big Data in modo scalabile. Hadoop funziona invece bene con un numero ridotto di file di grandi dimensioni. Fondamentalmente, quando si aumenta il volume dei file di piccole dimensioni, si sovraccarica il NameNode che memorizza lo spazio dei nomi per il sistema.
- Elevati costi di elaborazione - Le operazioni di lettura e scrittura in Hadoop possono diventare rapidamente molto costose, soprattutto quando si elaborano grandi quantità di dati. Ciò è dovuto al fatto che Hadoop non supporta l'elaborazione in-memory ed esegue sul disco tutte le operazioni di lettura e scrittura.
- Supporta solo l'elaborazione in batch - Hadoop è progettato per elaborare in batch piccoli volumi di file di grandi dimensioni. Ciò si ricollega al modo in cui i dati vengono raccolti e archiviati, operazioni che devono essere eseguite prima di iniziare l'elaborazione. In definitiva, ciò significa che i dati streaming non sono supportati e che non è possibile eseguire elaborazioni di dati in tempo reale a bassa latenza.
- Elaborazione iterativa - Hadoop ha una struttura del flusso di dati articolata in fasi sequenziali che rende impossibile l'elaborazione iterativa o l'utilizzo nel ML.