余老师带你学习大数据框架全栈第十二章Flume第七节简单案例之Flume进阶--Flume 事务

4.1Flume 事务

在这里插入图片描述

Flume是一个传输工具,在工作中要保证数据尽量不丢失,然而数据在传输过程中要经过source读数据——>再写给channel——>sink再从channel中取数据,在任一环节中都有可能会丢失数据。为保证数据不丢失,在过程中加入“事务”。
三个过程中间包含两个事务,Put事务流程和Take事务。

Put事务流程
•doPut:将批数据先写入临时缓冲区putList
•doCommit:检查channel内存队列是否足够合并。
•doRollback:channel内存队列空间不足,回滚数据
Take事务
•doTake:将数据取到临时缓冲区takeList,并将数据发送到HDFS
•doCommit:如果数据全部发送成功,则清除临时缓冲区takeList
•doRollback:数据发送过程中如果出现异常,rollback将临时缓冲区takeList中的数据channel内存队列。

数据输入端:source Flume流式处理:channel 数据输出端:sink

1.source 从外部读取数据(端口,本地文件:文件夹,单个文件,多个文件。批量上传,断点续传),将读取到的一条一条的数据封装成事件(event)。
2.准备:doPut将批数据先写入临时缓冲区putList。然后再执行doCommit方法。
如果HDFS速度慢,那么sink的写出速度也随之减慢,同时sink从channel中拉取数据的速度也会减慢,那么channel中就会发生内存不够的状况(或者发生其它状况),此时doCommit就会提交异常,所以就会做doRollback回滚工作。
3.因为channel处于被动,所以要自己拉取数据,所以叫take事务。
如果sink拉取数据失败,就要做相应的doRollback回滚动作,数据将回滚到channel中。

详细学习内容可观看Spark快速大数据处理扫一扫~~~或者引擎搜索Spark余海峰
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_45810046/article/details/113742104
今日推荐