Flume 配置

  • 配置

    安装Flume之后,我们需要使用配置文件对其进行配置,该配置文件是具有键值对的Java属性文件。我们需要将值传递给文件中的键。
    在Flume配置文件中,我们需要-
    • 命名当前代理的组件。
    • 描述/配置源。
    • 描述/配置接收器。
    • 描述/配置通道。
    • 将源和接收器绑定到通道。
    通常,在Flume中我们可以有多个代理。我们可以使用唯一的名称来区分每个代理。使用这个名称,我们必须配置每个代理。
  • 命名组件

    首先,您需要命名/列出组件,例如源,接收器和代理程序的通道,如下所示。
    
    agent_name.sources = source_name 
    agent_name.sinks = sink_name 
    agent_name.channels = channel_name 
    
    Flume支持各种来源,接收器和渠道。它们在下表中列出。
    源(Source) 通道(Channel) 接收器(Sinks)
    • Avro 源
    • Thrift 源
    • Exec 源
    • JMS 源
    • Spooling Directory 源
    • Twitter 1% firehose 源
    • Kafka 源
    • NetCat 源
    • Sequence Generator 源
    • Syslog 源
    • Syslog TCP 源
    • Multiport Syslog TCP 源
    • Syslog UDP 源
    • HTTP 源
    • Stress 源
    • Legacy 源s
    • Thrift Legacy 源
    • Custom 源
    • Scribe 源
    • memory Channel
    • JDBC Channel
    • Kafka Channel
    • file Channel
    • Spillable Memory Channel
    • Pseudo Transaction Channel
    • HDFS Sink
    • Hive Sink
    • Logger Sink
    • Avro Sink
    • Thrift Sink
    • IRC Sink
    • File Roll Sink
    • Null Sink
    • HBase Sink
    • AsyncHBase Sink
    • MorphlineSolrSink
    • ElasticSearchSink
    • Kite Dataset Sink
    • Kafka Sink
    您可以使用其中任何一个。例如,如果您要使用Twitter源将Twitter数据通过内存通道传输到HDFS接收器,并且代理名称为TwitterAgent,则
    
    TwitterAgent.sources = Twitter 
    TwitterAgent.channels = MemChannel 
    TwitterAgent.sinks = HDFS 
    
    在列出代理的组件之后,您必须通过提供其属性值来描述源,接收器和通道。
  • 描述来源(Source)

    每个源都有一个单独的属性列表。名为“type”的属性对于每个来源都是通用的,并且用于指定我们正在使用的来源的类型。
    连同属性“type”一样,需要提供特定源的所有必需属性的值来进行配置,如下所示。
    
    agent_name.sources. source_name.type = value 
    agent_name.sources. source_name.property2 = value 
    agent_name.sources. source_name.property3 = value 
    
    例如,如果我们考虑twitter源,则以下是我们必须提供值以对其进行配置的属性。
    
    TwitterAgent.sources.Twitter.type = Twitter (type name) 
    TwitterAgent.sources.Twitter.consumerKey =  
    TwitterAgent.sources.Twitter.consumerSecret = 
    TwitterAgent.sources.Twitter.accessToken =   
    TwitterAgent.sources.Twitter.accessTokenSecret = 
    
  • 描述接收器(Sinks)

    就像源一样,每个接收器都有一个单独的属性列表。每个接收器都具有名为“type”的属性,该属性用于指定我们正在使用的接收器的类型。连同属性“type”一样,还需要为特定接收器的所有必需属性提供值以对其进行配置,如下所示。
    
    agent_name.sinks. sink_name.type = value 
    agent_name.sinks. sink_name.property2 = value 
    agent_name.sinks. sink_name.property3 = value
    
    例如,如果考虑使用HDFS sink,则以下是我们必须提供值以对其进行配置的属性。
    
    TwitterAgent.sinks.HDFS.type = hdfs (type name)  
    TwitterAgent.sinks.HDFS.hdfs.path = HDFS directory’s Path to store the data
    
  • 描述通道(Channel)

    Flume提供了各种通道来在源和接收器之间传输数据。因此,连同源和通道一起,需要描述代理中使用的通道。
    要描述每个通道,您需要设置所需的属性,如下所示。
    
    agent_name.channels.channel_name.type = value 
    agent_name.channels.channel_name. property2 = value 
    agent_name.channels.channel_name. property3 = value 
    
    例如,如果用到memory channel,则以下是我们必须提供值以对其进行配置的属性。
    
    TwitterAgent.channels.MemChannel.type = memory (type name)
    
  • 将源和接收器绑定到通道

    由于通道连接了源和接收器,因此需要将它们都绑定到通道,如下所示。
    
    agent_name.sources.source_name.channels = channel_name 
    agent_name.sinks.sink_name.channels = channel_name 
    
    以下示例显示如何将源和接收器绑定到通道。在这里,我们考虑Twitter源,内存通道和HDFS接收器。
    
    TwitterAgent.sources.Twitter.channels = MemChannel
    TwitterAgent.sinks.HDFS.channels = MemChannel 
    
  • 启动Flume代理

    配置完成后,我们必须启动Flume代理。它完成如下-
    
    $ bin/flume-ng agent --conf ./conf/ -f conf/twitter.conf  -D flume.root.logger=DEBUG,console -n TwitterAgent
    
    其中-
    • agent- 命令启动Flume
    • --conf,-c <conf> -使用conf目录中的配置文件
    • -f <文件> - 指定配置文件路径(如果缺少)
    • --name,-n <名称> -Twitter代理的名称
    • -D property = value - 设置Java系统属性值。