Apache Flume 简明教程
Apache Flume - Configuration
安装 Flume 后,我们需要使用配置文件对其进行配置,配置文件是一个具有 key-value pairs 的 Java 属性文件。我们需要将值传递到文件中的键。
在 Flume 配置文件中,我们需要 −
-
命名当前代理的组件。
-
Describe/Configure the source.
-
Describe/Configure the sink.
-
Describe/Configure the channel.
-
将源和汇聚绑定到通道。
通常我们可以在 Flume 中有多个代理。我们可以使用唯一名称来区分每个代理。并使用此名称,我们必须配置每个代理。
Naming the Components
首先,您需要对组件命名/列出组件,例如代理的源、汇聚和通道,如下所示。
agent_name.sources = source_name
agent_name.sinks = sink_name
agent_name.channels = channel_name
Flume 支持各种源、汇聚和通道。它们列在下面的表格中。
Sources |
Channels |
Sinks |
Avro 源Thrift 源Exec 源JMS 源Spooling 目录源Twitter 1% firehose 源Kafka 源NetCat 源Sequence Generator 源Syslog 源Syslog TCP 源Multiport Syslog TCP 源Syslog UDP 源HTTP 源Stress 源Legacy 源Thrift Legacy 源Custom 源Scribe 源 |
Memory 通道JDBC 通道Kafka 通道File 通道Spillable Memory 通道Pseudo Transaction 通道 |
HDFS 汇聚Hive 汇聚Logger 汇聚Avro 汇聚Thrift 汇聚IRC 汇聚File Roll 汇聚Null 汇聚HBase 汇聚AsyncHBase 汇聚MorphlineSolr 汇聚ElasticSearch 汇聚Kite Dataset 汇聚Kafka 汇聚 |
您可以使用其中的任何一个。例如,如果使用 Twitter 源通过内存通道将 Twitter 数据传输到 HDFS 收集器,且代理名称 ID 为 TwitterAgent ,则:
TwitterAgent.sources = Twitter
TwitterAgent.channels = MemChannel
TwitterAgent.sinks = HDFS
列出代理组件后,您必须通过向属性提供值来描述源、收集器和通道。
Describing the Source
每个源将有一个单独的属性列表。名为“type”的属性是每个源的共有属性,用于指定我们正在使用的源类型。
除属性“type”外,还需要提供特定源的所有 required 属性的值才能对其进行配置,如下所示。
agent_name.sources. source_name.type = value
agent_name.sources. source_name.property2 = value
agent_name.sources. source_name.property3 = value
例如,如果我们考虑 twitter source ,则以下属性是我们必须为其提供值才能对其进行配置的属性。
TwitterAgent.sources.Twitter.type = Twitter (type name)
TwitterAgent.sources.Twitter.consumerKey =
TwitterAgent.sources.Twitter.consumerSecret =
TwitterAgent.sources.Twitter.accessToken =
TwitterAgent.sources.Twitter.accessTokenSecret =
Describing the Sink
与源一样,每个收集器都将有一个单独的属性列表。名为“type”的属性是每个收集器的共有属性,用于指定我们正在使用的收集器类型。除属性“type”外,还需要提供特定收集器所有 required 属性的值才能对其进行配置,如下所示。
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
Describing the 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)
Binding the Source and the Sink to the Channel
由于通道连接了源和收集器,因此需要将两者都绑定到通道,如下所示。
agent_name.sources.source_name.channels = channel_name
agent_name.sinks.sink_name.channels = channel_name
以下示例展示了如何将源和收集器绑定到通道。在此,我们考虑 twitter source, memory channel, 和 HDFS sink 。
TwitterAgent.sources.Twitter.channels = MemChannel
TwitterAgent.sinks.HDFS.channels = MemChannel
Starting a 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> - 使用 conf 目录中的配置文件
-
-f<file> - 如果缺少,指定配置文件路径
-
--name, -n <name> - twitter 代理的名称
-
-D property =value - 设置 Java 系统属性值。