数据湖技术之应用场景篇

        数据湖技术有较多的应用场景,本篇文章是针对一些典型的痛点场景做了一些介绍和说明。比如说在线数据抽取场景原有模式对线上库表产生较大压力,flink多流join维护的大状态导致的稳定性问题等等,具体场景如下图所示:

场景1:在线数据抽取

        业务一般会从线上mysql库表以离线方式抽取全量数据到hive表,供下游业务进行相关关联查询等处理,一般每天周期抽取数据后会放置到hive表的T+1分区上,整体流程如下图所示:

痛点总结:

  • 每天全量查询,需要消耗较多资源,业务mysql库压力较大,性能受到影响。
  • 业务抽取任务延迟太高,下游业务无法及时获取数据,无法按时产出业务数据。
  • 分库分表,维护的离线任务较多,维护成本高,调整代价大。
  • 各种因素影响,不够稳定,如果任务出现问题,整体重跑代价大,等待时间过长。

针对此场景的上述痛点问题,可以应用数据湖技术方案进行改造,改造后整体流程如下图所示:

可以看到结合数据湖方案可以准实时的进行入湖,下游进行抽取数据时基本没有太明显的性能瓶颈问题。整体优化可以总结为如下几点:

  • 链路更加稳定,不用去全量读取数据访问线上mysql库表,直接通过dds服务拉取binlog数据,减少线上库集群压力。
  • 效率提升,直接访问湖表,延迟较低,提升数据时效性。
  • 大大降低维护成本,只需要维护较少离线任务,调整代价小。
  • 业务扩展:一份存储多种用途,方便扩展到准实时场景。

场景2:部分列更新

        原有的flink多流实时join场景,如下图所示,一般的处理模式是针对多流的数据在一定的时间窗口内关联state进行join,最终产出结果输送到下游进行处理。本身存在一些痛点,多个指标数据进行关联,不同指标数据可能会出现时间差比较大的异常情况。维持大的状态不仅会给内存带来的一定的压力,同时 Checkpoint 和 Restore 的时间会变得更长,可能会导致任务背压。

针对于上述场景痛点问题,可以结合数据湖方案进行改造,具体改造后的整体流程如下图所示:

可以看到,应用数据湖hudi技术方案后,将原有的计算侧进行join改成了存储侧自动进行处理,通过hudi 的自定义的payload策略可以很方便的进行关联处理,效率高而且稳定。具体优化可以总结为如下几点:

  • 简化业务逻辑,链路更加稳定,减少业务开发与维护成本。
  • 效率更高,节省资源成本,不需要大状态等。
  • 数据准确性方面:配合dds服务(按照数据主键进行分区)可以保证数据的最终准确性。

三. 总结:

本篇文章主要介绍了一些数据湖技术应用的场景,针对于两个常见的痛点场景,做了改造前后的对比说明,可以很清晰的对比出来应用数据湖技术方案后的稳定性等方面的优势,所以随着数据湖技术的不断成熟与稳定,后续会在越来越多的应用场景中帮助到业务解决实际问题,同时在降本增效方面的作用也会越来越明显。

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

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

相关文章

车载电子电器架构 —— 多核处理器刷写策略

车载电子电器架构 —— 多核处理器刷写策略 我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 屏蔽力是信息过载时代一个人的特殊竞争力,任何消…

嵌入式Linux系统引导过程详解

大家好,今天给大家介绍嵌入式Linux系统引导过程详解,文章末尾附有分享大家一个资料包,差不多150多G。里面学习内容、面经、项目都比较新也比较全!可进群免费领取。 嵌入式Linux系统引导过程是系统启动的关键环节,它涉及…

代码随想录刷题笔记-Day10

1. 用栈实现队列 232.用栈实现队列https://leetcode.cn/problems/implement-queue-using-stacks/description/ 请你仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作(push、pop、peek、empty): 实现 MyQueue 类&#xf…

Java基础数据结构之反射

一.定义 Java的反射机制是在运行状态中的,对于任意一个类都能知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意方法及属性。既然能拿到,我们就可以修改部分类型信息。这种动态获取信息以及动态调用对象方法的功能…

Django笔记(七):JWT认证

首 前后端分离的项目更多使用JWT认证——Json Web Token。本文记录djangorestframework-simplejwt的使用方式。文档 安装 pip install djangorestframework-simplejwt 配置settings.py: INSTALLED_APPS [rest_framework_simplejwt, ]REST_FRAMEWORK {DEFAULT_AUTHENTICA…

系统架构设计师教程(十九)大数据架构设计理论与实践

大数据架构设计理论与实践 19.1 传统数据处理系统存在的问题19.2 大数据处理系统架构分析19.2.1 大数据处理系统面临挑战19.2.2 大数据处理系统架构特征19.3 Lambda架构19.3.1 Lambda架构对大数据处理系统的理解19.3.2 Lambda架构应用场景19.3.3 Lambda架构介绍19.3.4 Lambda架…

CSS--Emmet 语法

Emmet语法的前身是Zen coding,它使用缩写,来提高html/css的编写速度, Vscode内部已经集成该语法. 目录 1. 快速生成HTML结构语法 1.1 快速生成HTML结构语法 2. 快速生成CSS样式语法 2.1 快速生成CSS样式语法 1. 快速生成HTML结构语法 1.1 快速生成HTML结构语法 1. 生成标…

【大厂AI课学习笔记】1.1.4 学科和学习路径

一、8大学科 特点是特点 :厚基础、重交叉、宽口径。 八大学科分别是:数学与统计、科学与工程、计算机科学与技术、人工智能核心、认知与神经科学、先进机器人技术、人工智能工具与平台。 每个学科,又向下延伸。 MORE: AI,即人…

springIoc以及注解的使用

注解 注解的定义 注解(Annotation)是一种在 Java 程序中以元数据的形式对代码进行标记和说明的机制。它可以被添加到类、方法、字段、参数等程序元素上,用于提供额外的信息和指示。 也就是说注解是一种标记 注解怎么生效呢? 通…

网络相关知识

关于作者:CSDN内容合伙人、技术专家, 从零开始做日活千万级APP。 专注于分享各领域原创系列文章 ,擅长java后端、移动开发、商业变现、人工智能等,希望大家多多支持。 目录 一、导读二、概览三、相关工具3.1 network profiler/ In…

gRPC 基本原理

基础知识 RPC的语义是远程过程调用(Remote Procedure Call,RPC)就是将一个服务调用封装在一个本地方法中,让调用者像使用本地方法一样调用服务,对其屏蔽实现细节。 RPC 会给对应的服务接口名生成一个代理类&#xff0c…

[docker] 关于docker的面试题

docker命名空间? docker与虚拟机的区别? 容器虚拟机所有容器共享宿主机的内核每个虚拟机都有独立的操作系统和内核通过namespace实现资源隔离,通过cgroup实现限制资源的最大使用量完全隔离。每个虚拟机都有独立的硬件资源秒级启动速度分钟级…

超越 Node.js:Bun 的创新与突破

1. Bun Bun 是一个全新的 JavaScript 运行时,类似于 Node.js 和 Deno,它专注于提供出色的性能和开发者体验。Bun 的一些特点包括: 快速的性能:Bun 旨在提供高性能,无论是启动时间、执行速度还是安装依赖包的速度。 兼…

使用小米手机

额,因为很久以前的华为荣耀手机(虽然现在不是华为了)退役了,所以使用了小米手机。 文章目录 小米手机和电脑互联 小米手机和电脑互联 这里我用的ubuntu 22.04 和Redmi note 13 pro。其实开始我也没想到,小米居然可以直…

【3.6数据库系统】数据库备份与恢复技术

目录 1.数据备份1.1备份方式1.2备份类型 2.数据库故障与恢复 1.数据备份 1.1备份方式 △冷备份也称为静态备份,别是将数据库正常关闭,在停止状态下,将数据库的文件全部备份(复制)下来。 △热备份也称为动态备份,是利用备份软件&a…

林浩然的哲学穿越之旅:从道家“道”到柏罗丁的“太一”

林浩然的哲学穿越之旅:从道家“道”到柏罗丁的“太一” Lin Haoran’s Philosophical Journey Across Time: From Dao in Daoism to Plotinus’s “The One” 在这个充满奇思妙想的故事里,我们的主角林浩然可不是个普通的家伙。他是当代的一位哲学侦探&a…

【Java面试】redis

目录 Redis 介绍Reids常用5种数据类型一个字符串类型的值能存储最大容量是多少?Redis 有哪些适合的场景?Redis的并发竞争问题如何解决?什么是缓存穿透?如何避免?什么是缓存雪崩?何如避免?Redis 中设置过期…

Flutter开发进阶之Canvas

Flutter开发进阶之Canvas 在Flutter开发中Canvas作为一个绘制2D图形的工具,提供了一系列绘图方法,可以用来绘制各种形状、线条、文本和图像等; Canvas对象是作为CustomPainter的子组件进行构建的; void paint(Canvas canvas, Si…

(M)unity受伤反弹以及死亡动画

受伤反弹 1.在人物控制脚本中添加受伤后速度将为0,并添加一个反弹的力 在刷新移动时,需要在没有受伤的状态 public bool isHurt; public float hurtForce; private void FixedUpdate() {if(!isHurt)Move(); }public void GetHurt(Transform attacker) …

策略者模式-C#实现

该实例基于WPF实现,直接上代码,下面为三层架构的代码。 目录 一 Model 二 View 三 ViewModel 一 Model using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks;namespace 设计模式练…