开发者社区> 问答> 正文

Flume组成架构是什么?

Flume组成架构是什么?

展开
收起
芯在这 2021-12-10 23:23:51 281 0
1 条回答
写回答
取消 提交回答
  • Agent

    Agent 是一个 JVM 进程,其由三部分组成 Source,Channel,Sink。

    Agent 以事件(event)的方式将数据从源头送往目的地。

    Source

    Source 是负责接受数据至 Agent,Flume 本身自带了非常多的 Source,让其能够处理各种来源和各种格式的日志数据,当然用户也可以自定义 Source 来满足使用需求。

    Sink

    Sink 负责将数据写入目的地,其不断的轮询 Channel 中是否有新的数据并批量的搬移,Sink 可以将数据直接写入文件存储系统,也可以将数据发往另一个 Flume Agent,在实际应用中 Flume 经常与 Kafka 进行对接,因此 Sink 也可以直接将数据发送给 Kafka。与 Source 相同 Flume 本身也提高了非常多的 Sink 以供用户向数据发往各种各样的目的地,当然用户也可以自定义 Sink 来满足使用需求。

    Channel

    Channel 处于 Source 与 Sink 之间,起到了缓冲的作用,由于 Channel 的存在可以允许 Sink 写入数据的速率与 Source 获取数据的速率不同。此外,Channel 是线程安全的,可以同时处理多个 Source 和 Sink 的读取与写入。但有一点需要注意,可以多个 Source 往一个 Channel 写,也可以一个Channel 发往多个 Sink (通过负载均衡或故障转移的方式),但是不能多个 Channel 发往一个 Sink。

    Flume 自带俩种 Channel,Memory Channel 和 File Channel

    Memory Channel 是内存中的队列,其效率较高,但是缺点是当发送程序死亡,机器宕机等情况时会导致数据的丢失。

    File Channel 将事件数据写入磁盘,因此无需担心数据丢失的风险,但是效率较 Memory 低。

    Event

    Flume 的传输单元,Flume 以 事件(Event)的形式将数据从源头送至目的地,Event 由 Header 和 Body 俩部分组成,Header 存放事件的头信息,其内部数据为 K-V 的键值对形式,Body 存放数据本体,其内部为字节(Byte)数组。

    2021-12-10 23:42:27
    赞同 展开评论 打赏
问答标签:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
MaxCompute Serverless 架构演进 立即下载
阿里云消息队列的 Serverless架构演进 立即下载
青团社云原生架构实践—亿级灵活用工平台的架构实践 立即下载