Flume组成,Put事务,Take事务,拦截器,选择器和监控器

Flume组成,Put事务,Take事务,拦截器,选择器和监控器,第1张

Flume组成,Put事务,Take事务,拦截器,选择器和监控器 1 Flume组成,Put事务,Take事务 1.1 Flume组成

一、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 intercept(List events) 处理多个Event,在这个方法中调用Event intercept(Event event)

·        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会再次发送数据,此时就可能会导致数据的重复。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5681317.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存