1、配置文件现状

1.1 Flume数据接收端

IP地址:54.0.95.67

功能:接收各个端口发来的数据。

启动方式:进入目录 /usr/local/flume/*bin 在终端运行 ./recei*.sh 启动agent。

该agent的配置文件在 /usr/local/flume/*bin/conf/receiveTest.conf 文件中。

1.2 Flume 数据搜集

目前只配置了16台主机,分别是:1. root@54.0.193.30:22,2. root@54.0.76.192:22,6. root@54.0.105.32:22,7. root@54.0.105.33:22,8. root@54.0.105.35:22 ,13. root@54.0.76.11:22,20. root@54.0.193.56:22 ,21. root@54.0.193.57:22,24. root@54.0.193.55:22 ,36. root@54.0.160.24:22,37. root@54.0.160.25:22 ,54. root@54.0.193.35:22 ,58. root@54.0.193.32:22,以及第9,第10和第11台主机。

功能:监听某个文件(自定),若文件有新增内容,agent.sources立即搜集,经channels传输至相应的sinks中。

启动方式:进入目录 /tmp/flume/*bin 在终端运行 ./cli*.sh 启动相应agent。

该agent的配置文件在 /tmp/flume/*bin/conf/cli*.conf 文件中。

2、所用配置文件介绍

2.1 Flume Sources

2.1.1 拦截器

a1.sources = r1

a1.sources.r1.interceptors = i1 i2 i3

a1.sources.r1.interceptors.i1.type = timestamp

a1.sources.r1.interceptors.i2.type = host

a1.sources.r1.interceptors.i2.hostHeader = hostname

a1.sources.r1.interceptors.i2.useIP = false

a1.sources.r1.interceptors.i3.type = static

a1.sources.r1.interceptors.i3.key = datatype

a1.sources.r1.interceptors.i3.value = TYPE_A

(1) TimeStampInterceptor:使用时间戳拦截

type = timestamp

设定timestamp,则会在flume event中添加一个键为timestamp的头,值为当前系统的datetime。设定timestamp的主要作用是当sink为hdfs格式时,可将该时间戳用在文件名或生成的文件的所在目录中。

(2) StaticInterceptor:可以自定义事件的header的value

type = static

用于向每个处理的event插入任意单个的键/值头。默认为保留已存在的具有相同键的头。

也可以理解为自定义标签。

(3) HostInterceptor:使用IP或hostname拦截

type = host

如果未指定hostHeader,则头的键就是host。useIP默认为true,即值使用IP,当设定为false,则value为hostname。preserveExisting属性代表是否覆盖消息头中已经有的IP,默认为false。

2.1.2 选择器 Selector

有两种模式:replicating、multiPlexing。

(1)replicating (默认):复制。把所有event发送到每一个channel中,也反映了sorces与channels可以是一对多的关系。

a1.sources = r1

a1.channels = c1 c2 c3

a1.source.r1.selector.type = replicating

a1.source.r1.channels = c1 c2 c3

a1.source.r1.selector.optional = c3

(2) multiPlexing:分流。这要求指定到一个通道集合的映射事件属性。Selector会在事件头检查每一个配置属性,若匹配该value,则把event发给该channels(这mapping允许每一个value有重复的channel),若都不匹配,则可以发给默认(default)的channels。

a1.sources = r1

a1.channels = c1 c2 c3 c4

a1.sources.r1.selector.type = multiplexing

a1.sources.r1.selector.header = datetype

a1.sources.r1.selector.mapping.TYPE_A = c1

a1.sources.r1.selector.mapping.TYPE_B= c2 c3

a1.sources.r1.selector.default = c4

2.2 Flume Channels

Memory-channel效率高但可能丢失数据,file-channel安全性高但性能不高。这里用的是memory-channel,但如果把capacity设置的足够小,使内存中的数据尽可能少,在意外重启或断电时丢失的数据就会很少了。

2.3 Flume Sinks

2.3.1 文件命名

当sink的type为hdfs格式时,可以指定文件的前缀与后缀,前提是消息头设置有IP和时间戳。

a1.sinks.k1.hdfs.filePrefix = %{hostname}-%y-%m-%d

a1.sinks.k1.hdfs.fileSuffix = .log

%{hostname} :取消息头中的主机名作为文件名的一部分。

%y-%m-%d :取消息头中的时间戳作为文件名的一部分,此时间格式可根据需要修改。

fileSuffix = .log 文件后缀为.log,当文件还未关闭时,此后缀的后面还有一个.tmp尾巴,通过inUseSuffix将此.tmp(默认)消去:a1.sinks.k1.hdfs.inUseSuffix =

2.3.2 rollIntervalrollSizerollCount

在54.0.95.67主机中,sink的type为hdfs,rollInterval、rollSize以及rollCount可以很好的控制hdfs文件的大小。

(1)          rollInterval 默认为30秒,即每隔30秒建立一个新的文件,此处可以根据需要设置合理的按时间间隔生成一个新文件。

(2)          rollSize 默认为1024个字节,当文件数据达到此大小,则产生一个新的文件。经验证,若某个event的传入超过了rollSize,且传入之前未满,则该event依然装入该文件,下一个event则另起一个新文件。

(3)          rollCount 默认为10,即一个文件装10个event。

若三个值都设定为0,则hdfs就只有一个文件,里面是变得越来越大的文件。

2.3.3 文件类型 filetype

(1)序列文件 SequenceFile (默认)

通常文件会以换行符确定每一条记录,若数据中含有换行符,使用SequenceFile可以解决问题。

(2)数据流DataStream

只输出未压缩的值。

(3)压缩流 CompressedStream

类似DataStream,但是数据写入时会被压缩。在MapReduce中只有某些压缩格式才可能进行分割。

3、注意点

3.1 JDK版本不兼容问题

JDK用1.6或1.6以上版本。

3.2 对应关系

Sources与channnels可以是一对一或者一对多关系,不可以多对一。

Channels与sinks是一对一关系或者多对一。

3.3 收到多份相同数据

若发现新增一条数据,却可以收到多份相同数据,原因是未正常关闭tail,有多个tail进程在同时跑。

3.4 HDFS目录

当sinks的type为hdfs时,文件目录需要在主机master中建立。

4flume各组件支持的类型

4.1 flume source 支持的类型

Source类型

说明

Avro Source

支持Avro协议(实际上是是Avro RPC)

Syslog Source

支持UDP和TCP两种协议

HTTP Source

基于HTTP POST或get方式的数据,支持JSON,BLOB表示形式。

Spooling Dir Source

监控指定目录内数据变更

Netcat Source

监控某个端口

Exec Source

基于Unix的command

……

……

4.2 flume channel 支持的类型

Channel类型

说明

Memory Channel

Event数据存储在内存中

JDBC

数据存储在持久化存储中,当前channel 内置支持Derby

File Channel

数据存储在磁盘文件中

……

……

4.3 flume sink支持的类型

Sink 类型

说明

HDFS Sink

数据写入HDFS

Logger Sink

数据写入日志文件

Avro sink

数据被转换成Avro Event ,在发送到配置的RPC端口上

File Roll Sink

存储数据到本地文件系统

Null Sink

丢弃掉所有数据

Hbase Sink

数据写入Hbase数据库

……

……

flume-ng配置文档简单说明的更多相关文章

  1. Flume NG 配置详解(转)

    原文链接:[转]Flume NG 配置详解 (说明,名词对应解释 源-Source,接收器-Sink,通道-Channel) 配置 设置代理 Flume代理配置存储在本地配置文件.这是一个文本文件格式 ...

  2. Oracle12C安装配置文档

    Oracle12C安装配置文档   Oracle12C安装配置文档 准备软件: 开始安装: 打开从官网下载下来的两个压缩包,进行解压 打开解压好的后缀为2of2的文件夹找到路径为database下的“ ...

  3. MYSQL服务器my.cnf配置文档详解

    MYSQL服务器my.cnf配置文档详解 硬件:内存16G [client] port = 3306 socket = /data/3306/mysql.sock [mysql] no-auto-re ...

  4. 转!!Java代码规范、格式化和checkstyle检查配置文档

    为便于规范各位开发人员代码.提高代码质量,研发中心需要启动代码评审机制.为了加快代码评审的速度,减少不必要的时间,可以加入一些代码评审的静态检查工具,另外需要为研发中心配置统一的编码模板和代码格式化模 ...

  5. Hibernate配置文档详解

    Hibernate配置文档有框架总部署文档hibernate.cfg.xml 和映射类的配置文档 ***.hbm.xml hibernate.cfg.xml(文件位置直接放在src源文件夹即可) (在 ...

  6. Java代码规范、格式化和checkstyle检查配置文档

    http://www.blogjava.net/amigoxie/archive/2014/05/31/414287.html 文件下载: http://files.cnblogs.com/files ...

  7. Spring Hibernate4 整合配置文档

    1 applicationContext.xml配置文档 <?xml version="1.0" encoding="UTF-8"?><bea ...

  8. Kerberos主从配置文档

    Kerberos主从配置文档   1. Kerberos主从同步机制 在Master上通过以下命令同步数据: kdb5_util dump /var/kerberos/krb5kdc/slave_db ...

  9. python常用模块-配置文档模块(configparser)

    python常用模块-配置文档模块(configparser) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. ConfigParser模块用于生成和修改常见配置文档,当前模块的名称 ...

随机推荐

  1. android 入门-控件 测量状态栏高度

    private ViewTreeObserver viewTreeObserver; /** 获取可見区域高度 **/ WindowManager manager = getWindowManager ...

  2. hdu 4055 递推

    转自:http://blog.csdn.net/shiqi_614/article/details/7983298 题意:由数字1到n组成的所有排列中,问满足题目所给的n-1个字符的排列有多少个,如果 ...

  3. [Java] xms xmx XX:PermSize XX:MaxPermSize 参数意义解析

    今天在做jmeter压力测试时又出现以前经常出现的异常,如下图,长时间不弄这个的,又有点不知所措了,所以干脆再来总结一下问题: 以前写过两篇文章,对这个问题研究过,见下面连接: 连接1:http:// ...

  4. virtualbox无法安装VBoxLinuxAdditions.run

    执行 sh ./VBoxLinuxAdditions.run   命令后报错 ./VBoxLinuxAdditions.run: ./VBoxLinuxAdditions.run: Input/out ...

  5. loj 1257 (求树上每一个点到树上另一个点的最长距离)

    题目链接:http://lightoj.com/volume_showproblem.php?problem=1257 思路:首先需要用到一个知识点就是树上任一点到树上最长直径的某一个端点的距离最远, ...

  6. DIV伸缩盒子box

    <div class="div1"> <div class="box"> <div>A</div> <di ...

  7. 【微信Java开发 --1---番外1】在windows下,使用JAVA执行多条DOS命令+文件夹/路径中有空格怎么解决【目的是实现内容穿透外网】

    内网穿透外网的那一篇,参正集1 但是每次都要Ctrl+R 启动DOS窗口,也就是CMD,一句一句的去粘,略显繁琐. 所以将这些任务写在JAVA程序中,启动一次程序就可以实现[内网穿透]的功能,多好啊! ...

  8. 性能测试中TPS和并发用户数

    并发用户数与TPS之间的关系 1.  背景 在做性能测试的时候,很多人都用并发用户数来衡量系统的性能,觉得系统能支撑的并发用户数越多,系统的性能就越好:对TPS不是非常理解,也根本不知道它们之间的关系 ...

  9. express-19 路由2

    组织路由 在主应用程序文件中定义所有路由太笨重了.那样不仅会导致那个文件一直增长,还不利于功能的分离,因为那个文件里已经有很多东西了. 四条组织路由的指导原则 给路由处理器用命名函数: 到目前为止,我 ...

  10. 转:delphi 删除指定文件夹下所有文件

    function TFtpContentThd.DeleteDirectory(NowPath: string): Boolean; var search: TSearchRec; ret: inte ...