Abbiamo discusso delle Caratteristiche di Hadoop nel nostro precedente tutorial Hadoop. Ora tratteremo i limiti di Hadoop. Ci sono vari inconvenienti dei framework Apache Hadoop.
Ad esempio, problema con i file di piccole dimensioni, elaborazione lenta, solo elaborazione batch, latenza, problema di sicurezza, vulnerabilità, assenza di memorizzazione nella cache e così via
Tutte queste limitazioni di Hadoop le discuteremo in dettaglio in questo tutorial di Hadoop.
Cos'è Hadoop?
Apache Hadoop è un framework software open source per l'archiviazione e l'elaborazione distribuite di enormi quantità di set di dati. Open source significa che è disponibile gratuitamente e anche noi possiamo cambiarne il codice sorgente secondo i requisiti.
Apache Hadoop consente inoltre di eseguire applicazioni su un sistema con migliaia di nodi. Il suo file system distribuito offre velocità di trasferimento dati rapide tra i nodi.
Consente inoltre al sistema di continuare a funzionare in caso di guasto del nodo. Le caratteristiche principali di Hadoop sono le seguenti:
- In Apache Hadoop, i dati sono disponibili nonostante il guasto della macchina a causa di molte copie di dati. Quindi, se una macchina si arresta in modo anomalo, è possibile accedere ai dati da un altro percorso.
- Apache Hadoop è scalabile, poiché è facile aggiungere nuovo hardware al nodo.
- Hadoop è altamente tollerante ai guasti, poiché per impostazione predefinita 3 repliche di ogni blocco sono archiviate nel cluster. Quindi, se un nodo nel cluster si interrompe, i dati su quel nodo possono essere recuperati facilmente dall'altro nodo.
- Apache Hadoop funziona su un cluster di hardware non molto costoso.
- In Apache Hadoop, i dati vengono archiviati in modo affidabile sul cluster nonostante i guasti hardware dovuti alla replica dei dati sul cluster.
Sebbene Hadoop sia lo strumento più potente dei Big Data, ci sono varie limitazioni. A causa delle limitazioni di Hadoop, sono nati Apache Spark e Apache Flink.
Limiti di Hadoop
Di seguito sono riportate varie limitazioni di Apache Hadoop insieme alla loro soluzione-
a. Problemi con i file di piccole dimensioni
Il problema principale con Hadoop è che non è adatto per piccoli dati. HDFS manca della capacità di supportare la lettura casuale di piccoli a causa del suo design ad alta capacità.
I file di piccole dimensioni sono più piccoli della dimensione del blocco HDFS (impostazione predefinita 128 MB). Se stai archiviando un numero enorme di file di piccole dimensioni, HDFS non è in grado di gestire questi molti file di piccole dimensioni.
Poiché HDFS è stato progettato per funzionare con un numero limitato di file di grandi dimensioni per l'archiviazione di set di dati di grandi dimensioni anziché con un numero elevato di file di piccole dimensioni. Se sono presenti molti file di piccole dimensioni, il NameNode verrà sovraccaricato poiché memorizza lo spazio dei nomi di HDFS.
Soluzione:
Basta unire i file piccoli per creare file più grandi e quindi copiarli in formato più grande su HDFS.
Archivi Hadoop (file HAR) affronta il problema di molti file di piccole dimensioni. Hadoop Archives funziona costruendo un filesystem a strati sulla parte superiore di HDFS.
Con il comando help Hadoop archive vengono creati file HAR; questo esegue un processo MapReduce per comprimere i file archiviati in un numero ridotto di file HDFS. La lettura di file tramite HAR non è più efficiente della lettura tramite HDFS.
Poiché ogni accesso al file HAR richiede la lettura di due file di indice e il file di dati da leggere, questo lo renderà più lento.
I file di sequenza risolvono anche il problema dei file di piccole dimensioni. In cui utilizziamo il nome del file come chiave e il contenuto del file come valore.
Scrivendo un programma per i file (100 KB), possiamo inserirli in un unico file Sequence e quindi elaborarli in streaming operando sul file Sequence.
MapReduce in Hadoop può suddividere il file di sequenza in blocchi e operare su ciascun blocco in modo indipendente perché il file di sequenza è divisibile.
Memorizzando i file in Hbase possiamo superare il problema dei piccoli file. In realtà non stiamo archiviando milioni di file di piccole dimensioni in HBase, ma stiamo aggiungendo il contenuto binario del file a una cella.
b. Velocità di elaborazione lenta
MapReduce elabora un'enorme quantità di dati. In Hadoop, MapReduce funziona suddividendo l'elaborazione in fasi:Mappa e Riduci . Quindi, MapReduce richiede molto tempo per eseguire queste attività, aumentando così la latenza. Quindi, riduce la velocità di elaborazione.
Soluzione:
Con l'elaborazione in memoria dei dati, Apache Spark risolve questo problema. Come nell'elaborazione in memoria, non viene impiegato alcun tempo per spostare i dati/processi dentro e fuori il disco, quindi questo lo rende più veloce.
Apache Spark è 100 volte più veloce rispetto a MapReduce perché elabora tutto in memoria.
Flink può anche superare questo problema. Flink elabora più velocemente di Spark grazie alla sua architettura di streaming.
c. Supporto solo per l'elaborazione batch
Hadoop supporta solo l'elaborazione batch, non è adatto per lo streaming di dati. Quindi, le prestazioni complessive sono più lente. Il framework MapReduce non sfrutta al massimo la memoria del cluster Hadoop.
Soluzione
Apache Spark risolve questo problema poiché supporta l'elaborazione del flusso. Ma l'elaborazione del flusso Spark non è così efficiente come Flink poiché utilizza l'elaborazione micro-batch. Apache Flink migliora le prestazioni complessive in quanto fornisce un unico runtime per lo streaming e l'elaborazione batch.
d. Nessuna elaborazione in tempo reale
Apache Hadoop è un framework di elaborazione batch. Significa che prende un'enorme quantità di dati in input, li elabora e produce il risultato.
L'elaborazione batch è molto efficiente per l'elaborazione di un volume elevato di dati, ma dipende dalle dimensioni dei dati elaborati e dalla potenza di calcolo del sistema; un'uscita può essere notevolmente ritardata. Apache Hadoop non è adatto per l'elaborazione in tempo reale.
Soluzione:
Spark è adatto per l'elaborazione del flusso. L'elaborazione a vapore fornisce dati di input/output continui. Elabora i dati in un breve lasso di tempo.
Flink fornisce un unico runtime sia per lo streaming che per l'elaborazione batch.
es. Elaborazione iterativa
Apache Hadoop non è molto efficiente per l'elaborazione iterativa. Poiché Hadoop non è supportato, il flusso di dati ciclico (cioè una catena di fasi in cui ogni uscita della fase precedente è l'input per la fase successiva).
Soluzione:
Spark supera questo problema. Poiché Apache Spark accede ai dati dalla RAM anziché dal disco. Ciò migliora notevolmente le prestazioni di un algoritmo iterativo che accede ripetutamente allo stesso set di dati.
In Apache Spark, per l'elaborazione iterativa, ogni iterazione deve essere pianificata ed eseguita separatamente.
f. Latenza
MapReduce in Hadoop è più lento perché supporta formati diversi, strutturati ed enormi quantità di dati. In MapReduce, Map prende un insieme di dati e lo converte in un altro insieme di dati, in cui un singolo elemento viene scomposto in una coppia chiave-valore.
Riduci prende l'output dalla mappa come e Riduci prende l'output dalla mappa come input ed elabora ulteriormente. MapReduce richiede molto tempo per eseguire queste attività aumentando così la latenza.
Soluzione:
Apache Spark può ridurre questo problema. Sebbene Spark sia il sistema batch, è relativamente più veloce, perché memorizza nella cache gran parte dei dati di input in memoria tramite RDD. Lo streaming di dati Apache Flink raggiunge una bassa latenza e un elevato throughput.
g. Nessuna facilità d'uso
Lo sviluppatore MapReduce in Hadoop deve gestire il codice per ogni singola operazione, il che rende molto difficile il lavoro. In Hadoop, MapReduce non ha una modalità interattiva, ma l'aggiunta di hive e pig rende il lavoro con MapReduce un po' più semplice.
Soluzione:
Spark ha superato questo problema, poiché Spark ha una modalità interattiva. In questo modo, sia gli sviluppatori che gli utenti possono avere feedback intermedi per query e altre attività.
Poiché spark ha tonnellate di operatori di alto livello, è facile programmare Spark. Si può anche usare Apache Flink poiché ha anche operatori di alto livello.
h. Problema di sicurezza
Apache Hadoop è impegnativo nel mantenere le applicazioni complesse. Ad Hadoop manca la crittografia a livello di storage e di rete, il che è un importante motivo di preoccupazione. Apache Hadoop supporta l'autenticazione Kerberos, che è difficile da gestire.
Soluzione:
Apache Spark fornisce bonus di sicurezza. Se esegui Apache Spark in HDFS, può utilizzare ACL HDFS e autorizzazioni a livello di file.
io. Vulnerabile per natura
Apache Hadoop è scritto in Java. Java, è un linguaggio molto popolare, quindi java maggiormente sfruttato dai criminali informatici.
j. Nessuna memorizzazione nella cache
Apache Hadoop non è efficiente per la memorizzazione nella cache. MapReduce non può memorizzare nella cache i dati intermedi per ulteriori requisiti e ciò riduce le prestazioni di Hadoop.
Soluzione:
Spark e Flink risolvono questo problema. Spark e Flink memorizzano nella cache i dati per ulteriori iterazioni che migliorano le prestazioni complessive.
k. Codice lungo
Apache Hadoop ha 1.20.000 righe di codice. Il numero di righe produce il numero di bug. Quindi ci vorrà più tempo per eseguire i programmi.
Soluzione:
Spark e Flink sono scritti in Scala e Java. Ma l'implementazione è in Scala, quindi il numero di righe di codice è inferiore a Hadoop. Pertanto, ci vuole meno tempo per eseguire i programmi.
Conclusione
Come risultato della limitazione di Hadoop, è emersa la necessità di Spark e Flink. Pertanto, rendi il sistema più facile da giocare con un'enorme quantità di dati.
Apache Spark fornisce l'elaborazione in memoria dei dati, migliorando così la velocità di elaborazione. Flink migliora le prestazioni in quanto fornisce un unico runtime per lo streaming e l'elaborazione batch.
Spark fornisce un bonus di sicurezza. Quindi, è possibile risolvere tutte queste limitazioni Hadoop utilizzando altre tecnologie di big data come Apache Spark e Flink.
Se trovi altre limitazioni di Hadoop, faccelo sapere lasciando un commento in una sezione indicata di seguito.