Apache Flume配置


在安装Flume之后,我们需要使用配置文件来配置它,该配置文件是具有 键值对 的Java属性文件。我们需要将值传递给文件中的键。

在Flume配置文件中,我们需要

  • 命名当前代理的组件。
  • 描述/配置源。
  • 描述/配置接收器。
  • 描述/配置频道。
  • 将源和接收器绑定到通道。

通常我们可以在Flume中拥有多个代理。我们可以使用唯一名称区分每个代理。使用此名称,我们必须配置每个代理。

命名组件

首先,您需要命名/列出组件,例如源,接收器和代理的通道,如下所示。

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

Flume支持各种信号源,接收器和通道。它们列在下表中。

Sources Channels Sinks
  • Avro Source
  • Thrift Source
  • Exec Source
  • JMS Source
  • Spooling Directory Source
  • Twitter 1% firehose Source
  • Kafka Source
  • NetCat Source
  • Sequence Generator Source
  • Syslog Sources
  • Syslog TCP Source
  • Multiport Syslog TCP Source
  • Syslog UDP Source
  • HTTP Source
  • Stress Source
  • Legacy Sources
  • Thrift Legacy Source
  • Custom Source
  • Scribe Source
  • 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
  • HBaseSink
  • AsyncHBaseSink
  • MorphlineSolrSink
  • ElasticSearchSink
  • Kite Dataset Sink
  • Kafka Sink

你可以使用它们中的任何一个。例如,如果您使用Twitter源通过内存通道将Twitter数据传输到HDFS接收器,并且代理名称为 TwitterAgent ,那么

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

列出代理的组件后,您必须通过为其属性提供值来描述源,接收器和通道。

描述来源

每个来源都有一个单独的属性列表。名为“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 =

描述Flume

就像源一样,每个接收器都有一个单独的属性列表。名为“type”的属性对于每个接收器都是通用的,它用于指定我们正在使用的接收器的类型。除了属性“type”之外,还需要为特定接收器的所有 必需 属性提供值以进行配置,如下所示。

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

例如,如果我们考虑 HDFS接收器 ,以下是我们 必须 为其配置值的属性。

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

描述频道

Flume提供各种渠道在源和汇之间传输数据。因此,需要与源和通道一起描述代理中使用的通道。

要描述每个通道,您需要设置所需的属性,如下所示。

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

例如,如果我们考虑 内存通道 ,以下是我们 必须 为其配置值的属性。

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 Agent

配置完成后,我们必须启动Flume代理。它完成如下 -

$ bin/flume-ng agent --conf ./conf/ -f conf/twitter.conf
Dflume.root.logger=DEBUG,console -n TwitterAgent
  • agent - 启动Flume代理的命令

  • --conf,-c - 在conf目录中使用配置文件

  • -f - 指定配置文件路径(如果缺少)

  • --name,-n - twitter代理的名称

  • -D property = value - 设置Java系统属性值。