Flume理论知识:简介-使用场景-架构-执行流程-特性-事务-优点

目录

一、简介

二、使用场景

三、体系架构

四、执行流程

五、特性-复杂的流动性

六、事务

七、优点


一、简介

Flume 是一个 分布式的、可靠的、高可用的 海量日志聚合 系统。

支持 自定义 数据的 生产方 和 接收方,并可以对数据进行简单的处理。

初始版本统称为 Flume OG;重构版本 称为 Flume NG。

二、使用场景

对于线上数据,一般是 存储到磁盘(落地) 或者 通过Socket 传输给另一个系统

但在实际应用中,我们难以通过 线上应用 或 服务 去修改端口,从而实现向Kafka里写数据。

于是 需要 借助 Flume 来实现向Kafka里面写数据。

三、体系架构

(1)数据采集流程

(2)架构组件介绍:

Client 客户端: 负责生产数据;运行在一个独立的线程中。

Agent 代理:是Flume的核心组件,通过JVM运行。 包含组件:Source、Channel、Sink。

                      一台机器运行一个Agent,一个 Agent 可以包含多个 Source 和 Sink。

Source 源:是一个数据缓冲区。从 Client 收集数据 - 格式化 - 封装到 Event 。

                    使用内存存储数据,若超过阈值,则存入文件中。

Event 事件: 是一个数据单元,由  消息头 和 消息体 组成。

Interceptor 过滤器:位于 Source 和 Channel 之间。

Channel 管道:Event 中转站。负责 从 Source 接收数据,传递给 Sinks。

                         可以将 Event  暂存到内存中 或 持久化到磁盘 上,待Sink处理成功后删除。

Flow 流:Event 流动路径的抽象。

Sink 存储: 负责 从 Channel 拉取数据,发送给接收方。

四、执行流程

五、特性-复杂的流动性

(1)多个 Agent 横向连接。

(2)第一层 存在 多个 Agent,在第二层设置一个 Agent 做汇集操作。

(3)事件流 复用 流向不同的目的地。

六、事务

(1)推送事务流程

        先将 数据 写入 临时缓冲区,然后检查 Channel 容量 是否充足。

                若充足,则将数据推入管道。

                若不足,则将数据回滚到缓冲区。

(2)拉取事务流程

        先将 数据 拉去 到 临时缓冲区,然后检查 数据 是否发送成功。

                若成功,则删除缓冲区数据。

                若失败,则回滚缓冲区数据到管道。

(3)可靠

        只有当 Sink 接收到 数据完成落地的反馈信息 后, 才会将数据从 Channel 中删除。

(4)可恢复

        若将 Event 存储在 磁盘上,数据丢失后,可恢复。

七、优点

        当 收集数据的速度 大于 写出数据的速度 时,Flume可以对 数据生产者 和 数据存放者 进行自动调整,使数据得以平稳传输。

        Channel 基于事务,保证了数据的一致性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值