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.rhkb.cn/news/487939.html

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

相关文章

分布式搜索引擎之elasticsearch基本使用2

分布式搜索引擎之elasticsearch基本使用2 在分布式搜索引擎之elasticsearch基本使用1中,我们已经导入了大量数据到elasticsearch中,实现了elasticsearch的数据存储功能。但elasticsearch最擅长的还是搜索和数据分析。 所以j接下来,我们研究下…

Spring IOCAOP

Spring介绍 个人博客原地址 Spring是一个IOC(DI)和AOP框架 Sprng的优良特性 非侵入式:基于Spring开发的应用中的对象可以不依赖于Spring的API 依赖注入:DI是控制反转(IOC)最经典的实现 面向切面编程&am…

如何高效的向AI大模型提问? - 提示工程Prompt Engineering

大模型的输入,决定了大模型的输出,所以一个符合要求的提问Prompt起到关键作用。 以下是关于提示工程Prompt Engineering主要方法的详细表格,包括每种方法的优点、缺点、应用场景以及具体示例: 主要方法优点缺点应用场景示例明确性…

Linux——linux系统移植

创建VSCode工程 1、将NXP官方的linux内核拷贝到Ubuntu 2、解压缩tar -vxjf linux-imx-rel_imx_4.1.15_2.1.0_ga.tar.bz2 NXP官方开发板Linux内核编译 1、将.vscode文件夹复制到NXP官网linux工程中,屏蔽一些不需要的文件 2、编译NXP官方EVK开发板对应的Linux系统…

【C语言】16. 内存函数

文章目录 一、 memcpy使⽤和模拟实现二、memmove使⽤和模拟实现三、memset函数的使⽤四、memcmp函数的使⽤ 一、 memcpy使⽤和模拟实现 void * memcpy ( void * destination, const void * source, size_t num );• 函数memcpy从source的位置开始向后复制num个字节的数据到des…

第六届地博会世界酒中国菜助力广州龙美地标美食公司推动地标发展

第六届知交会暨地博会:世界酒中国菜助力广州龙美地标美食公司推动地标产品创新发展 2024年12月9日至11日,第六届粤港澳大湾区知识产权交易博览会暨国际地理标志产品交易博览会在中新广州知识城盛大启幕。本届盛会吸引了全球众多知识产权领域的专业人士和…

docker安装victoriametrics(单机版)

docker安装victoriametrics 1、单机版安装2、victoriametrics增删改查2.1 、插入数据2.1.1 组装数据插入victoriametrics(java代码插入)2.1.2 Prometheus数据插入victoriametrics2.1.3 官网push到victoriametrics写法 2.2 、查询2.2.1 、Instant query(即时查询&…

【Linux】系统信息和状态命令

步骤 1:显示系统信息 命令: uname -a 1.打开终端。 2.输入命令并按回车键。 3.观察:输出将显示包括内核版本、主机名、硬件架构等在内的系统信息。 步骤 2:显示或设置系统的主机名 命令: hostname 1.打开终端。…

RabbitMq死信队列延迟交换机

架构图 配置 package com.example.demo.config;import org.springframework.amqp.core.*; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration;Configuration public class DeadLetterConfig {public String …

学生信息管理系统(简化版)数据库部分

使用Mysql,与navicat工具 下面是mysql创建的代码,可做必要修改 -- 创建学生学籍信息表 CREATE TABLE StudentEnrollment (-- 学号,作为主键student_id VARCHAR(8) NOT NULL,-- 学生姓名stu_name VARCHAR(8) NOT NULL,-- 学生性别gender VARC…

新手上路,学Go还是Python

对于新手来说,Go和Python都是很好的编程语言,它们各有特点,以下是详细的对比来帮助你决定先学哪一个: 一、语法和学习难度 Python 语法简洁易懂:Python以其简洁、优雅的语法而闻名,代码的可读性很高。例如…

信号处理:概念、应用、领域、方法

信号处理是一个广泛的领域,涉及对各种类型信号(如音频信号、图像信号、生物信号、通信信号等)的分析、操作和变换。信号处理的主要目标是获取有用信息、增强信号质量、消除噪声、提取特征以及实现数据 compression等。信号处理可以分为模拟信…

Socket编程-tcp

1. 前言 在tcp套接字编程这里,我们将完成两份代码,一份是基于tcp实现普通的对话,另一份加上业务,client输入要执行的命令,server将执行结果返回给client 2. tcp_echo_server 与udp类似,前两步&#xff1…

go语言的sdk项目搭建与git 操作标签tag并推送至远程仓库

在搭建 SDK 项目并结合 Git 操作标签(Tag)时,通常会涉及项目初始化、版本管理、Git 标签的创建与管理等内容。以下是一个完整的步骤指南,帮助您搭建 SDK 项目并学习如何使用 Git 标签。 ### 1. **搭建 SDK 项目** 首先&#xff…

Android13 USB 串口默认授权

一)场景需求 项目中使用到了can协议控制车机功能,can 直接转串口,用USB转串口工具 cn.wch.uartlib 来实现. can 板子通过usb 插入到机器上面,那就是usb 协议了。 遇到问题: 插入can 板的usb 到机器上后,直…

【数据库】E-R模型、函数依赖、范式

2. 东方货运公司数据库的样本数据如下。 表名称:卡车 车号 货运站编号 类型 总行程 购入日期 1001 501 1 59002.7 11/06/2000 1002 502 2 54523.8 11/08/2000 1003 501 2 32116.6 09/29/2001 1004 502 2 3256.9 …

保姆级教学 uniapp绘制二维码海报并保存至相册,真机正常展示图片二维码

一、获取二维码 uni.request({url: https://api.weixin.qq.com/wxa/getwxacode?access_token${getStorage("token")},responseType: "arraybuffer",method: "POST",data: {path: "/pages/index/index"},success(res) {// 转换为 Uint…

JAVA安全—SpringBoot框架MyBatis注入Thymeleaf模板注入

前言 之前我们讲了JAVA的一些组件安全,比如Log4j,fastjson。今天讲一下框架安全,就是这个也是比较常见的SpringBoot框架。 SpringBoot框架 Spring Boot是由Pivotal团队提供的一套开源框架,可以简化spring应用的创建及部署。它提…

【数据结构】动态规划-基础篇

针对动态规划问题,我总结了以下5步: 确定dp数组以及下标的含义; 递推公式; dp数组如何初始化; 遍历顺序; 打印dp数组(用来debug); 以上5步适用于任何动态规划问题&#x…

十一、容器化 vs 虚拟化-Docker 使用

文章目录 前言一、Docker Hello World二、Docker 容器使用三、Docker 镜像使用四、Docker 容器连接五、Docker 仓库管理六、Docker Dockerfile七、Docker Compose八、Docker Machine九、Swarm 集群管理 前言 Docker 使用‌ Docker 容器使用、镜像使用、容器连接、仓库管理、Do…