充分复用离线空闲算力,降低了实时计算资源开支

news2024/11/25 4:57:00

针对提供下游数据报表展示的场景,一般需要走预计算的流程将结果持久化下来,对数据就绪和计算耗时的敏感度都较高,而且查询逻辑相对复杂,Trino/Impala 集群规模相对较小,执行容易失败,导致稳定性欠佳。这个场景下我们使用了集群部署规模最大的 Spark 引擎来处理,在不引入新的资源成本的情况下,做到了离线计算资源的复用。

数据就绪方面,通过 Arctic 表水位感知方案,可以做到较低的分钟级就绪延迟。

计算方面,Arctic 对 Spark Connector 提供了一些读取优化,用户可以通过配置 Arctic 表的 read.split.planning-parallelism 和 read.split.planning-parallelism-factor 这两个参数值,来调整 Arctic Combine Task 的数量,进而控制计算任务的并发度。由于 Spark 离线计算的资源相对灵活和充足,我们可以通过上述调整并发度的方式来保证在 2~3 分钟内完成业务的计算需求。

(3)Hive + Spark 满足传统离线数仓生产链路的调度

Arctic 支持将 Hive 表作为 Basestore,Full Optimize 时会将文件写入到 Hive 数据目录下,以达到更新 Hive 原生读取内容的目的,通过存储架构上的流批一体来降低成本。因此传统的离线数仓生产链路,可以直接使用对应的 Hive 表来作为离线数仓链路的一部分,时效性上相较于 Arctic 表虽缺少了 MOR,但通过 Hive 表水位感知方案,可以做到业务能接受的就绪延迟,从而满足传统离线数仓生产链路的调度。

3 项目影响力与产出价值

3.1 项目影响力

通过 Arctic + X 方案在传媒的探索和落地,为传媒准实时计算场景提供了一个新的解决思路。该思路不但减轻了全链路 Flink 实时计算方案所带来的实时资源压力和开发运维负担,而且还能较好地复用现有的 HDFS 和 Spark 等存储计算资源,做到了降本增效。

此外 Arctic 在音乐、有道等多个 BU 也有落地,比如在音乐公技,用于 ES 冷数据的存储,降低了用户 ES 的存储成本;而有道精品课研发团队也在积极探索和使用 Arctic 作为其部分业务场景下的解决方案。

目前 Arctic 已经在 github 上开源,受到了开源社区与外部用户的持续关注,在 Arctic 的建设与发展中,也收到了不少外部用户提交的高质量 PR 。

3.2 项目产出价值

通过上述方案我们将 push ETL 明细数据通过 Flink 实时入湖到 Arctic,然后在调度平台上配置分钟级的调度任务,按照不同交叉维度进行计算后将累计型指标后写入关系数据库,最后通过有数直连进行数据展示,做到了业务方要求的分钟级时效数据产出。改造后的方案,同原来的全链路 Flink 实时计算方案相比:

(1)充分复用离线空闲算力,降低了实时计算资源开支

方案利用了空闲状态下的离线计算资源,且基本不会带来新的资源开支。离线计算业务场景注定了资源使用的高峰在凌晨,而新闻 push 推送及热点新闻产生的场景大多为非凌晨时段,在满足准实时计算时效的前提下,通过复用提升了离线计算集群的综合利用率。另外,该方案能帮我们释放大约 2.4T 左右的实时计算内存资源。

(2)降低任务维护成本,提升任务稳定性

Arctic + Spark 水位感知触发调度的方案可减少 17+ 实时任务的维护成本,减少了 Flink 实时计算任务大状态所带来的稳定性问题。通过 Spark 离线调度任务可充分利用离线资源池调整计算并行度,有效提升了应对突发热点新闻流量洪峰时的健壮性。

(3)提升数据异常时的修复能力,降低数据修复时间开支

通过流批一体的 Arctic 数据湖存储架构,当数据出现异常需要修正时,可灵活地对异常数据进行修复,降低修正成本;而如果通过实时计算链路回溯数据或通过额外的离线流程来修正,则需要重新进行状态累计或复杂的 ETL 流程。

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

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

相关文章

Linux系统中标准输入设备的控制实现

大家好,今天主要和大家聊一聊,如何使用标准输入设备,进行控制信息的识别。 目录 第一:按键应用编程方法 第二:单点触摸应用程序实现 ​第三:多点触摸应用程序实现 第一:按键应用编程方法 编写…

java 实现删除单链表中所有指定的结点以及如何清空单链表

文章目录1. 删除单链表中的所有的指定结点1.1 删除思路1.2 删除步骤1.2.1 删除结点不是头结点1.2.2 删除的结点是头结点的情况1.3 部分代码思路分析1.4 整体代码演示2. 清空单链表1. 删除单链表中的所有的指定结点 1.1 删除思路 定义一个 cur 来代替 head 遍历单链表。遇到指…

Python检测和防御DOS攻击

目录 ​编辑 一、在CentOS上安装Python3 1.下载Python3.10源代码文件 2.运行以下命令行完成安装 3.确认是否安装成功 二、理解各个命令的含义 1.uptime 2.netstat 3.ss 4.firewall-cmd 5.sysctl 三、利用Python实现DDOS入侵检测 1.采集TCP连接数据 一、在CentOS上安…

生态系统服务——水源涵养水源涵养分布

水源涵养,是指养护水资源的举措。一般可以通过恢复植被、建设水源涵养区达到控制土壤沙化、降低水土流失的目的。 水源涵养数据是地理遥感生态网平台通过水量平衡方程(The Water Balance Equation)计算(式29)。水量平衡…

http://localhost:8080打不开/shutup.bat命令行闪退

前言:学过一阵java web后从头学起,发现http://localhost:8080打不开,双击shutup.bat闪退 http://localhost:8080打不开 一、tomcat 未启动,所以http://localhost:8080打不开; 二、tomcat图标显示已启动,但…

计算机毕业设计SSM草海帮帮帮【附源码数据库】

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

5G无线技术基础自学系列 | 无线帧结构

素材来源:《5G无线网络优化实践》 一边学习一边整理内容,并与大家分享,侵权即删,谢谢支持! 附上汇总贴:5G无线技术基础自学系列 | 汇总_COCOgsta的博客-CSDN博客 1.3.1 基本时间单位 NR物理层的基本时间…

R语言绘制瑞利分布和指数分布,并为瑞利分布着不同色

从概率论和统计学角度看,Weibull Distribution是连续性的概率分布,其概率密度为: 其中,x是随机变量,λ>0是比例参数(scale parameter),k>0是形状参数(shape para…

python sympy求多元函数的梯度、Hessian矩阵

1 求梯度 sympy实际上提供了求梯度的方法,但个人认为不是很直观,求出的是∂f∂xi⃗∂f∂yj⃗∂f∂zk⃗\frac{\partial f}{\partial x} \vec {i}\frac{\partial f}{\partial y} \vec {j}\frac{\partial f}{\partial z}\vec {k}∂x∂f​i∂y∂f​j​∂z∂…

java计算机毕业设计springboot+vue股票交易模拟系统

项目介绍 股票交易模拟系统是针对目前股票交易模拟管理的实际需求,从实际工作出发,对过去的股票交易模拟管理系统存在的问题进行分析,完善客户的使用体会。采用计算机系统来管理信息,取代人工管理模式,查询便利&#…

eCal 基础安装和使用

参考文章: 自动驾驶通信中间件ecal源码分析—1. 什么是ecal 1、安装 使用官网提供的指令安装 主要参考官网进行安装, https://eclipse-ecal.github.io/ecal/index.html 主要这里兼容的主要系统: Ubuntu 18.04 Ubuntu 20.04 Ubuntu 22.04 这…

[附源码]java毕业设计8号体育用品销售及转卖系统

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

搜索服从幂律分布的网络 论文阅读

一、定义 1、幂律分布网络定义: 大部分通信网络和社会网络都具有幂律分布的特点,也即度数高的节点的数量少,度数低节点的数量多。 2、数学推导: 对于指数为τ、最小度数为k 1、在mkmaxm k_{max}mkmax​处有突变截止点的幂律分…

LeetCode链表练习(上)

文章目录前言1.反转链表1.题目分析2.代码示例2.力扣203. 移除链表元素1.题目分析2.代码示例3.力扣876. 链表的中间结点1.题目分析2.代码示例4.链表倒数第k个节点1.题目分析2.代码示例5.总结前言 之前介绍了链表的实现,为了更好巩固所学的知识,刷题是很有…

【路径规划】局部路径规划算法——DWA算法(动态窗口法)|(含python实现)

文章目录参考资料1. DWA算法原理1.1 简介1.2 算法原理1. 速度采样2. 轨迹预测(轨迹推算)3. 轨迹评价2. Python实现2.1 参数配置2.2 机器人运动学模型2.3 DWA算法类实现2.4 画图2.5 主函数3. 总结参考资料 The Dynamic Window Approach to Collision Avo…

二分查找的模板

这篇博客的二分用的都是左闭右闭的区间&#xff0c;对于二分来说还是我还是习惯这样写 最传统的二分查找&#xff0c;用左闭右闭写 int search(vector<int>& nums, int target) {int left 0;int right nums.size() - 1; // 定义target在左闭右闭的区间里&#xff0…

Mybatis学习之动态Sql

目录 1. 什么是动态Sql 2. 动态Sql需要学习什么 3. 动态Sql之《if》 4. 动态Sql之《where》 5. 动态Sql之《foreach》 6. 动态Sql之《sql》 7. PageHelper分页插件的使用 1. 什么是动态Sql 答案&#xff1a;动态Sql指的是&#xff0c;Sql语句是变化的&#xff0c;不是固…

Allegro原理图反标教程

Allegro原理图反标教程 Logic→Auto Rename Refdes→Rename 点击More进行详细设置 按照下图设置 点击Rename 打开刚刚rename时生成的rename.log文件,需要提取一些数据,如下图 将上图所有带有OLD和NEW的行提取出来,再将OLD,NEW删除 打开Capture,点击Tools→Back Annota…

C++中运行一个程序的内存分配情况及qt中的内存管理机制

一个由c/C编译的程序占用的内存分为以下几个部分 1、栈区&#xff08;stack&#xff09;— 由编译器自动分配释放 &#xff0c;存放函数的参数值&#xff0c;局部变量的值等。其操作方式类似于数据结构中的栈。 2、堆区&#xff08;heap&#xff09; — 一般由程序员分配释放&a…

【springboot】你了解@Autowired 和 @Resource吗?@Autowired 和 @Resource深入分析

Autowired 和 Resource深入分析“认祖归宗”--Autowired 和 Resource来源“通过现象看本质”--Autowired 和 Resource作用和区别1.现象一&#xff1a;一个业务接口只对应一个业务实现类2.现象二&#xff1a;一个业务接口 对应 两个或多个业务实现类我们在开发中&#xff0c;一直…