0
点赞
收藏
分享

微信扫一扫

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

1kesou 2022-04-06 阅读 70

一、简介

 

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 基于事务,保证了数据的一致性。

举报

相关推荐

0 条评论