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