当前位置: 首页 > news >正文

Flume基础概念

目录

  • 作用
  • 组件构成
    • Client
    • Flow
    • Agent
    • Source
    • Sink
    • Event
  • 和Log4j的区别与定位
  • 事务传出流程
    • 输入到source
    • source端输入
    • Channel 接收
    • 输入到Sink
    • Sink输出


作用

Flume可以从各种来源(如日志文件、消息队列、网络数据、文件系统、数据库等)收集数据,并将其发送到指定的目标位置。
Flume通常用于从多个服务器、应用程序、网络设备等源头收集大量的日志数据,这些日志数据可能包括服务器日志、应用程序日志、安全事件日志等。

组件构成

Client

Client 是生产数据的实体,它运行在一个独立的线程中,负责生成需要被采集和传输的Event。Client不是Flume的一部分,而是与Flume交互的外部系统或应用程序。

Flow

Flow 描述了Event从源点(Source)到达目的点(通常是Sink,但也可能是另一个Agent的Source)的整个迁移过程。Flow是Flume数据管道的核心概念,它定义了数据的流动路径和处理逻辑。

Agent

Agent 是Flume的一个独立进程,它包含了Source、Channel和Sink三个核心组件。Agent负责在JVM上运行Flume,并且每台机器上通常只运行一个Agent。然而,一个Agent内部可以包含多个Source和Sink,以及它们之间的Channel连接。
在这里插入图片描述

Source

Source 是数据收集组件,它负责从Client或其他数据源接收数据,并将其封装成Event后传递给Channel。Source是Flume数据管道的起点,它定义了数据的来源和采集方式。
在这里插入图片描述

Sink

Sink 是数据输出组件,它从Channel中读取并移除Event,然后将这些Event传递到FlowPipeline中的下一个Agent(如果存在的话)或者最终的目的地(如HDFS、Kafka等)。Sink是Flume数据管道的终点,它定义了数据的去向和处理方式。
在这里插入图片描述

Event

Event 是Flume中的基本数据单元,由消息头和消息体组成。消息头包含了一些元数据(如时间戳、优先级等),而消息体则包含了实际的数据内容(如日志记录、Avro对象等)。

Channel
Channel 是一个临时存储,用于保存由Source传递过来的Event。Channel起到了缓冲和队列的作用,它允许Source和Sink以异步的方式工作,从而提高了整个数据管道的吞吐量和容错性。

和Log4j的区别与定位

在这里插入图片描述
Flume是一个日志收集系统,而Log4j只是一个java程序内部的日志框架

事务传出流程

输入到source

不解释,这个没什么需要特别说明的

source端输入

doPut: 将批数据先写入临时缓冲区putList
doCommit: 检查channel内存队列是否足够合并
doRollback: channel内存队列空间不足,回滚数据,直接将数据丢弃。

Channel 接收

Channel临时存储由Source传递过来的Event,起到了缓冲和队列的作用

输入到Sink

doTake: 将数据取到临时缓冲区takeList,并将数据发送到目标位置(比如:HDFS、Hive等)
doCommit: 如果数据全部发送成功,则清除临时缓冲区takeList
doRollback: 数据发送过程中如果出现异常,rollback将临时缓冲区takeList中的数据归还给channel内存队列。

Sink输出

不解释,没什么需要特别注明的

在这里插入图片描述


http://www.mrgr.cn/news/79272.html

相关文章:

  • Qt入门8——Qt文件
  • 初识树(二叉树,堆,并查集)
  • redis击穿,穿透,雪崩以及解决方案
  • Multimodal Few-Shot Learning with Frozen Language Models译文
  • 前端速通Blob、File、FileReader、ArrayBuffer、Base64...
  • Delphi-HTTP通讯及JSON解析
  • Yocto bitbake and codeSonar
  • 单链表---合并两个链表
  • Yagmail邮件发送库:如何用Python实现自动化邮件营销?
  • 【0356】Postgres内核 XLOG读取之 打开一个 logfile segment ( 3 - 1 )
  • MongoDB的简单使用
  • 深入浅出:SOME/IP-SD的工作原理与应用
  • axios笔记
  • HTML笔记()蜘蛛纸牌之卡牌拖拽
  • 基于STM32F4实现步进电机闭环控制实现(无PID)
  • python 装饰器学习与实践
  • javaScriptDOM获取
  • 源码分析之Openlayers图层篇概览
  • OpenBayes贝式计算创始人受邀参加第九届中国开源年会,分享 AI4S 前沿洞察
  • Elasticsearch 入门