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 系统属性值。