Apache Flume - Configuração

Depois de instalar o Flume, precisamos configurá-lo usando o arquivo de configuração, que é um arquivo de propriedade Java com key-value pairs. Precisamos passar valores para as chaves no arquivo.

No arquivo de configuração do Flume, precisamos -

  • Nomeie os componentes do agente atual.
  • Descreva / configure a fonte.
  • Descreva / configure o coletor.
  • Descreva / configure o canal.
  • Vincule a fonte e o coletor ao canal.

Normalmente podemos ter vários agentes em Flume. Podemos diferenciar cada agente usando um nome exclusivo. E usando esse nome, temos que configurar cada agente.

Nomeando os componentes

Em primeiro lugar, é necessário nomear / listar os componentes como fontes, coletores e canais do agente, conforme mostrado a seguir.

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

O Flume oferece suporte a várias fontes, pias e canais. Eles estão listados na tabela abaixo.

Fontes Canais Pias
  • Fonte Avro
  • Fonte de economia
  • Exec Source
  • Fonte JMS
  • Origem do diretório de spool
  • Fonte Firehose 1% do Twitter
  • Fonte Kafka
  • Fonte NetCat
  • Fonte do gerador de sequência
  • Fontes Syslog
  • Fonte TCP Syslog
  • Fonte TCP Syslog Multiport
  • Syslog UDP Source
  • Fonte HTTP
  • Fonte de estresse
  • Fontes legadas
  • Fonte herdada do Thrift
  • Fonte Personalizada
  • Scribe Source
  • Canal de Memória
  • Canal JDBC
  • Canal Kafka
  • Canal de arquivo
  • Canal de memória derramado
  • Canal de pseudo transação
  • HDFS Sink
  • Colmeia
  • Logger Sink
  • Avro Sink
  • Thrift Sink
  • IRC Sink
  • File Roll Sink
  • Null Sink
  • HBaseSink
  • AsyncHBaseSink
  • MorphlineSolrSink
  • ElasticSearchSink
  • Coletor de dados do Kite
  • Kafka Sink

Você pode usar qualquer um deles. Por exemplo, se você estiver transferindo dados do Twitter usando a fonte do Twitter por meio de um canal de memória para um coletor de HDFS e o ID do nome do agenteTwitterAgent, então

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

Depois de listar os componentes do agente, você deve descrever a (s) fonte (s), coletor (es) e canal (is), fornecendo valores para suas propriedades.

Descrevendo a fonte

Cada fonte terá uma lista separada de propriedades. A propriedade chamada “tipo” é comum a todas as fontes e é usada para especificar o tipo de fonte que estamos usando.

Junto com a propriedade “tipo”, é necessário fornecer os valores de todos os required propriedades de uma determinada fonte para configurá-lo, conforme mostrado abaixo.

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

Por exemplo, se considerarmos o twitter source, a seguir estão as propriedades para as quais devemos fornecer valores para configurá-lo.

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

Descrevendo o Sink

Assim como a fonte, cada coletor terá uma lista separada de propriedades. A propriedade denominada “type” é comum a todos os dissipadores e é usada para especificar o tipo de dissipador que estamos usando. Junto com a propriedade “tipo”, é necessário fornecer valores para todos osrequired propriedades de um coletor específico para configurá-lo, conforme mostrado abaixo.

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

Por exemplo, se considerarmos HDFS sink, a seguir estão as propriedades para as quais devemos fornecer valores para configurá-lo.

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

Descrevendo o canal

O Flume oferece vários canais para transferir dados entre fontes e coletores. Portanto, junto com as fontes e os canais, é necessário descrever o canal usado no agente.

Para descrever cada canal, você precisa definir as propriedades necessárias, conforme mostrado abaixo.

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

Por exemplo, se considerarmos memory channel, a seguir estão as propriedades para as quais devemos fornecer valores para configurá-lo.

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

Vinculando a fonte e o coletor ao canal

Uma vez que os canais conectam as fontes e coletores, é necessário vincular ambos ao canal, conforme mostrado abaixo.

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

O exemplo a seguir mostra como vincular as fontes e os coletores a um canal. Aqui, nós consideramostwitter source, memory channel, e HDFS sink.

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

Iniciando um Agente Flume

Após a configuração, temos que iniciar o agente Flume. É feito da seguinte forma -

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

onde -

  • agent - Comando para iniciar o agente Flume

  • --conf ,-c<conf> - Use o arquivo de configuração no diretório conf

  • -f<file> - Especifica um caminho de arquivo de configuração, se ausente

  • --name, -n <name> - Nome do agente do Twitter

  • -D property =value - Define um valor de propriedade do sistema Java.