Apache Flume - 配置



安装 Flume 后,我们需要使用配置文件对其进行配置,该配置文件是一个 Java 属性文件,包含**键值对**。我们需要将值传递给文件中的键。

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

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

通常,我们可以在 Flume 中有多个代理。我们可以使用唯一的名称来区分每个代理。并使用此名称,我们需要配置每个代理。

命名组件

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

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

Flume 支持各种源、接收器和通道。它们列在下面给出的表中。

通道 接收器
  • Avro 源
  • Thrift 源
  • Exec 源
  • JMS 源
  • 暂存目录源
  • Twitter 1% 数据源
  • Kafka 源
  • NetCat 源
  • 序列生成器源
  • Syslog 源
  • Syslog TCP 源
  • 多端口 Syslog TCP 源
  • Syslog UDP 源
  • HTTP 源
  • 压力源
  • 旧版源
  • Thrift 旧版源
  • 自定义源
  • Scribe 源
  • 内存通道
  • JDBC 通道
  • Kafka 通道
  • 文件通道
  • 可溢出内存通道
  • 伪事务通道
  • HDFS 接收器
  • Hive 接收器
  • 日志接收器
  • Avro 接收器
  • Thrift 接收器
  • IRC 接收器
  • 文件滚动接收器
  • 空接收器
  • HBase 接收器
  • 异步 HBase 接收器
  • MorphlineSolr 接收器
  • ElasticSearch 接收器
  • Kite 数据集接收器
  • Kafka 接收器

您可以使用其中任何一个。例如,如果您正在使用 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 = 

描述接收器

就像源一样,每个接收器都将具有单独的属性列表。名为“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 directory’s 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 代理

配置完成后,我们需要启动 Flume 代理。操作如下 -

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

其中 -

  • **agent** - 启动 Flume 代理的命令

  • **--conf ,-c<conf>** - 使用 conf 目录中的配置文件

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

  • **--name, -n <name>** - twitter 代理的名称

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

广告