Flume版本:1.9
source
- 常用的source:Taildir Source
- Taildir Source功能:监控目录下的多个追加文件
- 实现断点续传的原理:读取完数据后 将offset保存到磁盘的文件中
- 如果Taildir Source挂了,可能会出现重复数据,下面有两种处理方式:
1、Flume不处理,去重任务交给下游,这样可以确保Flume的效率(推荐) 2、Flume加事务,但会变慢(不推荐)
channel
名称 | 说明 | 默认容量 | 应用场景 |
---|
memory channel | 基于内存,效率高,可靠性低 | 100个event | 普通日志,要求快,丢一点无所谓 | file channel | 基于磁盘,效率低,可靠性高 | 100万个event | 和钱相关的,要求准 | kafka channel | 基于Kafka,效率高、可靠性高 | | 直接对接Kafka |
- 如果memory channel挂了,最坏可能丢100个event
sink
- 常用的sink:HDFS Sink
- 对于HDFS Sink的HDFS小文件问题,要配置文件滚动:
1、按大小滚动:128M(HDFS块大小) 2、按时间滚动:1小时(注意:时间不能太长,如果设2小时,23:59滚动一次后01:59才滚下一次,而ods脚本在01:00执行的话,就会漏数据) 3、按event数量滚动:通常设为0,禁用
拦截器
- ETL拦截器:用于轻度清洗,例如:过滤json格式不完整的数据
- 时间拦截器:提取日志的时间,用于日期分区,避免零点漂移的问题
内存优化
- 修改
flume-env.sh 把内存调到4~6G(假设日志服务器16G) - 促销节日来之前,增加机器(内存)
|