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事务