大数据流批一体

news2024/12/24 0:14:23

流批一体的内涵

  流批一体中的“流批”是指流处理与批处理,是两种不同的数据处理方式,而不是对数据种类的划分。具体来说,数据可以按产生的时间划分为历史数据与实时数据,亦可按数据的明细程度分为流水数据与切片数据;数据处理方式按窗口大小可分为流式处理与批式处理,亦可按处理时延分为实时处理与离线处理。

流批一体包括两方面内涵:

1、计算一体:同一套计算逻辑可以同时应用于流处理与批处理两种模式,且在最终结果上一致。

2、存储一体:流处理与批处理过程中全程数据存储在同一介质,即不管采用何种处理模式,数据的流转及存储都在同一介质中完成。

流批一体式数仓

  本小节将揭示流批一体的必要性,引出流批一体数仓概念以及实现流批一体化的手段。 先从经典Lambda架构谈起,Lambda架构同时支持实时流计算与离线批处理,该架构有两条数据通道,一条是实时的,通常采用消息系统结合实时流处理系统实现指标的实时计算,比如采用kafka&Flink的开源组合,kafka负责存储流水数据及处理过程中产生的中间结果,Flink消费数据实时计算指标;另一条通道是非实时的,数据定时同步到仓库,再通过批处理方式计算数仓分层数据模型。Lambda架构既支持流式数仓又能满足离线数仓的计算要求,但存在以下缺点:

1、同一数据两份存储。一份用于实时流计算,一份用于离线批处理,不仅耗费资源,还难以保证数据一致性;

2、同一计算逻辑两套代码。面对指标的实时计算,Lambda架构需要分别以流处理与批处理方式各实现一次,其中流式逻辑满足实时性要求,而最终则以批处理结果为准。

3、需要集成多种组件支持不同类型的应用。比如集成elasticsearch支持即席查询,postgresql支持复杂统计分析等,导致整体架构与技术栈更加复杂,学习及维护成本高。

  Lambda架构的出现是由于受到了存储系统与计算框架的限制,一方面没有一个存储系统既能支持数据实时读写又能有效进行高吞吐、低延时的批处理,这就导致数据需要写入实时存储系统以支持流处理系统实时计算,进而适应大屏展示等应用,同时还要持久化到类似HIVE、postgresql等支持即席查询、统计分析的存储系统中;另一方面,计算框架存在处理数据时无法保证exactly-once、乱序等问题,计算结果会有偏差,仍需要用批处理结果校正。 

 

图1 Lambda与Lambda plus

  随着Flink引擎日趋完善[8],尤其在2020年发布Flink-1.12.0之后,逐渐出现了能切实解决上述问题的流批一体架构(Lambda plus,图1下半部分),采用该架构的数仓可称流批一体式数仓,即把Lambda架构的两条数据通道合并为一条,数据统一存储到一种介质中,且同一数据只需要存储一遍。流批一体式数仓主要体现在两方面:

1、数据累积(处理与存储)过程是流式的。
随着流水数据的持续处理,比如成交明细不断到来,数据经过处理后进入数仓的第一层,这层的变动实时传导至下一层,导致下层数据根据处理逻辑随之变化,这种变动逐层传递下去,形成各层数据的实时更新,就像山顶的
水源顺着搭建的管道不断向下流淌,并在流淌过程进行处理。

2、数据累积后,支持以批处理方式进行即席查询、统计分析等传统数据仓库支持的OLAP操作。

  从实现上看,Lambda plus架构利用Flink流表的相互转化[6]实现了同一计算逻辑只需一套代码即可在流处理与批处理两种模式下得到一致结果,而且通过Flink cdc、状态计算等特性实现了历史数据+增量流水的连续处理[7],比如系统启动时利用Flink cdc先装载历史数据,再通过监听binlog将数据变动流水接入Flink;或者利用Flink state&checkpoint特性从指定checkpoint恢复,以便在流水上接续计算,这样即可实现基于历史数据增量计算的目的。

总结

1、目前基于Flink的流批一体架构主要还是体现在计算引擎上的一体化,即流处理与批处理共用一套开发范式,一套代码[1],而在存储的一体化上推出的Table store[5],虽已经可以小规模使用,但功能仍需健全,距离大规模企业级生产环境尚需一些时日。

2、具有分布式计算、窗口计算、状态计算、流批一体计算等特性的Flink正逐渐成为实时流计算应用的主要引擎。

3、流批一体式数仓是未来大数据架构发展趋势之一,但并不会完全替代Lambda架构。

 

 

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

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

相关文章

VS2022环境下C++ DLL动态链接库的编写和调用

一、编写DLL动态链接库 1、新建动态链接库项目 2、新建类 3、宏定义 #ifdef DLL_API # define DLL_API _declspec(dllexport) # else # define DLL_API _declspec(dllimport) #endif 4、使用宏定义修饰类 /*h*/ #pragma once#ifdef DLL_API # define DLL_API _declspec(dl…

ad2019--LED灯按键类创建元件库

摘自凡亿教育 一、LED灯按键类创建元件库 1.绘制LED灯的原理图库 鼠标右击箭头所指的,然后选择倒数第三个,多边形 在画的时候可以按住,shift空格,来调整角度。 但是,一般的LED灯都是蓝色的,我们可以把它…

用MybatisPlus代码生成器生成代码

作者简介 作者名:编程界明世隐 简介:CSDN博客专家,从事软件开发多年,精通Java、JavaScript,博主也是从零开始一步步把学习成长、深知学习和积累的重要性,喜欢跟广大ADC一起打野升级,欢迎您关注&…

用帝国主义竞争算法(ICA)求解旅行商问题(TSP)(Matlab代码实现)

🍒🍒🍒欢迎关注🌈🌈🌈 📝个人主页:我爱Matlab 👍点赞➕评论➕收藏 养成习惯(一键三连)🌻🌻🌻 🍌希…

两大产品上线“粤复用”,赋能大数据智能行业发展

为深入贯彻落实国家《关于加强数字政府建设的指导意见》关于数字政府应用“一地创新、各地复用”的部署要求,促进优秀应用成果快速、可靠、低成本地复用推广,正式上线广东数字政府应用超市——“粤复用”。据悉,“粤复用”应用超市汇聚各级政…

spring-aop源码分析(2)_AnnotationAwareAspectJAutoProxyCreator后置处理器

本文将通过阅读AnnotationAwareAspectJAutoProxyCreator后置处理器的源码,分析其解析AOP通知、匹配切入点和创建AOP代理的流程。 入口 AnnotationAwareAspectJAutoProxyCreator是一个BeanPostProcessor实现,他在容器进行initializeBean的时候被调用&am…

[附源码]计算机毕业设计汽车美容店管理系统Springboot程序

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

TDH社区版上新宽表数据库Hyperbase,轻松实现海量数据的毫秒级精确检索

日前,为了降低用户接触使用大数据技术的门槛以及成本,星环科技推出TDH社区版(Transwarp Data Hub Community Edition)来帮助企业用户、高校师生、科研机构以及其他专业开发人更简单、更便捷的进行大数据分析。为了满足更多用户在存…

IT统一运维软件发展趋势浅析

在企业IT数字化转型趋势下,为支撑业务敏捷、稳定、创新发展,IT运维的重要性已日益凸显。伴随着IT运维管理目标、管理范围、管理对象及管理深度的转变,IT运维平台建设呈现管理一体化、规模扩大化、业务可视化、运维自动化、运维智能化的关键趋…

成功实施企业内容管理(ECM)的 5 个技巧

成功实施企业内容管理(ECM)的 5 个技巧 俗话说,唯一不变的就是变化。在您不懈努力发展业务的过程中,您需要改变业务流程、不断升级产品、使用技术实现自动化、让您的员工和客户满意。 改变管理方式是实施企业内容管理的一个关键考…

Vue Element UI 中 el-table 树形数据 tree-props 多层级使用避坑

实现效果: element官网提示设置tree-props为{children: ‘children’,hasChildren: ‘hasChildren’},data数据需要设置children和hasChildren属性,row-key也绑定了数据的唯一值变量id,但是树形结构的第三级就是出不来 如图 可以…

02、交换机

目录 1.、Exchange(交换机)的作用 2、Exchange(交换机)的类型 2.1.直连交换机:Direct Exchange 2.2.主题交换机:Topic Exchange 2.3.扇形交换机:Fanout Exchange 2.4.首部交换机:Headers exchange 2.5.默认交换机 2.6.Dead…

MySQL基础三问:底层逻辑、正在执行、日志观察

背景及目录: 经常面试会遇到且实际工作中也会应用到的三个场景: 一.mysql查询时的底层原理是什么? 二.如何查看正在执行的mysql语句? 三.如何观察mysql运行过程中的日志信息? - - - - - - - - - -分割线- - - - -…

【html5期末大作业】基于HTML+CSS+JavaScript管理系统页面模板

🎉精彩专栏推荐 💭文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 💂 作者主页: 【主页——🚀获取更多优质源码】 🎓 web前端期末大作业: 【📚毕设项目精品实战案例 (10…

pyinstaller 操作以及常见问题解决

最近有需要用pyinstaller打包 直接上命令: pyinstaller -F xxx.py -w -i img.ico-F 指定需要打包的主文件,-w是让打包后的exe,运行不再出现cmd框,一般打包都会加上,-i 是指定打包后的图标ico文件 在线生成ico链接&am…

(14)点云数据处理学习——RGBD 里程计

1、主要参考 (1)官网 RGBD Odometry — Open3D 0.16.0 documentation 2、原理和实现 2.1 RGBD Odometry主要作用 RGBD里程计在两个连续的RGBD图像对之间查找相机运动。输入是RGBDImage的两个实例。输出是刚体变换形式的运动。Open3D实现了[Steinbruc…

Transformer——台大李宏毅详讲Transformer

文章目录李宏毅老师讲TransformerEncoderDecoderDecoder整体逻辑non-autoregressiveDecoder中的Cross Attention训练Seq2seq的一些Tips老师讲的超级棒,激动哭了: 视频链接:台大李宏毅21年机器学习课程 self-attention和transformer 李宏毅老师…

Mac版Word设置从第K页开始显示页码

tags: Word Tips 写在前面 最近有同学问我怎么在word文档中从第四页开始设置页码, 也就是首页以及第二页第三页的说明页都不编页码, 从第四页开始页码为1, 然后往后编号这种. 一开始我以为直接在页码设置处就有这个选项的(毕竟写东西几乎不用word, 也不熟悉), 后来发现还是t…

从Unity Robotics Hub入门Unity-ROS

0.简介 对于Unity而言,其拥有非常完备的物理特性,这对于机器人仿真是非常有用的,但是实际上Unity和ROS之间的通信一直是摆在两者之间的难题,正好看到宇宙爆肝锦标赛冠军写的这个系列,所以个人想参照为数不多的资料来进…

2022年创新药行业研究报告

第一章 行业概况 创新药,也称为原研药,是一个相对于仿制药的概念,指的是从机理开始源头研发,具有自主知识产权,具备完整充分的安全性有效性数据作为上市依据,首次获准上市的药物。新药上市要经历化合物的发…