Apache Flume - 配置
安装 Flume 后 , 我们需要使用配置文件进行配置 , 该配置文件是一个 Java 属性文件 , 具有 键值对 我们需要将值传递给文件中的键。
在 Flume 配置文件中 , 我们需要 -
- 为当前代理的组件命名。
- 描述 / 配置源。
- 描述 / 配置接收器。
- 描述 / 配置通道。
- 将源和接收器绑定到通道。
通常我们可以在 Flume 中有多个代理。我们可以通过使用唯一的名称来区分每个代理。并且使用这个名称, 我们必须配置每个代理。
命名组件
首先 , 您需要命名 / 列出组件 , 例如源 , 接收器和代理的通道 , 如下所示。
agent_name.sources = source_name
agent_name.sinks = sink_name
agent_name.channels = channel_name
Flume 支持各种源、接收器和通道。它们在下表中列出。
来源 | 渠道 | 水槽 |
---|
- Avro 源
- 节俭来源
- Exec 源
- JMS 源
- 假脱机目录源
- Twitter 1% firehose 来源
- Kafka 源码
- NetCat 源
- 序列生成器源
- Syslog 源
- Syslog TCP 源
- 多端口 Syslog TCP 源
- Syslog UDP 源
- HTTP 源
- 应力源
- 旧式源
- 节俭的传统来源
- 自定义源
- 抄写源
|
- 内存通道
- JDBC 通道
- 卡夫卡频道
- 文件通道
- 可溢出内存通道
- 伪事务信道
|
- HDFS 水槽
- 蜂巢水槽
- 记录器水槽
- Avro 水槽
- 节俭水槽
- IRC 水槽
- 文件卷接收器
- Null 接收器
- HBaseSink
- AsyncHBaseSink
- MorphlineSolrSink
- ElasticSearchSink
- 风筝数据集水槽
- 卡夫卡水槽
您可以使用它们中的任何一个。例如 , 如果您正在使用 Twitter 源通过内存通道将 Twitter 数据传输到 HDFS 接收器 , 并且代理名称 id TwitterAgent , 那么
TwitterAgent.sources = Twitter
TwitterAgent.channels = MemChannel
TwitterAgent.sinks = HDFS
在列出代理的组件之后 , 您必须通过向其属性提供值来描述源、接收器和通道。
描述来源
每个源都会有一个单独的属性列表 , 名为 “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 来源 , 以下是我们要使用的属性 必须 提供值以进行配置。
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 ” 一起 , 需要向所有 required 属性来配置它 , 如下所示。
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 源 , 内存通道 , and 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
where −
-
代理 − 启动 Flume 代理的命令
-
**-- conf, - c < conf > ** − 使用 conf 目录下的配置文件
-
**- f < 文件 > ** − 指定配置文件路径 ( 如果缺少 )
-
**-- name, - n < name > ** − Twitter 代理的名称
-
- D 属性 = 值 − 设置 Java 系统属性值。