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.mzph.cn/news/888838.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Unity 设计模式-观察者模式(Observer Pattern)详解

观察者模式 观察者模式(Observer Pattern)是一种行为型设计模式,它定义了对象之间的一对多依赖关系。当一个对象的状态发生变化时,它的所有依赖者(观察者)都会收到通知并自动更新。这种模式用于事件处理系…

论文:IoU Loss for 2D/3D Object Detection

摘要:在2D/3D目标检测任务中,IoU (Intersection-over- Union)作为一种评价指标,被广泛用于评价不同探测器在测试阶段的性能。然而,在训练阶段,通常采用常见的距离损失(如L1或L2)作为损失函数,以最小化预测值…

vue.js学习(day 20)

综合案例:购物车 数据渲染 构建cart购物车模块 准备后端接口服务环境 请求数据存入vuex cart.js // 新建购物车模块 import axios from axios export default {namespaced: true,state () {return {// 购物车数据 [{},{}]list: []}},mutations: {updateList (…

RAG系统分类、评估方法与未来方向

分享一篇RAG综述:Retrieval-Augmented Generation for Large Language Models: A Survey,主要想了解一下RAG的评估方法,分享给大家。 文章目录 一、RAG分类二、评估方法三、未来方向 一、RAG分类 RAG分类:Navie RAG、Advanced RA…

Ant Design Vue v4版本如何解决1px没有被postcss-px2rem转成rem的问题

背景说明 如果你的 Ant Design Vue 项目有要做适配的需求,那首先要选择一种适配方案。笔者选择的是用 postcss-px2rem 进行适配。笔者在配置了 postcss-px2rem的相关配置后,发现 postcss-px2rem 没有对 Ant Design Vue 进行适配。在网上看了一些文章之后…

美国大选后,用HMM模型做特斯拉股价波动解析

作者:老余捞鱼 原创不易,转载请标明出处及原作者。 写在前面的话:本文主要探讨如何利用高斯隐马尔可夫模型(HMM)预测股票价格,我们将分步进行说明:包括数据准备、特征选择、训练 HMM 模型、最后…

解决Conda虚拟环境中pip下载包总是到base环境的问题

conda本地创建的虚拟环境使用pip安装一些包总是安装到base环境中,导致无法正确进行环境隔离,下面是一些解决办法 方法一、使用python -m pip安装 1.1、验证虚拟环境的pip版本是哪个版本,如下所示,本人的demo虚拟环境直接使用pip…

VSCode(四)CMake调试

1. 工具准备 1.1 C环境插件 1.2 CMake插件 2. Cmake工程 2.1 创建项目文件夹 ex:CMAKE_TEST 2.2 创建CMake工程 (shift ctl P), 选择"CMAKE: Quick Start": 2.3 填写project name: (ex: test_cmake) 2.4 选择”Executable“ 项目文件内会自动…

qt-everywher交叉编译e-src-5.15.2

简化配置的方式: 你完全可以通过直接配置 安装目录、编译链 和 目标架构 来完成交叉编译,而不需要修改 mkspecs 配置。以下是如何通过简化配置来进行交叉编译 Qt 的步骤。 准备交叉编译工具链 首先,确保你已经安装了交叉编译工具链&#xff…

kafka-clients之ConsumerConfig

Kafka ConsumerConfig 中的配置项用于定义消费者的行为&#xff0c;如消费方式、偏移管理、组协调等。以下是ConsumerConfig中的关键配置项及其详细说明&#xff1a; 1. bootstrap.servers 类型&#xff1a;List<String>说明&#xff1a;Kafka集群的地址列表&#xff0…

EasyExcel导出列表

通过easyexcel导出列表数据 根据列表内容自适应宽高。 文件名冲突&#xff0c;修改文件名递增设置。 依赖 <dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>${easyexcel.version}</version&…

ubuntu下的chattts 学习4:Advanced Usage

源码 import ChatTTS import torch import torchaudiochat ChatTTS.Chat() chat.load(compileFalse) # Set to True for better performance ################################### # Sample a speaker from Gaussian.rand_spk chat.sample_random_speaker() print(rand_spk)…

从 HTML 到 CSS:开启网页样式之旅(七)—— CSS浮动

从 HTML 到 CSS&#xff1a;开启网页样式之旅&#xff08;七&#xff09;—— CSS浮动 前言一、浮动的简介1.没有浮动的代码和效果2.加入浮动的代码和效果 二、元素浮动后的特点1. 脱离文档流2.宽高特性&#xff1a;3.共用一行&#xff1a;4.margin 特性&#xff1a;5.区别于行…

微信小程序实现图片拖拽调换位置效果 -- 开箱即用

在编写类似发布朋友圈功能的功能时&#xff0c;需要实现图片的拖拽排序&#xff0c;删除图片等功能。 一、效果展示 **博主的小程序首页也采用了该示例代码&#xff0c;可以在威信中搜索&#xff1a;我的百宝工具箱 二、示例代码 1.1、在自己的小程序中创建组件 1.2、组件…

通过 FRP 实现 P2P 通信:控制端与被控制端配置指南

本文介绍了如何通过 FRP 实现 P2P 通信。FRP&#xff08;Fast Reverse Proxy&#xff09;是一款高效的内网穿透工具&#xff0c;能够帮助用户突破 NAT 和防火墙的限制&#xff0c;将内网服务暴露到公网。通过 P2P 通信方式&#xff0c;FRP 提供了更加高效、低延迟的网络传输方式…

MySQL Explain 指南

MySQL Explain 指南 idselect_typetablepartitionstypepossible_keyskeykeylenrefrowsfilteredExtra 使用 explain 执行 DML 语句时&#xff0c;数据不会发生变化。explain 的结果可能包含多行数据&#xff0c;每行对应一个表。若涉及 union 操作&#xff0c;MySQL 会创建临时表…

如何给 JavaScript 函数添加参数校验?

在 JavaScript 中&#xff0c;对函数参数进行校验是确保代码健壮性和防止错误的重要手段。参数校验不仅能提高代码的可读性&#xff0c;还能帮助捕获潜在的错误。下面&#xff0c;我们将结合实际项目代码示例&#xff0c;讲解如何给 JavaScript 函数添加参数校验。 常见的参数…

php7.4安装pg扩展-contos7

今天接到一个需求&#xff0c;就是需要用thinkphp6链接pg(postgresql)数据库。废话不多说&#xff0c;直接上操作步骤 一、安装依赖 yum install -y sqlite-devel libxml2 libxml2-devel openssl openssl-devel bzip2 bzip2-devel libcurl libcurl-devel libjpeg libjpeg-dev…

CentOS7.X 安装RustDesk自建服务器实现远程桌面控制

参照文章CentOS安装RustDesk自建服务器中间总有几个位置出错&#xff0c;经实践做个记录防止遗忘 一 环境&工具准备 1.1 阿里云轻量服务器、Centos7系统、目前最高1.1.11版本rustdesk-server-linux-amd64.zip 1.2 阿里云轻量服务器–安全组–开放端口&#xff1a;TCP(21…

TCP Analysis Flags 之 TCP Spurious Retransmission

前言 默认情况下&#xff0c;Wireshark 的 TCP 解析器会跟踪每个 TCP 会话的状态&#xff0c;并在检测到问题或潜在问题时提供额外的信息。在第一次打开捕获文件时&#xff0c;会对每个 TCP 数据包进行一次分析&#xff0c;数据包按照它们在数据包列表中出现的顺序进行处理。可…