Flume总结汇总

1.Flume 相关总结
Flume最主要的作用是实时读取服务器本地磁盘的数据,将数据写入到HDFS.

1.1 Flume组成,Put事务,Take事务

1)taildir source
(1)断点续传、多目录
(2)Apache1.7、CDH1.6 版本才产生
(3)若没有断点续传功能,可以自定义Source去实现
(4)taildir 挂了由于断点续传不会丢数据,会出现重复数据
(5)如何处理重复数据
不处理:生产环境中通常不处理,因为会影响传输效率
处理:1、在taildirsource 里面增加自定义事务。2、找下一级处理(hive/spark sparkstreaming/flink)、group by 、开窗(窗口内部,只取一条数据)
(6)taildir source 是否支持遍历文件夹?
不支持。 自定义 递归遍历文件夹+读取文件
2)file channel/memory channel/kafka channel
(1)file channel
数据存储于磁盘,可靠性高,传输速度低
默认容量:100万event,
Filechannel可以通过配置dataDir指向多个路径,每个路径对应不同的磁盘,增大Flume吞吐量
(2)memory channel
数据存储于内存,优势,传输速率快:劣势:可靠性差
默认容量:100个event
(3)kafka channel
数据存储于Kafka,基于磁盘;
优势:可靠性高
传输速度快 kafka channel >> memory channel + kafka sink 原因是省去了sink阶段
(4)kafka channel 哪个版本产生的?
flume1.6 版本产生,但并没有火,有bug, flume 1.7开始火了
(5)生产环境如何选择
如果下一级是kafka,优先选择kafka channel
如果是金融、对钱要求准确的公司,选择file channel
普通日志,选择memory channel
3)HDFS sink 注意小文件
(1)时间(1-2小时)or 128m 、event个数(0禁止)
具体参数:hdfs:rollInterval=3600,hdfs.rollSize=134217728,hdfs.rollCount=0
4)事务
Source到Channel是Put事务
Channel到Sink是Take事务

1.2 Flume拦截器
1)自定义ETL拦截器:校验json完整性{} kv
优点:模块化开发和可移植性,缺点:性能低
2)自定义拦截器步骤
(1)实现Interceptor
(2) 重写四个方法
2.1 initialize 初始化
2.2 public Event intercept(Event event)处理单个Event
2.3 public List intercept(List events) 处理多个Event,这个方法调用Event intercept(Event enent)
2.4 close 方法
(3)静态内部类,实现Interceptor.Builder
3)拦截器可以不用么?
可以不用:需要在下一级hive的dwd层和sparkstreaming里面处理
优势:只处理一次,劣势:影响性能,不适合做对实时要求高的场景。

1.3 Flume Channel 选择器
Replicating Channel Selector(默认)和Multiplexing Channel Selector
Replicating Channel Selector:将source过来的events发往所有的channel,
Multiplexing Channel Selector:选择发往哪些Channel.

1.4监控器
1)采用Ganglia监控器,监控到flume尝试提交次数远大于成功次数,说明flume运行较差。
解决办法:1.自身:增加内存 flume-env.sh 4-6g
-Xmx 鱼-Xms最好设置成一样的,减少内存抖动带来的性能影响,如果设置不一致易导致频繁fullgc.
2.增加服务器台数
日志服务器配置:8-16g内存、磁盘8T.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值