Documentazione di riferimento: https://flume.apache.org/FlumeUserGuide.html#flume-sources
Apache Flume e' un servizio distribuito affidabile e disponibile per la raccolta, l'aggregazione e il trasporto un grande quantitativo di dati di log in maniera efficiente. Ha un'architettura semplice e flessibile. E' un sistema robusto e tollerante al fallimento con meccanismi di impostazione dell'affidabilita' e di recupero dati. Usa un modello dati estensibile utile per applicazioni analitiche online.
Un evento Flume e' definito come un'unita' di flusso di dati con un payload di byte e un set facoltativo di attributi. Un agente Flume e' un processo (JVM) che ospita i componenti attraverso i quali gli eventi passano da un'origine esterna alla destinazione successiva.
Una Flume source consuma eventi consegnati da una fonte esterna come un server web. La fonte esterna invia eventi a Flume in un formato riconosciuto dalla sorgente Flume di destinazione, ad esempio, una sorgente Avro Flume Quando una fonte Flume (Flume source) riceve un evento, lo memorizza uno o piu' canali. Il canale e' un archivio passivo che mantiene l'evento fino a quando non viene consumato da un sink Flume. Il canale per esempio e' il filesystem locale. Il sink rimuove l'evento dal canale e lo inserisce in un repository esterno come HDFS (tramite il sink Flume HDFS) o lo inoltra alla sorgente Flume del prossimo agent Flume nel flusso. Il source e il sink all'interno dell'agentvengono eseguiti in modo asincrono in riferimento ai dati inseriti e letti sul canale.
Flume source elenco :
Flume Channels elenco:
Flume Sinks elenco:
Per attivare un agent dobbiamo creare un file di configurazione e avviare un processo con tale file.
File di configurazione (my.conf):
agent1.sources = file1 agent1.channels = chan1 agent1.sinks = hdfs1 # source agent1.sources.file1.type = exec agent1.sources.file1.command = tail -F /opt/gen_logs/logs/access.log agent1.sources.file1.channels = chan1 #channel agent1.channels.chan1.type = memory agent1.channels.chan1.capacity = 10000 agent1.channels.chan1.transactionCapacity = 1000 #skin agent1.sinks.hdfs1.type = hdfs agent1.sinks.hdfs1.channel = chan1 agent1.sinks.hdfs1.hdfs.path = /flume/logs agent1.sinks.hdfs1.hdfs.filePrefix = logs_
lanciare con:
flume-ng agent -n agent1 -f my.conf