Apache Flume - Configurazione

Dopo aver installato Flume, dobbiamo configurarlo utilizzando il file di configurazione che è un file delle proprietà Java con estensione key-value pairs. Abbiamo bisogno di passare valori alle chiavi nel file.

Nel file di configurazione Flume, dobbiamo:

  • Assegna un nome ai componenti dell'agente corrente.
  • Descrivi / Configura l'origine.
  • Descrivi / Configura il lavandino.
  • Descrivi / Configura il canale.
  • Associa la sorgente e il sink al canale.

Di solito possiamo avere più agenti a Flume. Possiamo differenziare ogni agente utilizzando un nome univoco. E usando questo nome, dobbiamo configurare ogni agente.

Denominazione dei componenti

Prima di tutto, è necessario nominare / elencare i componenti come sorgenti, sink e canali dell'agente, come mostrato di seguito.

agent_name.sources = source_name 
agent_name.sinks = sink_name 
agent_name.channels = channel_name

Flume supporta varie sorgenti, sink e canali. Sono elencati nella tabella riportata di seguito.

Fonti Canali Affonda
  • Avro Source
  • Fonte di risparmio
  • Exec Source
  • Fonte JMS
  • Origine directory di spooling
  • Twitter 1% Firehose Fonte
  • Kafka Source
  • NetCat Source
  • Origine generatore di sequenze
  • Fonti Syslog
  • Syslog TCP Source
  • Origine TCP Syslog multiporta
  • Syslog UDP Source
  • Origine HTTP
  • Fonte di stress
  • Fonti legacy
  • Thrift Legacy Source
  • Origine personalizzata
  • Scribe Source
  • Canale di memoria
  • Canale JDBC
  • Canale Kafka
  • Canale file
  • Spillable Memory Channel
  • Pseudo Transaction Channel
  • Lavello HDFS
  • Hive Sink
  • Logger Sink
  • Avro Sink
  • Lavandino dell'usato
  • Lavello IRC
  • File Roll Sink
  • Null Sink
  • HBaseSink
  • AsyncHBaseSink
  • MorphlineSolrSink
  • ElasticSearchSink
  • Kite Dataset Sink
  • Kafka Sink

Puoi usarne uno qualsiasi. Ad esempio, se stai trasferendo i dati di Twitter utilizzando la fonte Twitter attraverso un canale di memoria a un sink HDFS e l'ID del nome dell'agenteTwitterAgent, poi

TwitterAgent.sources = Twitter 
TwitterAgent.channels = MemChannel 
TwitterAgent.sinks = HDFS

Dopo aver elencato i componenti dell'agente, è necessario descrivere le sorgenti, i sink e i canali fornendo valori alle loro proprietà.

Descrivere la fonte

Ogni sorgente avrà un elenco separato di proprietà. La proprietà denominata "tipo" è comune a tutte le sorgenti e viene utilizzata per specificare il tipo di sorgente che stiamo utilizzando.

Insieme alla proprietà "tipo", è necessario fornire i valori di tutti i file required proprietà di una particolare sorgente per configurarla, come mostrato di seguito.

agent_name.sources. source_name.type = value 
agent_name.sources. source_name.property2 = value 
agent_name.sources. source_name.property3 = value

Ad esempio, se consideriamo il twitter source, In seguito sono le proprietà a cui bisogna fornire i valori per configurarlo.

TwitterAgent.sources.Twitter.type = Twitter (type name) 
TwitterAgent.sources.Twitter.consumerKey =  
TwitterAgent.sources.Twitter.consumerSecret = 
TwitterAgent.sources.Twitter.accessToken =   
TwitterAgent.sources.Twitter.accessTokenSecret =

Descrivere il lavandino

Proprio come l'origine, ogni sink avrà un elenco separato di proprietà. La proprietà denominata "tipo" è comune a tutti i sink e viene utilizzata per specificare il tipo di sink che stiamo utilizzando. Insieme alla proprietà "tipo", è necessario fornire valori a tutti i filerequired proprietà di un particolare sink per configurarlo, come mostrato di seguito.

agent_name.sinks. sink_name.type = value 
agent_name.sinks. sink_name.property2 = value 
agent_name.sinks. sink_name.property3 = value

Ad esempio, se consideriamo HDFS sink, In seguito sono le proprietà a cui bisogna fornire i valori per configurarlo.

TwitterAgent.sinks.HDFS.type = hdfs (type name)  
TwitterAgent.sinks.HDFS.hdfs.path = HDFS directory’s Path to store the data

Descrivere il canale

Flume fornisce vari canali per trasferire dati tra sorgenti e sink. Pertanto, insieme alle sorgenti e ai canali, è necessario descrivere il canale utilizzato nell'agente.

Per descrivere ogni canale, è necessario impostare le proprietà richieste, come mostrato di seguito.

agent_name.channels.channel_name.type = value 
agent_name.channels.channel_name. property2 = value 
agent_name.channels.channel_name. property3 = value

Ad esempio, se consideriamo memory channel, In seguito sono le proprietà a cui bisogna fornire i valori per configurarlo.

TwitterAgent.channels.MemChannel.type = memory (type name)

Associazione della sorgente e del lavandino al canale

Poiché i canali collegano sorgenti e sink, è necessario associarli entrambi al canale, come mostrato di seguito.

agent_name.sources.source_name.channels = channel_name 
agent_name.sinks.sink_name.channels = channel_name

L'esempio seguente mostra come associare le sorgenti e i sink a un canale. Qui, consideriamotwitter source, memory channel, e HDFS sink.

TwitterAgent.sources.Twitter.channels = MemChannel
TwitterAgent.sinks.HDFS.channels = MemChannel

Avvio di un agente Flume

Dopo la configurazione, dobbiamo avviare l'agente Flume. È fatto come segue:

$ bin/flume-ng agent --conf ./conf/ -f conf/twitter.conf 
Dflume.root.logger=DEBUG,console -n TwitterAgent

dove -

  • agent - Comando per avviare l'agente Flume

  • --conf ,-c<conf> - Usa il file di configurazione nella directory conf

  • -f<file> - Specifica un percorso del file di configurazione, se mancante

  • --name, -n <name> - Nome dell'agente Twitter

  • -D property =value - Imposta un valore della proprietà di sistema Java.