flume-ng配置文档简单说明
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 rollInterval、rollSize、rollCount
在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中建立。
4、flume各组件支持的类型
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配置文档简单说明的更多相关文章
- Flume NG 配置详解(转)
原文链接:[转]Flume NG 配置详解 (说明,名词对应解释 源-Source,接收器-Sink,通道-Channel) 配置 设置代理 Flume代理配置存储在本地配置文件.这是一个文本文件格式 ...
- Oracle12C安装配置文档
Oracle12C安装配置文档 Oracle12C安装配置文档 准备软件: 开始安装: 打开从官网下载下来的两个压缩包,进行解压 打开解压好的后缀为2of2的文件夹找到路径为database下的“ ...
- MYSQL服务器my.cnf配置文档详解
MYSQL服务器my.cnf配置文档详解 硬件:内存16G [client] port = 3306 socket = /data/3306/mysql.sock [mysql] no-auto-re ...
- 转!!Java代码规范、格式化和checkstyle检查配置文档
为便于规范各位开发人员代码.提高代码质量,研发中心需要启动代码评审机制.为了加快代码评审的速度,减少不必要的时间,可以加入一些代码评审的静态检查工具,另外需要为研发中心配置统一的编码模板和代码格式化模 ...
- Hibernate配置文档详解
Hibernate配置文档有框架总部署文档hibernate.cfg.xml 和映射类的配置文档 ***.hbm.xml hibernate.cfg.xml(文件位置直接放在src源文件夹即可) (在 ...
- Java代码规范、格式化和checkstyle检查配置文档
http://www.blogjava.net/amigoxie/archive/2014/05/31/414287.html 文件下载: http://files.cnblogs.com/files ...
- Spring Hibernate4 整合配置文档
1 applicationContext.xml配置文档 <?xml version="1.0" encoding="UTF-8"?><bea ...
- Kerberos主从配置文档
Kerberos主从配置文档 1. Kerberos主从同步机制 在Master上通过以下命令同步数据: kdb5_util dump /var/kerberos/krb5kdc/slave_db ...
- python常用模块-配置文档模块(configparser)
python常用模块-配置文档模块(configparser) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. ConfigParser模块用于生成和修改常见配置文档,当前模块的名称 ...
随机推荐
- C# 实现单实例程序
在我们经常使用的软件中,当我们已经打开后,再次打开时,有的软件不会出现两个.例如有道词典,会将上次的界面显示出来,或者提示我们“该程序已经运行...”.我通过一个简单的C# WPF例子来说明. 首先我 ...
- AndroidStudio创建新项目报错
创建新项目自动执行时报错: Failed to import new Gradle project: failed to find Build Tools revision 17.0.0 Consul ...
- JQuery 操作对象的属性值
通过JQuery去操作前台对象(div,span...)的属性是很常见的事情,本文就简单的介绍几种操作情形. 1):通过属性值去获取对象 2):用JQuery去修改对象的属性值 3):获取并修改对象的 ...
- Activity活动
自定义一个类继承Activity类后结构已经很好了 提供了finish()来销毁活动 要记得注册
- 为什么要使用 Node.js
这是一个移动端工程师涉足前端和后端开发的学习笔记,如有错误或理解不到位的地方,万望指正. Node.js 是什么 传统意义上的 JavaScript 运行在浏览器上,这是因为浏览器内核实际上分为两个部 ...
- cocos2dx游戏开发——微信打飞机学习笔记(一)——开发准备
一.环境的搭建 1.Windows开发准备: (1)软件下载及安装 •下载Cocos2d-x 最新版本:http://www.cocos2d-x.org/download 或者从Cocos2d-x G ...
- 【spring 后台跳转前台】使用ajax访问的后台,后台正常执行,返回数据,但是不能进入前台的ajax回调函数中
问题: 使用ajax访问的后台,后台正常执行,并且正常返回数据,但是不能进入前台的ajax回调函数中 问题展示: 问题解决: 最后发现是因为后台的方法并未加注解:@ResponseBody,导致方法 ...
- python运算符和表达式
算术运算符: 比较运算符: 赋值运算符: 位运算符: 逻辑运算符: 身份运算符: 成员运算符: 运算符优先级:
- mongodb学习02基础知识
文档 键值对的一个有序集 文档被表示为对象 文档必须有一个 _id 键 {"greeting" : "Hello, world!"}` 键 文档的键是字符串 区 ...
- [技术学习]js接口继承
js是面向对象语言,但是js又缺乏了面向对象的诸多特性,比如继承,没有接口继承也没有父类继承,因此有时候需要人工来实现继承. 一.首先看下java中面向对象的继承: //定义类鸟类的飞行动作 inte ...