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