Apache Flume - Architettura

La figura seguente mostra l'architettura di base di Flume. Come mostrato nell'illustrazione,data generators (come Facebook, Twitter) generano dati che vengono raccolti dai singoli Flume agentscorrendo su di loro. Successivamente, adata collector (che è anche un agente) raccoglie i dati dagli agenti che vengono aggregati e inseriti in un archivio centralizzato come HDFS o HBase.

Evento Flume

Un event è l'unità di base dei dati trasportati all'interno Flume. Contiene un payload di array di byte che deve essere trasportato dall'origine alla destinazione accompagnato da intestazioni opzionali. Un tipico evento Flume avrebbe la seguente struttura:

Flume Agent

Un agentè un processo daemon indipendente (JVM) in Flume. Riceve i dati (eventi) dai client o da altri agenti e li inoltra alla destinazione successiva (sink o agent). Flume può avere più di un agente. Il diagramma seguente rappresenta un fileFlume Agent

Come mostrato nel diagramma, un Flume Agent contiene tre componenti principali, vale a dire, source, channel, e sink.

fonte

UN source è il componente di un agente che riceve i dati dai generatori di dati e li trasferisce a uno o più canali sotto forma di eventi Flume.

Apache Flume supporta diversi tipi di sorgenti e ogni sorgente riceve eventi da un generatore di dati specificato.

Example - Fonte Avro, fonte Thrift, fonte Twitter 1% ecc.

Canale

UN channelè un archivio temporaneo che riceve gli eventi dall'origine e li bufferizza fino a quando non vengono consumati dai sink. Funge da ponte tra le sorgenti e i lavandini.

Questi canali sono completamente transazionali e possono funzionare con qualsiasi numero di sorgenti e sink.

Example - Canale JDBC, canale del file system, canale di memoria, ecc.

Lavello

UN sinkmemorizza i dati in archivi centralizzati come HBase e HDFS. Consuma i dati (eventi) dai canali e li consegna alla destinazione. La destinazione del lavandino potrebbe essere un altro agente o i negozi centrali.

Example - Dissipatore HDFS

Note- Un agente flume può avere più sorgenti, pozzi e canali. Abbiamo elencato tutte le sorgenti, i sink, i canali supportati nel capitolo sulla configurazione di Flume di questo tutorial.

Componenti aggiuntivi di Flume Agent

Ciò di cui abbiamo discusso sopra sono i componenti primitivi dell'agente. Oltre a questo, abbiamo alcuni componenti in più che svolgono un ruolo fondamentale nel trasferimento degli eventi dal generatore di dati agli archivi centralizzati.

Intercettori

Gli intercettatori vengono utilizzati per alterare / ispezionare gli eventi dei canali che vengono trasferiti tra la sorgente e il canale.

Selettori di canale

Questi sono usati per determinare quale canale deve essere scelto per trasferire i dati in caso di più canali. Esistono due tipi di selettori di canale:

  • Default channel selectors - Questi sono anche noti come selettori di canale di replica, replicano tutti gli eventi in ogni canale.

  • Multiplexing channel selectors - Questi decidono il canale per inviare un evento in base all'indirizzo nell'intestazione di quell'evento.

Processori Sink

Questi sono usati per richiamare un particolare sink dal gruppo di sink selezionato. Vengono utilizzati per creare percorsi di failover per i sink o eventi di bilanciamento del carico su più sink da un canale.