Apache Flume事务

Apache Flume 中的事务处理是指 Flume Agent 在处理事件流时的一种机制,用于确保数据的可靠传输和处理。
在这里插入图片描述

1. 事务概述

  • Flume 中的事务是指一组事件的传输和处理,这些事件在传输过程中要么全部成功完成,要么全部失败,不存在部分成功部分失败的情况。
  • 事务通常由 Source 产生,经过 Channel 存储,最终由 Sink 消费。事务性机制确保了事件从 Source 到 Sink 的可靠传输。

2. 事务处理工作流程

在这里插入图片描述

数据输入端(Source):

  • 接收事件(Receiving Events):Source 接收到批数据作为事件输入。
  • Transaction(事务):在处理事件时,Source 会启动一个事务。
  • doPut:将批数据先写入临时缓冲区 putList。
  • doCommit:检查 channel 内存队列是否有足够的空间来合并数据。
  • doRollback:如果 channel 内存队列空间不足,则回滚数据。
  • 回滚过程
    • 如果在写入数据到临时缓冲区 putList 时发生异常,Flume 会进行回滚操作。
    • 回滚操作包括将未成功写入的数据从临时缓冲区移除,并将其放回到输入队列中,以确保不会丢失任何数据。
    • 这样做可以确保在下次事务处理时重新尝试写入失败的数据

数据传输端(Channel):

  • Event1, Event2:事件被传输到 Channel 中,即一个事件队列。
  • doTake:将数据取到临时缓冲区 takeList,并将数据发送到下游的 Sink(如 HDFS)。
  • batch data:数据在 Channel 中进行批量处理
  • doRollback:如果发送过程中出现异常,将临时缓冲区 takeList 中的数据归还给 Channel 内存队列。
  • 回滚过程
    • 如果在将数据从 Channel 中取出进行处理时出现异常,Flume 会进行回滚操作。
    • 回滚操作包括将未成功处理的数据重新放回到 Channel 内存队列中,确保不会丢失数据。
    • 这样做可以确保在下次事务处理时重新尝试处理失败的数据

数据输出端(Sink):

  • Transaction(事务):在处理事件时,Sink 会启动一个事务。
  • 推送事件(Pushing Events):Sink 将事件推送到下游系统(例如存储系统)。
  • 拉取事件(Pulling Events):从 Channel 中拉取事件进行处理。
  • doCommit:如果所有数据都发送成功,则清除临时缓冲区 takeList。
  • doRollback:如果发送过程中出现异常,将临时缓冲区 takeList 中的数据归还给 Channel 内存队列。
  • 回滚过程
    • 如果在将数据推送到下游系统时发生异常,Flume 会进行回滚操作。
    • 回滚操作包括取消已发送但未被下游系统接收的数据,将这些数据放回到 Channel 中,确保数据不会丢失
    • 这样做可以确保在下次事务处理时重新尝试发送失败的数据。

回滚操作确保了在数据传输过程中出现异常时的数据一致性和可靠性。数据在回滚后会被重新放回到适当的位置,以便在下次处理时重新尝试。这种机制确保了数据不会因传输过程中的故障而丢失或不一致。

3. 事务性保证

  • 至少一次语义(At Least Once Semantics)Flume 保证每个事件至少会被传输和处理一次。即使在 Sink 失败时,事件仍然会留在 Channel 中等待后续的处理。
  • 精确一次语义(Exactly Once Semantics)对于某些特定的 Sink,Flume 可以提供精确一次语义,确保事件只会被处理一次,不会重复。这通常需要 Sink 和 Channel 的支持。

4. 事务配置

  • 在 Flume 的配置中,可以通过设置参数来控制事务的行为,如事务的最大大小、事务的超时时间、事务的持久性等。

5. 事务的应用场景

  • Flume 的事务性机制适用于需要确保数据传输的可靠性和一致性的场景,例如日志收集、数据备份等。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/617356.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Scratch四级:第07讲 编程数学02

第07讲 编程数学02 教练:老马的程序人生 微信:ProgrammingAssistant 博客:https://lsgogroup.blog.csdn.net/ 讲课目录 常考的数学问题项目制作:“求最大公约数”项目制作:“求最小公倍数”项目制作:“早餐…

EasyRecovery数据恢复软件2024最新免费无需激活版下载

EasyRecovery数据恢复软件是一款功能强大、操作简便的数据恢复工具,旨在帮助用户解决各种数据丢失问题。无论是由于误删除、格式化、磁盘损坏还是其他原因导致的数据丢失,EasyRecovery都能提供有效的恢复方案。以下是对EasyRecovery软件功能的详细介绍。…

免疫优化算法(Immune Optimization Algorithm)

注意:本文引用自专业人工智能社区Venus AI 更多AI知识请参考原站 ([www.aideeplearning.cn]) 算法背景 免疫算法是一种模拟生物免疫系统的智能优化算法。想象一下,当我们的身体遇到病毒或细菌侵袭时,免疫系统会启动…

Qt---事件

一、Qt中的事件 鼠标事件 鼠标进入事件enterEvent 鼠标离开事件leaveEvent 鼠标按下mousePressEvent ( QMouseEvent ev) 鼠标释放mouseReleaseEvent 鼠标移动mouseMoveEvent ev->x():坐标 ev->y():y坐标 ev->bu…

系统服务(22年国赛)—— Mail邮件服务部署

前言:原文在我的博客网站中,持续更新数通、系统方面的知识,欢迎来访! 系统服务(22年国赛)—— Mail邮件服务部署https://myweb.myskillstree.cn/119.html 目录 题目 AppSrv(已做好DNS配置&a…

Kotlin: ‘return‘ is not allowed here

报错:以下函数的内部函数return语句报错 Kotlin: return is not allowed here fun testReturn(summary: (String) -> String): String {var msg summary("summary收到参数")println("test内部调用参数:>结果是 :${msg…

Python多线程与互斥锁模拟抢购余票的示例

一、示例代码: from threading import Thread from threading import Lock import timen 100 # 共100张票def task():global nmutex.acquire() # 上锁temp ntime.sleep(0.1)n temp - 1print(购票成…

【计算机毕业设计】基于SSM++jsp的公司员工信息管理系统【源码+lw+部署文档+讲解】

目录 1 绪论 1.1 研究背景 1.2 目的和意义 1.3 论文结构安排 2 相关技术 2.1 SSM框架介绍 2.2 B/S结构介绍 2.3 Mysql数据库介绍 3 系统分析 3.1 系统可行性分析 3.1.1 技术可行性分析 3.1.2 经济可行性分析 3.1.3 运行可行性分析 3.2 系统性能分析 3.2.1 易用性指标 3.2.2 可…

大屏分辨率适配插件v-scale-screen

前言:大屏分辨率适配繁多,目前我认为最简单且问题最少的的方案就是使用v-scale-screen插件,无需考虑单位转换,position定位也正常使用。 1. 效果 填充满屏幕的效果 保持宽高比的效果 2. 插件原理 原理是通过css transfom 实现…

【计算机毕业设计】基于微信小程序的校园二手数码交易平台

随着 计算机技术的成熟,互联网的建立,如今,PC平台上有许多关于校园二手数码交易方面的应用程序,但由于使用时间和地点上的限制,用户在使用上存在着种种不方便,而开发一款基于微信小程序的校园二手数码交易平…

【计算机毕业设计】基于微信小程序的校园综合服务

随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱,校园综合服务被用户普遍使用,为方便用户能够可以随时…

深度学习之GAN网络

目录 关于GAN网络 关于生成模型和判别模型 GAN网路的特性和搭建步骤(以手写字体识别数据集为例) 搭建步骤 特性 GAN的目标函数(损失函数) 目标函数原理 torch.nn.BCELoss(实际应用的损失函数) 代码…

IO:线程的同步互斥

一、引入 例: 要求定义一个全局变量 char buf[] "1234567",创建两个线程,不考虑退出条件。 A线程循环打印buf字符串, B线程循环倒置buf字符串,即buf中本来存储1234567,倒置后buf中存储7654321.…

创新指南|设计冲刺 – 更快找到成功的创新方案

“ 设计冲刺(Design Sprint)” 一词与跑步无关,而且不局限于设计,它与引导团队加速创新密切相关。设计冲刺旨在帮助创新团队在很短的时间内解决一个极有价值的问题。本文将深入解析这一法宝:设计冲刺是什么&#xff1f…

Electron | 桌面应用的开发神器

初探 Electron 教程将介绍 Electron 打包应用的全过程,从本地测试,打包,到 GitHub 自动化。讲解 Electron Forge 和 Electron Builder 的用法,以及如何在 GitHub Actions 中自动化生成和发布应用。 官方资源 Electron Document…

GDPU unity游戏开发 角色控制器与射线检测

在你的生活中,你一直扮演着你的角色,别被谁控制了。 小试 1. 创建一个角色控制器,通过键盘控制角色控制器的移动,角色控制器与家具发生碰撞后,通过Debug语句打印出被碰撞物体的信息(搜索OnControllerColliderHit的使用…

windows系统安装Ubuntu子系统

安装前先在 控制面板 中打开 程序与功能选项 ,点击 启用或关闭Windows功能: 勾选 适用于 Linux的Windows子系统 和 虚拟机平台 、 Hyper-v 。 重启电脑后再 Microsoft Store Windows应用商店 中下载合适的Ubuntu版本。 运行Ubuntu程序,如出现…

picoCTF-Web Exploitation-Most Cookies

Description Alright, enough of using my own encryption. Flask session cookies should be plenty secure! server.py http://mercury.picoctf.net:53700/ Hints How secure is a flask cookie? 我们先下载server.py,分析逻辑 from flask import Flask, render…

2024年,Web开发新趋势!

随着我们迈入新的一年,现在正是审视2024年网页开发领域开始流行哪些趋势的绝佳时机。回顾2023年的一系列更新,以下是来年一些热门话题的概览。 自主托管有回归的趋势 近些年,自主托管一直是网页开发者和公司托管其应用程序的默认方式。开发…

绿盟之旅——一段安全实习结束

去年,因为着急找实习,拿着简历就开始海投,当时想的是有人让我去就谢天谢地了,第一个约我面试的就是绿盟,也很顺利的通过了面试,当时让我选择在上海还是北京,我选择的是上海,因为学校…