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 |
---|---|---|
|
|
|
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.