一、taildir source
(1)特性:
支持断点续传、多目录
(2)是由哪个flume版本产生的?
Apache1.7、CDH1.6
(3)没有断点续传功能时怎么做的?
使用自定义
(4)taildir挂了怎么办?
不会丢数:断点续传,但是会造成重复数据:
(5)怎么处理重复数据?
①不处理
生产环境通常不处理,因为会影响传输效率
②处理:
·自身:在taildirsource里面增加自定义事务
·找兄弟:下一级处理(hive dwd sparkstreaming flink布隆)、去重手段(groupby、开窗取窗口第一条、redis)
(6)taildir source 是否支持递归遍历文件夹读取文件?
不支持。 可以自定义,递归遍历文件夹 + 读取文件
二、file channel /memory channel
(1)file channel
·特性:数据存储于磁盘
·优势:可靠性高;
·劣势:传输速度低
·默认容量:一百万event
注意:FileChannel可以通过配置dataDirs指向多个路径,每个路径对应不同的硬盘,增大Flume吞吐量。
(2)memory channel
·特性:数据存储于内存
·优势:传输速度快;
·劣势:可靠性差
·默认容量:100个event
三、HDFS sink
(1)时间(1小时-2小时)or 大小128m、event个数(0禁止)
· 具体参数:hdfs.rollInterval=3600,hdfs.rollSize=134217728,hdfs.rollCount =0
1.2 事务Source到Channel是Put事务
Channel到Sink是Take事务
2 Flume拦截器 2.1拦截器注意事项项目中自定义了:ETL拦截器。
采用两个拦截器的优缺点:
·优点,模块化开发和可移植性;
·缺点,性能会低一些
2.2自定义拦截器步骤(1)实现 Interceptor
(2)重写四个方法
· initialize 初始化方法
· public Event intercept(Event event) 处理单个Event
· public List
· close 方法
· 静态内部类,实现Interceptor.Builder
(3)拦截器可以不用吗?
·可以不用;需要在下一级hive的dwd层和SparkSteaming里面处理
·优势:只处理一次,轻度处理;
·劣势:影响性能,不适合做实时推荐这种对实时要求比较高的场景。
4 Flume监控器1)采用Ganglia监控器,监控到Flume尝试提交的次数远远大于最终成功的次数
说明Flume运行比较差。通常是因为内存不充足导致,所有提高内存是比较好的办法。
2)解决办法?
(1)自身:增加内存flume-env.sh 4-6g
(2)找朋友:增加服务器台数
5 Flume采集数据会丢失吗?根据Flume的架构原理,Flume是不可能丢失数据的,其内部有完善的事务机制
·Source到Channel是事务性的
·Channel到Sink是事务性的
因此这两个环节不会出现数据的丢失。
唯一可能丢失数据的情况是Channel采用memoryChannel,agent宕机导致数据丢失,或者Channel存储数据已满,导致Source不再写入,未写入的数据丢失。
Flume不会丢失数据,但是有可能造成数据的重复,例如数据已经成功由Sink发出,但是没有接收到响应,Sink会再次发送数据,此时就可能会导致数据的重复。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)