flume
可以监控的内容:
服务器本地磁盘文件夹
网络端口数据
agent是一个jvm进程,是以事件(event)的形式将数据从源头传送至目的地,事件就是一个类的对象,在source读入后进行封装
event由Header和Body组成,Body是数据,Header是Body的解释信息,元数据信息,格式
agent的三个组件:source,channel,sink(每一个组件就是一个类)
flume执行任务的配置文件格式:
agent:a1.sources= a1.sinks= a1.channels= //注意s
source:见下面source的配置
sink:见下面sink的配置
channel:a1.channel.c1.capacity=1000单位是event
a1.channel.c1.transactioncapacity=100 一次传多少
bind:
一个source可以绑定到多个channel
一个sink只能绑定给一个channel
source(传输,可以拦截数据)
常用的source
taildir-source:监控多个文件
avro source
exec source实时监控,一次性全部上传
spooling directory 与目录有关,新文件上传
netcat source监控端口
netcat source
过程:
netcat source—channel—logger sink
准备:
安装netcat:yum install -y nc
必须的配置
channels
type
bind 用户名或者IP
port 端口号
spooldir source
上传文件会加后缀,上传做简单校验,带有生成后缀名的文件上传,不会扫描,不会触发事件
必须的配置
channels
type
spoolDir
常用的配置
includePattern(包含,匹配就上传)
ignorePattern (忽略,匹配就不上传)
缺点
不能监控动态变化的文件,不可更改
taildir source
可以监控多目录,多文件(文件可以是不同目录的不同文件)
断点续传:通过一个文件来实现,position.json:
inode:全路径(cp,mv操作inode都会改变),position:偏移量
必须的配置:
channels
type
filegroups
filegroups.
positionFile = 。。。.json inode信息 系统生成,存有已经读取的位置的偏移量,保证断点续传
一个filegroups只能监控一个文件,配置多个文件会覆盖
exec存在单点故障,没有断点续传
taildir有断点续传,监控多个文件夹里的多个文件
exec source
exec tail -F -C +0从头开始读(-F会先读文件已经存在的最后10行)
必须的配置
channels
type
command
sink(沉槽)要启动的进程
常用的sink
hdfs sink
必须的配置
channel
type
hdfs.path
常用的配置
hdfs.rollInterval=30 30秒滚动当前文件
hdfs.rollSize=1024 一般设置为128M,134217000
hdfs.rollCount=10 事件数
以上配置是滚动当前文件,满足任意一个生成一个文件
hdfs.round =true 时间戳是否向下取整
hdfs.roundValue=1 值
hdfs.roundUnit=second 单元(时,分,秒)
hdfs.useLocalTimeStamp true:用本地时间戳
以上配置是生成文件时名字带的时间戳
Fileroll sink
导入到本地文件
必须的配置
channel
type
sink.directory
区别
File Roll sink需要提前创建文件
hdfs sink不需要提前创建文件
channel(通道,缓冲)
agent内部流程
channel选择器会选择到那个channel
channel选择器有两种策略:
1.replicating channel selector(default)副本channel选择器
2.multiplexing channel selector 多路channel选择器
flume事务
flume有两个事务
put事务source到channel过程
流程
doput:将批数据先写入临时缓冲区putList
doCommit:检查channel内队列是否能够合并
doRollback:channel内存队列空间不足,回滚数据
Take事务channel到sink过程
流程
doTake:将批数据先写入临时缓冲区takeList,并将数据发送到hdfs
doCommit:如果数据全部发送成功,则清除临时缓冲区takelist
doRollback:数据发送过程中如果出现异常,rollback将临时缓冲区takelist中的数据还给channel内存队列
sink组
3类:default sinkprocessor,loadbalancing cinkprocessor(负载均衡),failover sinkprocessor(故障转移,高可用)
loadbalancing cinkprocessor
负载均衡的三种方式:
1.round-robin 轮询
2.random 随机
3.FQCN 自定义
配置注意点
Processor backoff与selec.maxTimeOut(最大等待时间)结合使用,backoff成指数上升
拓扑结构
简单关联,复制和多路复用,avro,故障转移,聚合
复制
一个数据源到多个存储(hdfs,本地目录),需要多个agent
avro source是服务端,首先开启,avro sink是客户端,后开启,否则报错,但是在服务端开启后正常使用
agent组件可以只有两个
source+kafka channel
kafka channel+sink
TimeOut(最大等待时间)结合使用,backoff成指数上升
拓扑结构
简单关联,复制和多路复用,avro,故障转移,聚合
复制
一个数据源到多个存储(hdfs,本地目录),需要多个agent
avro source是服务端,首先开启,avro sink是客户端,后开启,否则报错,但是在服务端开启后正常使用
agent组件可以只有两个
source+kafka channel
kafka channel+sink
未完,持续更新