Apache Flume - Configuración

Después de instalar Flume, necesitamos configurarlo usando el archivo de configuración que es un archivo de propiedades de Java que tiene key-value pairs. Necesitamos pasar valores a las claves en el archivo.

En el archivo de configuración de Flume, necesitamos:

  • Nombra los componentes del agente actual.
  • Describe / configura la fuente.
  • Describe / configura el fregadero.
  • Describe / configura el canal.
  • Ate la fuente y el sumidero al canal.

Por lo general, podemos tener varios agentes en Flume. Podemos diferenciar a cada agente usando un nombre único. Y usando este nombre, tenemos que configurar cada agente.

Nombrar los componentes

En primer lugar, debe nombrar / enumerar los componentes, como fuentes, receptores y canales del agente, como se muestra a continuación.

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

Flume admite varias fuentes, sumideros y canales. Se enumeran en la tabla siguiente.

Fuentes Canales Fregaderos
  • Fuente Avro
  • Fuente de ahorro
  • Fuente ejecutiva
  • Fuente JMS
  • Origen del directorio en cola
  • Fuente de Twitter 1% firehose
  • Fuente Kafka
  • Fuente NetCat
  • Fuente del generador de secuencia
  • Fuentes de Syslog
  • Fuente TCP de Syslog
  • Fuente TCP multipuerto Syslog
  • Fuente de Syslog UDP
  • Fuente HTTP
  • Fuente de estrés
  • Fuentes heredadas
  • Thrift Legacy Source
  • Fuente personalizada
  • Escriba fuente
  • Canal de memoria
  • Canal JDBC
  • Canal de Kafka
  • Canal de archivos
  • Canal de memoria derramable
  • Canal de pseudo transacción
  • Fregadero HDFS
  • Fregadero de colmena
  • Fregadero del registrador
  • Fregadero Avro
  • Fregadero de segunda mano
  • Fregadero IRC
  • Fregadero de rollo de archivo
  • Fregadero nulo
  • HBaseSink
  • AsyncHBaseSink
  • MorphlineSolrSink
  • ElasticSearchSink
  • Fregadero Kite Dataset
  • Fregadero Kafka

Puedes usar cualquiera de ellos. Por ejemplo, si está transfiriendo datos de Twitter utilizando la fuente de Twitter a través de un canal de memoria a un receptor HDFS, y el nombre del agente idTwitterAgent, luego

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

Después de enumerar los componentes del agente, debe describir la (s) fuente (s), sumidero (s) y canal (s) proporcionando valores a sus propiedades.

Describiendo la fuente

Cada fuente tendrá una lista separada de propiedades. La propiedad denominada "tipo" es común a todas las fuentes y se utiliza para especificar el tipo de fuente que estamos utilizando.

Junto con la propiedad "tipo", es necesario proporcionar los valores de todos los required propiedades de una fuente en particular para configurarla, como se muestra a continuación.

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

Por ejemplo, si consideramos el twitter source, a continuación se muestran las propiedades a las que debemos proporcionar valores para configurarlo.

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

Describiendo el fregadero

Al igual que la fuente, cada sumidero tendrá una lista separada de propiedades. La propiedad denominada "tipo" es común a todos los sumideros y se utiliza para especificar el tipo de sumidero que estamos usando. Junto con la propiedad "tipo", es necesario proporcionar valores a todos losrequired propiedades de un sumidero en particular para configurarlo, como se muestra a continuación.

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

Por ejemplo, si consideramos HDFS sink, a continuación se muestran las propiedades a las que debemos proporcionar valores para configurarlo.

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

Describiendo el canal

Flume proporciona varios canales para transferir datos entre fuentes y receptores. Por lo tanto, junto con las fuentes y los canales, es necesario describir el canal utilizado en el agente.

Para describir cada canal, debe establecer las propiedades necesarias, como se muestra a continuación.

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

Por ejemplo, si consideramos memory channel, a continuación se muestran las propiedades a las que debemos proporcionar valores para configurarlo.

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

Uniendo la fuente y el sumidero al canal

Dado que los canales conectan las fuentes y los receptores, es necesario vincularlos a ambos al canal, como se muestra a continuación.

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

El siguiente ejemplo muestra cómo vincular las fuentes y los receptores a un canal. Aquí, consideramostwitter source, memory channel, y HDFS sink.

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

Inicio de un agente de canal

Después de la configuración, tenemos que iniciar el agente Flume. Se hace de la siguiente manera:

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

donde -

  • agent - Comando para iniciar el agente Flume

  • --conf ,-c<conf> - Usar archivo de configuración en el directorio conf

  • -f<file> - Especifica una ruta de archivo de configuración, si falta

  • --name, -n <name> - Nombre del agente de twitter

  • -D property =value - Establece un valor de propiedad del sistema Java.