Flume总结

他是一个高可用的,高可靠的,分布式的海量日志采集,聚合和传输的系统。flume是流式架构,flume最主要的作用就是实时读取服务器本地磁盘的数据,将数据写入到HDFS中去。他的一个组成架构Web端=》source=》channel=》sink=》HDFS

taildir source

1、间断性的传输文件,可以监控一个目录下多个目录文件

2、flume是在Apache1.7,CDH1.6产生的

3、没有断点续传功能怎么实现,可以通过自定义的方式

4、taildir挂了怎么办,重启但是会导致数据重复

5、怎么处理重复数据,一般不处理,影响传输效率,自身添加自定义事务,或者下一级处理hive去重,sparkstreaming flink布隆

6、他不支持递归遍历文件夹读取文件,但是可以自定义递归遍历文件夹+读取文件

file channel/memory channel/kafkachannel

位于Source和sink之间的缓冲区

1、file channel

数据存储在磁盘,可靠性高,但是传输速率低

FileChannel可以通过配置dataDirs执行多个路径,每个路径对应不同的硬盘,增大Flume的吞吐量

2、memory Channel

数据存储在内存中,传输速度快,但是可靠性较差

3、Kafka channel

数据存储在Kafka,基于磁盘上的,可靠性较高

传输速度:kafka channel》memory channel+kafka channel省去了sink部分

4、生产环境中如何选择

下一级如果是kafka的话,优先选择kafka channel

如果是金融,对钱要求准确的话选择filechannel

如果是普通日志,可以选择memorychannel

HDFS sink

不断轮询channel中的事件且批量地的移除

事务

Source到Channel是Put事务

Channel到Sink是Take事务

Flume拦截器

用户Source读取events发送sink在event header中加入一些有用的信息,或对events的简单内容进行过滤完成的初步的数据清洗

1、注意事项:自定义:ETL拦截器

采用两个拦截器的优缺点,模块化开发和可移植新,性能降低

2、自定义拦截器步骤

实现Interceptor

重写四个方法

initialize初始化=>处理当个event=>处理多个event,调用event intercept

close方法

3、静态内部类,实现Interceptor.Builder

可以不使用拦截器,在下一级hive或者sparkstreaming处理

不适合做实时推荐这个要求比较高的场景

Flume Channel选择器

他可以让不同项目日志通过不同的channel到不同的sink中去

复制选择器(发往所有通道)

多路复用选择器(选择性发往自己的通道)

Flume 监控器

采用Ganglia监控器,监控flume尝试提交的次数远远大于最终成功的次数(存在大量尝试),说明flume运行比较差

解决方法,自身增加内存,-Xmx和—Xms设置一致,防止内存抖动带来的性能影响,如果不一致会导致频繁fullgc回收内存

增加服务器台数

Flume采集数据会丢失么

Filechannel不会丢失,Channel存储在FIle中,数据传输本身存在事务memorychannel有可能会丢

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值