Apache Flume - Trasferimento dati in Hadoop

Big Data,come sappiamo, è una raccolta di grandi set di dati che non possono essere elaborati utilizzando le tecniche di calcolo tradizionali. I Big Data, se analizzati, danno risultati preziosi.Hadoop è un framework open-source che consente di archiviare ed elaborare Big Data in un ambiente distribuito su cluster di computer utilizzando semplici modelli di programmazione.

Streaming / dati di registro

In generale, la maggior parte dei dati che devono essere analizzati verrà prodotta da varie origini dati come server di applicazioni, siti di social networking, server cloud e server aziendali. Questi dati avranno la forma dilog files e events.

Log file - In generale, un file di registro è un file fileche elenca eventi / azioni che si verificano in un sistema operativo. Ad esempio, i server web elencano ogni richiesta fatta al server nei file di registro.

Raccogliendo tali dati di registro, possiamo ottenere informazioni su:

  • le prestazioni dell'applicazione e individuare vari guasti software e hardware.
  • il comportamento degli utenti e ottenere migliori informazioni aziendali.

Il metodo tradizionale per trasferire i dati nel sistema HDFS consiste nell'usare l'estensione putcomando. Vediamo come utilizzare il fileput comando.

HDFS put Command

La sfida principale nella gestione dei dati di registro consiste nello spostare questi registri prodotti da più server nell'ambiente Hadoop.

Hadoop File System Shellfornisce i comandi per inserire dati in Hadoop e leggerli. Puoi inserire dati in Hadoop utilizzando ilput comando come mostrato di seguito.

$ Hadoop fs –put /path of the required file  /path in HDFS where to save the file

Problema con il comando put

Possiamo usare il file putcomando di Hadoop per trasferire i dati da queste origini a HDFS. Ma soffre dei seguenti inconvenienti:

  • Utilizzando put comando, possiamo trasferire only one file at a timementre i generatori di dati generano dati a una velocità molto più elevata. Poiché l'analisi effettuata sui dati più vecchi è meno accurata, è necessario disporre di una soluzione per trasferire i dati in tempo reale.

  • Se usiamo putcomando, i dati devono essere impacchettati e dovrebbero essere pronti per il caricamento. Poiché i server web generano dati continuamente, è un compito molto difficile.

Ciò di cui abbiamo bisogno qui è una soluzione che possa superare gli inconvenienti di put comandare e trasferire i "dati di streaming" dai generatori di dati agli archivi centralizzati (specialmente HDFS) con minor ritardo.

Problema con HDFS

In HDFS, il file esiste come una voce di directory e la lunghezza del file sarà considerata pari a zero fino alla chiusura. Ad esempio, se una sorgente sta scrivendo dati in HDFS e la rete è stata interrotta durante l'operazione (senza chiudere il file), i dati scritti nel file andranno persi.

Pertanto abbiamo bisogno di un sistema affidabile, configurabile e manutenibile per trasferire i dati di registro in HDFS.

Note- Nel file system POSIX, ogni volta che accediamo a un file (ad esempio eseguendo un'operazione di scrittura), altri programmi possono ancora leggere questo file (almeno la parte salvata del file). Questo perché il file esiste sul disco prima che venga chiuso.

Soluzioni disponibili

Per inviare dati in streaming (file di log, eventi, ecc.) Da varie fonti a HDFS, abbiamo a nostra disposizione i seguenti strumenti:

Scriba di Facebook

Scribe è uno strumento estremamente popolare utilizzato per aggregare e trasmettere i dati di registro. È progettato per scalare a un numero molto elevato di nodi ed essere affidabile in caso di guasti di rete e nodi.

Apache Kafka

Kafka è stato sviluppato da Apache Software Foundation. È un broker di messaggi open source. Utilizzando Kafka, possiamo gestire feed con velocità effettiva elevata e bassa latenza.

Apache Flume

Apache Flume è uno strumento / servizio / meccanismo di importazione dati per la raccolta di aggregazione e trasporto di grandi quantità di dati in streaming come dati di registro, eventi (ecc.) Da vari webserves a un archivio dati centralizzato.

È uno strumento altamente affidabile, distribuito e configurabile progettato principalmente per trasferire dati in streaming da varie origini a HDFS.

In questo tutorial, discuteremo in dettaglio come utilizzare Flume con alcuni esempi.