Flume NG 学习笔记(三)流配置

版权声明:本文为博主原创文章,未经博主允许不得转载。

目录(?)[+]

在通过flume采集日志数据的时候,一般都是通过flume 代理从日志源或者日志客户端采集数据到flume代理中,然后再由flume代理送到目标存储.上图中就是每个一级flume代理负责从webserv采集数据,然后再由一个二级flume代理进行日志汇总。

Flume支持从一个源发送事件到多个通道中,这被称为事件流的复用。这里需要在配置中定义事件流的复制/复用,选择1个或者多个通道进行数据流向。

下面的内容主要介绍flume 流配置,这节比较水,因为都比较简单。

一、单一代理流配置

下面的配置例子是外部数据源通过avro客户端发送数据到HDFS上。下面无节操的直接拷官网

[html] view plain copy

  1. agent_foo.sources= avro-AppSrv-source
  2. agent_foo.sinks= hdfs-Cluster1-sink
  3. agent_foo.channels= mem-channel-1
  4. # set channel for sources, sinks
  5. # properties of avro-AppSrv-source
  6. agent_foo.sources.avro-AppSrv-source.type= avro
  7. agent_foo.sources.avro-AppSrv-source.bind= localhost
  8. agent_foo.sources.avro-AppSrv-source.port= 10000
  9. # properties of mem-channel-1
  10. agent_foo.channels.mem-channel-1.type= memory
  11. agent_foo.channels.mem-channel-1.capacity= 1000
  12. agent_foo.channels.mem-channel-1.transactionCapacity= 100
  13. # properties of hdfs-Cluster1-sink
  14. agent_foo.sinks.hdfs-Cluster1-sink.type= hdfs
  15. agent_foo.sinks.hdfs-Cluster1-sink.hdfs.path= hdfs://namenode/flume/webdata

二、单代理多流配置

单代理多流配置是上面的加强版,相当于一个代理两个流,一个是从外部avro客户端到HDFS,另一个是Linux命令(tail)的输出到Avro接受代理,2个做成配置。继续无节操的直接拷官网

[html] view plain copy

  1. # list the sources, sinks and channelsin the agent
  2. agent_foo.sources= avro-AppSrv-source1 exec-tail-source2
  3. agent_foo.sinks= hdfs-Cluster1-sink1 avro-forward-sink2
  4. agent_foo.channels= mem-channel-1 file-channel-2
  5. # flow #1 configuration
  6. agent_foo.sources.avro-AppSrv-source1.channels= mem-channel-1
  7. agent_foo.sinks.hdfs-Cluster1-sink1.channel= mem-channel-1
  8. # flow #2 configuration
  9. agent_foo.sources.exec-tail-source2.channels= file-channel-2
  10. agent_foo.sinks.avro-forward-sink2.channel= file-channel-2

三、配置多代理流程

这个配置就是学习(二)的第二个例子,简单的讲就是数据源发送的事件由第一个Flume代理发送到下一个Flume代理中。下面是官网:

[html] view plain copy

  1. # list sources, sinks and channels inthe agent
  2. agent_foo.sources= avro-AppSrv-source
  3. agent_foo.sinks= avro-forward-sink
  4. agent_foo.channels= file-channel
  5. # define the flow
  6. agent_foo.sources.avro-AppSrv-source.channels= file-channel
  7. agent_foo.sinks.avro-forward-sink.channel= file-channel
  8. # avro sink properties
  9. agent_foo.sources.avro-forward-sink.type= avro
  10. agent_foo.sources.avro-forward-sink.hostname= 10.1.1.100
  11. agent_foo.sources.avro-forward-sink.port= 10000
  12. # configure other pieces
  13. #...

例子都不难理解

四、多路复用流

Flume支持从一个源到多个通道和sinks,叫做fan out。有两种模式的fan out,复制和复用。复制就是流的事件被发送到所有的配置通道去。

[html] view plain copy

  1. # List the sources, sinks and channelsfor the agent
  2. <Agent>.sources= <Source1>
  3. <Agent>.sinks= <Sink1> <Sink2>
  4. <Agent>.channels= <Channel1> <Channel2>
  5. # set list of channels for source(separated by space)
  6. <Agent>.sources.<Source1>.channels= <Channel1> <Channel2>
  7. # set channel for sinks
  8. <Agent>.sinks.<Sink1>.channel= <Channel1>
  9. <Agent>.sinks.<Sink2>.channel= <Channel2>
  10. <Agent>.sources.<Source1>.selector.type= replicating

其中,<Agent>.sources.<Source1>.selector.type= replicating 这个源的选择类型为复制。这个参数不指定一个选择的时候,默认情况下它复制

复用则是麻烦一下,流的事情是被筛选的发生到不同的渠道,需要指定源和扇出通道的规则,感觉与case when 类似。

复用的参数为:<Agent>.sources.<Source1>.selector.type = multiplexing

[html] view plain copy

  1. # Mapping for multiplexing selector
  2. <Agent>.sources.<Source1>.selector.type= multiplexing
  3. <Agent>.sources.<Source1>.selector.header= <someHeader>
  4. <Agent>.sources.<Source1>.selector.mapping.<Value1>= <Channel1>
  5. <Agent>.sources.<Source1>.selector.mapping.<Value2>= <Channel1> <Channel2>
  6. <Agent>.sources.<Source1>.selector.mapping.<Value3>= <Channel2>
  7. #...
  8. <Agent>.sources.<Source1>.selector.default= <Channel2>

官网中给出例子,可以看出流的事件要声明一个头部,然后我们检查头部对应的值,这里我们可以认为是事件属性,如果指定的值与设定的通道相匹配,那么就将该事件发送到被匹配到的通道中去。这个参数就是默认通道<Agent>.sources.<Source1>.selector.default =<Channel2>

下面是官网中复用的详细配置例子

[html] view plain copy

  1. # list the sources, sinks and channelsin the agent
  2. agent_foo.sources= avro-AppSrv-source1
  3. agent_foo.sinks= hdfs-Cluster1-sink1 avro-forward-sink2
  4. agent_foo.channels= mem-channel-1 file-channel-2
  5. # set channels for source
  6. agent_foo.sources.avro-AppSrv-source1.channels= mem-channel-1 file-channel-2
  7. # set channel for sinks
  8. agent_foo.sinks.hdfs-Cluster1-sink1.channel= mem-channel-1
  9. agent_foo.sinks.avro-forward-sink2.channel= file-channel-2
  10. # channel selector configuration
  11. agent_foo.sources.avro-AppSrv-source1.selector.type= multiplexing
  12. agent_foo.sources.avro-AppSrv-source1.selector.header= State
  13. agent_foo.sources.avro-AppSrv-source1.selector.mapping.CA= mem-channel-1
  14. agent_foo.sources.avro-AppSrv-source1.selector.mapping.AZ= file-channel-2
  15. agent_foo.sources.avro-AppSrv-source1.selector.mapping.NY= mem-channel-1 file-channel-2
  16. agent_foo.sources.avro-AppSrv-source1.selector.default= mem-channel-1

上面例子中,设置事件的头属性Header 为“State”作为的选择检查。剩下的就是与case when 基本一样。其中,例子中的配置

agent_foo.sources.avro-AppSrv-source1.selector.mapping.NY= mem-channel-1 file-channel-2 从这里可以看出映射允许每个值通道可以重叠。默认值可以包含任意数量的通道。

时间: 2024-10-12 17:10:01

Flume NG 学习笔记(三)流配置的相关文章

Flume NG 学习笔记(五)Sinks和Channel配置

一.HDFS Sink Flume Sink是将事件写入到Hadoop分布式文件系统(HDFS)中.主要是Flume在Hadoop环境中的应用,即Flume采集数据输出到HDFS,适用大数据日志场景. 目前,它支持HDFS的文本和序列文件格式,以及支持两个文件类型的压缩.支持将所用的时间.数据大小.事件的数量为操作参数,对HDFS文件进行关闭(关闭当前文件,并创建一个新的).它还可以对事源的机器名(hostname)及时间属性分离数据,即通过时间戳将数据分布到对应的文件路径. HDFS目录路径可

Flume NG 学习笔记(一)简介

一.简介 Flume是一个分布式.可靠.高可用的海量日志聚合系统,支持在系统中定制各类数据发送方,用于收集数据:同时,Flume提供对数据的简单处理,并写到各种数据接收方的能力. Flume在0.9.x and 1.x之间有较大的架构调整,1.x版本之后的改称Flume NG(next generation),0.9.x的称为Flume OG(originalgeneration). 对于OG版本, Flume NG (1.x.x)的主要变化如下: 1.sources和sinks 使用chann

Flume NG 学习笔记(四)Source配置

首先.这节水的东西就比较少了,大部分是例子. 一.Avro Source与Thrift Source Avro端口监听并接收来自外部的Avro客户流的事件.当内置Avro 去Sinks另一个配对Flume代理,它就可以创建分层采集的拓扑结构.官网说的比较绕,当然我的翻译也很弱,其实就是flume可以多级代理,然后代理与代理之间用Avro去连接 下面是官网给出的source的配置,加粗的参数是必选,描述就不解释了. Property Name Default Description channel

Flume NG 学习笔记(二)单机与集群Flume 配置

下面的内容基本来自官网:http://flume.apache.org/FlumeUserGuide.html 本文使用的是最新版本的apache flume 1.5,安装完Flume然后测试下Flume是否可以用,在Flume目录下用以下语句测试: bin/flume-ng agent -n$agent_name -c conf -f conf/flume-conf.properties.template 结果如图显示: Ok,我们接下去看下面常用架构.功能配置示例 一.最简单的单一代理Flu

Flume NG 学习笔记(八)Interceptors(拦截器)测试

版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[+] 拦截器主要是对事件的header信息信息操作,要么直接忽略他,要么修改他的数据 一.Event Serializers file_roll sink 和hdfs sink 都支持EventSerializer接口 1.1.Body Text Serializer Body TextSerializer,别名:text.这个拦截器将把事件的body部分写入到输出流中而不需要任何转换或者修改.事件的header将直接被忽略. 下

Flume NG 学习笔记(十) Transaction、Sink、Source和Channel开发

版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[+] 一.Transaction interface Transaction接口是基于flume的稳定性考虑的.所有主要的组件(sources.sinks.channels)都必须使用Flume Transaction.我们也可以理解Transaction接口就是flume的事务,sources和sinks的发送数据与接受数据都是在一个Transaction里完成的. 从上图中可以看出,一个Transaction在Channel实

【JavaWeb】学习笔记三 Eclipse配置开发环境

1.去Eclipse官网下载一个Eclipse IDE for Java EE http://www.eclipse.org/downloads/ 2.下载安装完毕,在 左侧Package Explorer点击右键-> New -> Project 3.在弹窗中选择 Web -> Dynamic Web Project 创建项目 4.根据自己项目名和路径 Tomcat jdk配置相关版本和路径 5.在WebContent里创建一个index.jsp 6.在myhome上点击右键->

struts学习笔记(1)基本配置

Struts2  学习笔记 吃透最简单的Helloword实例之后 ,接着再一一去研究 请求参数的接收与发送,参数的封闭,校验,result,struts2标签库这些最为核心的东西(其实这些也正是最常用的东西),经过这样的学习,应该领会了一些Struts2的流程,接着再去阅读相关文档去了解Strust2的拦截器设计思想(这叫先使用再体会的学习方法),接着可以做一些针对于自定义拦截器的实现来深化对Struts2的认识.此时,你已经达到企业中使用的级别了,接下来就可以玩一些SSh整合 一.基本配置 

NFC学习笔记——三(在windows操作系统上安装libnfc)

本篇翻译文章: 这篇文章主要是说明如何在windows操作系统上安装.配置和使用libnfc. 一.基本信息 1.操作系统: Windows Vista Home Premium SP 2 2.硬件信息: System: Dell Inspiron 1720 Processor: Intel Core 2 Duo CPU T9300 @ 2.5GHz 2.5GHz System type: 32-bit Operating System 3.所需软件: 在windows操作系统上安装软件需要下列