火山引擎Dataleap治理实践:如何降低数仓建设成本

news2024/10/1 3:24:35

背景

存储与计算资源是数仓建设的基础,也是数仓建设中的重要成本支出。而随着数仓建设规模逐渐扩大、时间跨度逐渐拉长,将不可避免的出现数据表、任务、字段的冗余。为了减轻资源负担,降低数仓维护成本,需要对数仓建设成本进行治理与优化。

技术路线

针对数仓建设成本治理的粒度从大到小可以分为:数据表、数据任务、数据表字段。从粗到细的治理优化思路如下:

  1. 当发现低频使用的数据表时,下线对应数据表的同时也删除对应数据任务;
  2. 当数据任务资源浪费严重,针对任务进行对应的代码与资源优化;
  3. 当发现一张表中个别字段使用使用频率很低,停止相关字段的计算与存储。

根据以上的优化思路,首先要解决如何定位低频使用数据表、高资源浪费率任务、低频使用字段的问题,在此基础上,针对不同的场景通过不同的手段进行优化。
「"数仓建设成本分析"看板总览」

技术方案

低频使用数据表优化方案
定位低频使用数据表
火山引擎Dataleap提供了Hive表的资源治理功能,包括Hive表的存储与访问次数等基本信息查询,用户可以根据该功能直接定位低频使用数据表并进行优化。
在这里插入图片描述
但是以上的优化存在以下缺陷:

  1. 使用Hive表的直接查询次数无法准确衡量用户对于数据的实际使用次数:为了保障查询速度,数据一般会由Hive表导入到ClickHouse等查询速度较快的介质中,而不会直接查询Hive表。因此,一张Hive表的直接访问次数一般是由下游的日常数据任务产生,而不是真正的用户查询。
  2. 缺少了对数据表生产过程中计算资源的统计:数据表在生产的过程中,除了占用存储资源,计算资源是不可或缺的一部分:存在经过复杂计算过程后,产出很小数据量的数据表。因此,当希望对成本进行快速优化时需要瞄准高成本的数据表时,只着眼于数据表占用的存储资源是不够全面的。
  • Hive表成本分析看板
    为了解决以上两个问题,火山引擎Dataleap研发人员进行了Hive表成本分析看板的开发建设:
  1. 首先,对数据表进行血缘关系的梳理,从上(Hive表)至下(ClickHouse)建立数据表血缘关系树
  2. 进一步将所有叶子节点的访问次数累加到相应根节点上,作为该根节点的使用次数(直接访问+间接访问)
  3. 再统计数据表计算资源,关联数据表存储资源,获得该数据表的总生产成本
  4. 最后关联数据表的总生产成本与总使用次数,评价该数据表实际的ROI
    「数据表的生产成本vs使用次数」
    优化手段与思路
  5. 优化手段
    针对数据表的优化手段有:
    ① 下线数据表及对应任务
    在火山引擎Dataleap下线相关任务,并删除对应数据表。
    ② 缩减数据表TTL
    根据「表分区查询热度分布图」在火山引擎Dataleap修改对应数据表TTL对应数据表。

「火山引擎DataLeap数据表生命周期配置」
③ 对历史数据进行温存配置
在火山引擎Dataleap配置历史数据温存天数。

  1. 优化思路
    基于「Hive表成本分析看板」,根据不同的使用成本与使用次数阈值(如数据表的生产成本1000元/月,使用次数100次/月)将看板分为四个象限,其中各个象限的数据表的含义及推荐的优化手段为:
    在这里插入图片描述
    根据优化收益进行治理的顺序为:第二象限>第三象限>第一象限>第四象限。

低资源利用率任务优化方案
定位低资源利用率任务数据任务
计算资源分为CPU资源和内存资源,可以利用火山引擎Dataleap进行高浪费任务的定位与探查。
在这里插入图片描述在这里插入图片描述
「任务资源使用监控」

优化手段与思路

  • 对于新增任务
    基于大数据研发治理套件火山引擎DataLeap,在新建数据任务与数据表时,要求需求方提供数据的服务时限,设置数据任务的寿命。当寿命到期,会提醒相关负责人确认是否可下线当前数据任务。

在这里插入图片描述
在这里插入图片描述

  • 对于历史任务
    目前离线数据任务的主要计算引擎为Apache Spark。

低频使用字段优化方案

相比于数据表与任务,针对数据表中的低频使用的字段进行优化是一种更加细粒度的方式。
定位低频使用字段
在离线数仓建设中,原始日志一般会从消息队列中直接不加处理的存储到原始数据层,再通过明细数据层对原始日志进行字段清洗与解析。在实践中,火山引擎DataLeap研发人员发现处于明细数据层中的原始埋点明细表由于数据量巨大(单表PB量级):在某些数据库中,仅三张表格就占据了所在数据库75%的存储大小,个别数据表的字段平均存储大小约为150TB。因此,为了更加高效地完成数据表字段优化,研发人员从埋点明细表的埋点字段入手。
和Hive数据表类似,埋点字段也具有以下特点:

  1. 埋点字段一般也不会对外直接提供查询,而是以清洗后的维度和指标的形式对外使用
  2. 衡量一个埋点字段的ROI具有也两个方面:使用次数与生产成本(存储+计算成本)。
    因此,首先也需要构建埋点的血缘关系树来统计其使用次数,再以存储+计算资源消耗来衡量其生产成本,最终才能准确地评价埋点的价值。
    为了解决以上两个问题,研发人员进行了埋点成本分析看板的开发建设:
  3. 首先,以原始埋点明细表的埋点字段为根节点,从上(埋点明细Hive表)至下(服务层提供维度、指标查询的ClickHouse表)建立埋点字段的血缘关系树
  4. 进一步将所有叶子节点的维度、指标字段的访问次数累加到相应根节点埋点字段上,作为该根节点埋点字段的使用次数
  5. 再统计埋点明细数据表的计算资源与存储资源,获得该埋点字段的的平均生产成本
  6. 最后关联埋点字段的总生产成本与总使用次数,评价该埋点字段的实际的ROI

埋点字段的生产成本vs使用次数
优化手段与思路

  1. 优化手段
    ① 停止解析和存储埋点字段
    为了减少明细数据层字段的的计算与存储成本,可以直接对一些低频使用埋点停止解析与存储。
    但是低频字段并不等于不使用字段,即如果要下线低频使用字段,需要保证用户在偶尔使用时仍然可以获取。虽然使用频次不同,但是同一张表中的埋点字段不能分别设置不同的存储方式或者TTL,只能选择存储或者不存储。
    因此,对于低频使用埋点,结合用户的实际使用情况与开发维护成本,可以通过搭建采样链路、从原始数据层临时获取等方式满足偶尔的少量使用场景,从而可以减少明细数据层的字段解析与存储。
    ② 拆解埋点字段中常用的部分
    还有一些被高频使用的埋点常常以复杂的url、json的格式上报存储。而实际在下游的使用过程中只会解析获取部分属性提供服务。因此,基于准确的获取下游的使用方式,将大字段拆解为小字段,不解析存储不使用的部分。
  2. 优化思路
    配合「埋点成本分析看板」,根据不同的使用成本与使用次数阈值将看板分为四个象限,其中各个象限的数据表的含义及推荐的优化手段为:
    在这里插入图片描述
    根据优化收益进行治理的顺序为:第二象限>第三象限>第一象限>第四象限。
    总结
    基于数据成本分析看板,结合以上技术方案,如果是累计下线20+张数据表及对应任务,优化10+高成本任务,停止200+数据埋点解析,结合数据表温存与TTL缩减,初步测算能节省数仓总成本的36%费用。
    在梳理了数据表、字段的血缘树的基础上,建立了Hive表成本分析看板、任务成本分析看板、埋点成本分析看板等看板,结合大数据研发治理套件火山引擎DataLeap对数仓建设过程中的数据表、数据任务、埋点字段的成本的进行了由粗到细的梳理与优化,提升了现有资源的承载能力,降低了建设成本。

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

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

相关文章

微信小程序-上传代码失败,提示分包大小超过限制

开发者可通过开发者工具中的性能扫描工具提前发现代码中的可优化项: 1. 代码包不包含插件大小超过 1.5 M 【建议】小程序代码包单个包大小限制为2M。因此我们建议开发者在开发时,如果遇到单包体积大于1.5M的情况,可以采取分包的方式&#x…

Star History 月度开源精选|2023 年 5 月

收集完五月的 Star History 精选之后我们惊讶地发现居然有那么多好玩好用的项目,无论是低代码,或是可以帮你少写代码,即便不是专业开发者也可以上手了! Windmill Windmill 可以看做是 Airplane 的开源替代品 / Temporal 的低代码…

安科瑞产品在泛在电力物联网的应用

安科瑞虞佳豪 泛在电力物联网是以通讯技术为基础发展而来的新型物联网体系,其构建的核心是满足电网能源系统的智能判断和自适应调节能力,这将提高能源的替代和利用能力。对于电力物联网来说,通讯技术是其核心的技术内容之一,也是…

直播平台中的美颜SDK技术探究

而在直播过程中,美颜技术的应用已经成为了不可或缺的一部分。美颜技术能够让主播在镜头前变得更加漂亮自信,也能够提高直播的观看体验。在直播平台中,美颜SDK技术的探究就显得尤为重要。 一、美颜SDK技术的定义 美颜SDK技术是一种通过算法…

Java中的增强 for 循环 foreach

foreach 是 Java 中的一种语法糖,几乎每一种语言都有一些这样的语法糖来方便程序员进行开发,编译期间以特定的字节码或特定的方式来对这些语法进行处理。能够提高性能,并减少代码出错的几率。在 Java 中还有比如 泛型、自动拆箱、自动装箱、内…

【集合数据类型详解】——基础语法

目录索引 集合特点:集合用处:去重操作: 创建集合:实例:实例2: 集合运算:交集:并集:补集:差集: 集合特点: 同一集合中,只能…

ssm酒店住宿预定系统-计算机毕设 附源码 87020

ssm酒店住宿预定系统 目 录 摘要 1 绪论 1.1 研究背景 1.2开发意义 1.3ssm框架 1.4论文结构与章节安排 2 2 酒店住宿预定系统系统分析 2.1 可行性分析 2.2 系统流程分析 2.2.1 数据增加流程 2.2.2 数据修改流程 2.2.3数据删除流程 2.3 系统功能分析 2.3.1功能性分…

使用Servlet完成单表的增删改查功能以及使用模板方法设计模式解决类爆炸问题(重写service模板方法)

使用Servlet做一个单表的CRUD操作 开发前的准备 导入sql脚本创建一张部门表 drop table if exists dept; create table dept(deptno int primary key,dname varchar(255),loc varchar(255) ); insert into dept(deptno, dname, loc) values(10, XiaoShouBu, BeiJing); inser…

【读书笔记】《认知觉醒》- 周岭

不停的阅读,然后形成自己的知识体系。 2023.06.25 读 文章目录 自序 开启自我改变的原动力上篇 内观自己,摆脱焦虑第一章 大脑——一切问题的起源第一节 大脑:重新认识你自己三重大脑高低之分与权力之争成长就是克服天性的过程 自序 开启自我…

深度学习训练过程耗时越来越长解决方法

自己的情况是代码中有过多的图片显示,导致每个iteration/epoch训练时间越来越长。或其他类似的东西。 解决方法: 用plt.close()及时关闭图片 fig plt.figure(0) # 新图0 plt.savefig( ) # 保存 plt.close(0) # 关闭图0plt.close(all) #关闭所有图…

Kafka 入门到精通

消息队列的流派 什么是 MQ Message Queue(MQ),消息队列中间件。很多人都说:MQ 通过将消息的发送和接收分离来实现应用程序的异步和解偶,这个给人的直觉是——MQ 是异步的,用来解耦的,但是这个只…

每日学术速递6.12

CV - 计算机视觉 | ML - 机器学习 | RL - 强化学习 | NLP 自然语言处理 Subjects: cs.CV 1.DynIBaR: Neural Dynamic Image-Based Rendering(CVPR 2023 Award Candidate) 标题:DynIBaR:基于神经动态图像的渲染 作者:Mengyuan Yan Jessi…

【2023,学点儿新Java-15】案例分享:基于Java实现餐厅点餐系统(附完整源代码)

前情回顾: 【2023,学点儿新Java-14】携程面试题:如何看待Java是一门半编译半解释型的语言?| 咨询互联网行业 资深前辈的一些问题 | 附:为什么说ChatGPT的核心算法是…?| GPT-3.5【2023,学点儿新…

通用密钥,无需密码,在无密码元年实现Passkeys通用密钥登录(基于Django4.2/Python3.10)

毋庸讳言,密码是极其伟大的发明,但拜病毒和黑客所赐,一旦密码泄露,我们就得绞尽脑汁再想另外一个密码,但记忆力并不是一个靠谱的东西,一旦遗忘密码,也会造成严重的后果,2023年业界巨…

算法程序设计 之 模糊数字、真假银币(1/8)

内容 模糊数字、真假银币 一、目的: 理解并掌握枚举算法的基本思想和设计步骤。 二、内容 1模糊数字 问题描述:一张单据上有一个5位数的编码,因为保管不善,其百位数已经变得模糊不清。但是知道这个5位数是57和67的倍数。现…

c++Qt Creator调用 python 完整版 + 解决bug过程

文章目录 创建项目配置python环境导入Python库其他坑点Python.h 头文件报错ModuleNotFoundError: No module named encodings’ 完美解决找不到python文件 成功! 文章首发于我的个人博客:欢迎大佬们来逛逛 创建项目 选择创建 qmake 项目: …

SciencePub学术 | 计算机类重点SCIEEI征稿中

SciencePub学术 刊源推荐: 计算机类重点SCIE&EI征稿中!影响因子高,对国人友好!信息如下,录满为止: 一、期刊概况: 计算机类重点SCIE&EI 【期刊简介】IF:8.0-8.5,JCR1区&am…

【新星计划回顾】第七篇学习-正则表达式-邮箱解释

🏆🏆时间过的真快,这是导师回顾新星计划学习的第七篇文章! 在学习过程中,学员们也咨询了很多问题,我把一些问题整理以文章形式总结分享下。 最近这段时间非常忙,虽然导师首次参与新星计划活动已…

(八)矢量数据的空间分析——叠置分析②

矢量数据的空间分析——叠置分析② 目录 矢量数据的空间分析——叠置分析② 1.交集取反1.1图解1.2用法1.3操作步骤 2.图层联合2.1图解2.2用法2.3操作步骤 3.修正更新3.1图解3.2用法3.3操作步骤 1.交集取反 输入要素和更新要素中不叠置的要素或要素的各部分将被写入到输出要素类…

Android——基本控件(下)(十四)

1. 滚动视图&#xff1a;ScrollView 1.1 知识点 &#xff08;1&#xff09;掌握滚动视图的主要作用&#xff1b; &#xff08;2&#xff09;可以使用滚视图进行布局&#xff1b; 1.2 具体内容 范例&#xff1a; <ScrollView xmlns:android"http://schemas.android…