Flume组件
1、source
interceptor 可形成拦截器链 模块化开发和可移植性 性能会低一点
自定义过ETL拦截器 区分类型拦截器
实现interceptor接口 重写四个方法 创建一个静态内部类
initialize
单event intercept
多event intercept 使用单event intercept
close方法
创建一个静态内部类 实现intercept.builder接口 返回一个自定义的拦截器对象
channel selector
replicating event发往全部的channel
multiplexing 可以选择event发往哪个channel
监视器
ganglia 监控flume的数据流量
Source | 优点 | 缺点 |
Taildir Source | 断点续传、可同时监控多目录,可自定义监控文件的匹配正则表达式 |
|
Exec Source | 可以实时搜集数据 | Flume不运行或者Shell命令出错的情况下,数据将会丢失。 |
Spooling Directory Source | 监控目录 | 不支持断点续传 |
kafka source | 消费kafuka时使用 |
|
2、channel
channel | 优点 | 缺点 |
memary channel | event保存在Java Heap中。如果允许数据小量丢失,速度快,推荐使用 | flume宕机后缓存队列中的数据会丢失, 有内存大小的限制 |
file channel | 使用物理磁盘作为缓存队列,速度慢,优化可以配置多目录提高并发度,提高吞吐量 | flume宕机后缓存队列中的数据不会丢失, 如果磁盘损坏,数据丢失 |
kafka channel | 与kafka对接时可以节省sink (take事务) |
|
3、sink
sink | 注意事项 |
hdfs sink | 小文件的处理 关于文件滚动的三个参数 时间间隔 10s 文件大小 128M 行数 0 禁止 |
kafka sink | 与kafka对接 |
4、事务 注意capacity 、transaction capacity和batch size三个的大小关系
put事务
take事务