Flume 事务总结 put事务 take事务 理解

编程入门 行业动态 更新时间:2024-10-12 20:23:27

Flume  <a href=https://www.elefans.com/category/jswz/34/1770772.html style=事务总结 put事务 take事务 理解"/>

Flume 事务总结 put事务 take事务 理解

我们都知道Flume是一个日志文件传输的工具,传输过程会经过三大步骤:

1.通过source 把数据从数据源(网络端口,本地磁盘等)读出出来
2.通过source把数据传入到channel里面
3.再把数据从channel传输到sink里面,sink把数据传给目的地(hdfs).

当然传输数据的过程并不是只有这三个步骤,flume 竟然是传输数据的,所以得考虑到数据传输时数据的完整性 . Flume在传输数据的时候很有可能因为传输速率的不一致导致channel满了,从而导致数据丢失。

channel是被动的,source这边是主动把数据put给channel,sink这边是主动把数据从channel拉取take,所以channel是被动操作的。

一般channel使用MemoryChannel,这是内存的,断电会丢失数据,也可以使用filechannel(磁盘),filechannel速度慢,但有提供日志级别的数据恢复功能,不过不断电MemoryChannel是不会丢数据的,所以一般选用memorychannel也OK。

source把数据传给channel 时不是直接传给channel,中间还有put事务,当然从channel到sink也不是直接传过去的,中间还有take事务

put事务步骤:
doput :先将批数据写入临时缓冲区putlist里面
docommit:去检查channel里面有没有空位置,如果有就传入数据,如果没有那么dorollback就把数据回滚到putlist里面

take事务步骤:
dotake:将数据读取到临时缓冲区takelist,并将数据传到hdfs上。
docommit :去判断数据发送是否成功,若成功那么清除临时缓冲区takelist
若不成功(比如hdfs系统服务器崩溃等)那么dorollback将数据回滚到channel里面

数据在传输到下个节点时(一般是批量数据),假设接收节点出现异常,比方网络异常。则回滚这一批数据,因此有可能导致数据重发(是重发不是重复)。
同个节点内,Source写入数据到Channel,数据在一个批次内的数据出现异常,则不写入到Channel,已接收到的部分数据直接抛弃,靠上一个节点重发数据。

通过这两个事务,Flume提高了数据传输的完整性,准确性。

Flume监控

发现了一个非常好的文章,可以去了解一下Flume 监控的方式


Flume 监控方式:

更多推荐

Flume 事务总结 put事务 take事务 理解

本文发布于:2024-02-26 07:33:40,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1701752.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:事务   Flume   put

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!