开发手册 欢迎您!
软件开发者资料库

Apache Flume - 配置

Apache Flume配置 - 从简介,Hadoop中的数据传输,架构,数据流,环境,配置,获取Twitter数据,序列生成器源,NetCat源,从简单而简单的步骤学习Apache Flume。

安装Flume后,我们需要使用配置文件对其进行配置,配置文件是具有键值对的Java属性文件.我们需要将值传递给文件中的键.

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

  • 命名当前代理的组件.

  • 描述/配置源.

  • 描述/配置接收器.

  • 描述/配置频道.

  • 将源和接收器绑定到频道.

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

命名组件

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

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

Flume支持各种源,接收器和通道.它们列在下面的表格中.

来源频道Sinks
  • Avro来源

  • 节俭来源

  • 执行来源

  • JMS来源

  • 假脱机目录来源

  • Twitter 1%firehose来源

  • Kafka来源

  • NetCat来源

  • 序列生成器来源

  • Syslog来源

  • Syslog TCP Source

  • Multiport Syslog TCP Source

  • Syslog UDP Source

  • HTTP Source

  • 压力源

  • 传统来源

  • 节俭遗产来源

  • 自定义来源

  • Scribe来源

  • 内存频道

  • JDBC频道

  • Kafka频道

  • 文件频道

  • Spillable Memory C hannel

  • 伪交易渠道

  • HDFS接收器

  • Hive Sink

  • 记录器接收器

  • Avro Sink

  • Thrift Sink

  • IRC Sink

  • 档案卷水槽

  • Null Sink

  • HBaseSink

  • AsyncHBaseSink

  • MorphlineSolrSink

  • ElasticSearchSink

  • Kite Dataset Sink

  • Kafka Sink

您可以使用其中任何一种.例如,如果您使用Twitter源通过内存通道将Twitter数据传输到HDFS接收器,并且代理商名称id 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(类型名称) 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 sink ,以下是我们必须要考虑的属性提供配置它的值.

 TwitterAgent.sinks.HDFS.type = hdfs(type name) TwitterAgent. sinks.HDFS.hdfs.path = HDFS目录存储数据的路径

描述频道

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

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

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

例如,如果我们考虑内存通道,以下是我们必须的属性i>提供值来配置它.

 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

where :

  • 代理商 : 启动Flume代理的命令

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

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

  •  -  name,-n< name> :  Twitter代理商的名称

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