数据治理手稿

简介: 数据治理手稿

维度

分类

指标说明

研发域

表面名规范

表层级、主题、颗粒度、业务过程、存储策略、周期粒度...

词根规范

/

字段命名规范

/

注释规范性

表注释<5字、无字段注释、表更新说明

字段类型规范

/

表规范化率

规范化的CDM(DWD\DWS\DIM)表数量与所有CDM表数量比值

表引用率

所有被ADS层引用的CDM(DWD\DWS\DIM)中,规范化的CDM表数量与所有CDM表数量比值

跨层依赖

跨层依赖占比:DWS依赖ODS,DM依赖ODS...

反向依赖占比: DWD依赖DM、DWD依赖DWS、DWS依赖DM

单一事实建模:一张DWD只依赖一张ODS

链路深度及分层

决定问题的修复时间,链路越深,问题修复的时间可能就越长。

链路>5

核心表查询

前20%查询表中,核心表占比>80%

平均查询时长

个人平均查询时长>公司总平均时长

不良查询

1:大于100s查询次数+查询失败次数>公司平台不良查询数

2:定义一个不良查询及格数

手动查询ods大表

手动查询ods大表不做限制

同源重复导入

1day/hour同源数据导入次数>2

表名任务不一致

表名任务不一致

闲置率

未被引用的ODS表数量与所有ODS表数量比值

穿透率

直接消费ODS的ADS表与所有ADS表占比

多任务同写一张表

多任务同写一张表

指标管理规范

1:指标命名规范、管理规范、口径统一,指标字典等

2:建立指标监控项,异动率,波动范围,指标使用率,指标依赖层级表...

3:  指标平台建设

质量域

数据完整性、一致性、唯一性、NULL值分布...

  • 表级:主键唯一性、表行数监控、行数波动监控等;
  • 字段级:空值判断、枚举值范围监控、数值型分布、最大最小值监控等;
  • 规则强弱:支持配置规则命中后,继续执行或终止任务等不同策略。

考量数据项信息是否全面、完整、无缺失

公式:表完整性和字段完整性的平均值

DQC覆盖率

考量要监控的数据项是否作用所有的任务上,是否有所遗漏

公式:已见控的作业个数/总的作业个数

DQC达标

公式:监控的高价值作业个数/高价值作业总个数(高价值作业是指作业价值分在80分以上的作业)

产出稳定性

考量作业的运行稳定性,是否经常报错,导致数据事故

公式:错误作业个数(本周)/作业总个数

回稳稳定性

公式:失败后重启成功任务数/总的失败记录(去重)数

DDL稳定性

公式:使用到的表发生DDL修改个数/使用到的表数量

告警响应度

通过日常管理、应急响应,降低或消除问题影响,避免数据损毁、丢失

公式:已处理告警个数(本周)/告警总个数(本周)

作业准确性

考量数据是否符合预设的质量要求,如唯一性约束、记录量校验等

公式:告警作业个数(本周)/监控作业总个数

基线破线率

考量数据项信息可被获取和使用的时间是否满足预期要求 公式:超出任务最晚产出时间的作业个数/总的作业个数

作业性能分

考量作业的执行效率和健康度,诊断作业是否倾斜等性能问题

公式:危急作业个数(本周)/作业总个数

安全域.

表安全等级设置

超过一个月仍未进行安全分类、分级确认的数据表/总的表数量

字段安全等级设置

字段依据业务的重要程度划分安全等级。

敏感字段加密

数据脱敏处理 大于2级数据合规字段未处理

数据服务脱敏、加密

数据脱敏处理 大于2级数据服务合规字段未处理

审批流程合规性

建立审批流程机制

读写权限合规设置

不同的层级,不同的业务部门对于不同的库表设置相关的权限控制和隔离

责任人符合规范

责任人需要满足职责、业务和权限要求,权限开通需走审批流程

计算域

通用指标作业优化

任务调度合理优化

1:任务优先级划分和梳理,优先保障高优先级别的产出、做好双链路切换

2:任务错峰调度

3:烟囱任务下沉&无用任务下线

4:数据倾斜任务经优化后仍无法解决,拆分任务,分批调度

5:尽量减少任务依赖。(天任务依赖小时任务,小时级别依赖分钟级别等)

 6:任务自动分级和降级

集群资源治理

1:建立可观测性监控系统,对于重点任务,优先级较高的任务,排队中/处理中任务的状态进行监控,占用集群资源多少等... 全链路压测

2:集群任务/进程占用资源topN

3:冷表下线10W+张,累计下降存储2.8PB,净下降1.9PB(8.49-6.59)

4:资源费用 12k/day->2k/day

5:内存memory seconds 下降33% 6:高耗资源任务运行时间 下降90%

7:高耗资源任务成本消耗 下降69%

高消耗任务调优

1:关联表过多,需拆分

2:关联时一对多,数据膨胀 资源配置过多,运行时资源严重浪费,需要将配置调小(包括Driver内存、Executor个数、Executor内存)

3:代码结尾添加Distribute By Rand(),用来控制Map输出结果的分发 查询中列和行未裁剪、分区未限定、Where条件未限定

 4:SQL中Distinct切换为Group by(Distinct会被hive翻译成一个全局唯一Reduce任务来做去重操作,Group by则会被hive翻译成分组聚合运算,会有多个Reduce任务并行处理,每个Reduce对收到的一部分数据组,进行每组聚合(去重))

5:关联后计算切换为子查询计算好后再关联

6:使用Map Join(Map Join会把小表全部读入内存中,在Map阶段直接拿另外一个表的数据和内存中表数据做匹配,由于在Map是进行了Join操作,省去了Reduce运行的效率也会高很多)可用参数代替

7:减少shuffle,算子、数据集复用

8:合理使用分区、分桶、广播变量等

任务资源分配优化

提高任务并行度、分区数 spark、hive资源合理分配 shuffle参数优化

计算引擎选择和切换

任务切换至Spark3计算引擎&任务调优参数

  1. 开启动态资源分配 dynamicAllocation
  2. cpu/内存配比建议同集群总资源配比,最大化利用集群资源
  3. 开启broadcastjoin,有数大数据平台环境默认关闭(内存限制),spark官方建议开启,可极大提高join小表性能
  4. 调节parallelism和repartition参数,提高并行度
  5. 开启convertMetastoreParquet,充分利用spark读parquet性能
  6. lateral view explode优化,多次explode前,手动触发shuffle操作,减少单分区处理数据量大小
  7. 控制输出文件大小,减少小文件数,减轻nn压力
  8. 充分利用spark3 AQE优化

集群稳定性治理

1:起夜率

2:任务压测、削谷填峰

 3:高可用HA

4:支持动态扩容和数据处理流程自动漂移

5:做好相关监控、建立起监控预警机制 6:弹性反脆弱

7:自动化运维

8:上游元数据变更抗性

z-order

Z-Order 是一种可以将多维数据压缩到一维的技术,在时空索引以及图像方面使用较广,比如我们常用order by a,b,c 会面临索引覆盖的问题,Z-Order by a,b,c 效果对每个字段是对等的

yarn相关优化

1:通过Node label完成资源隔离

2:通过cgroup完成cpu进程的绑定,使其得到充分的利用。

olap计算成本优化

1: 选择向量化查询引擎相关MPP数据库 2:bitmap优化

3:cbo优化器

4:query cache

5:  异步物化视图

6:索引+动态分区、分桶

7:Sorted streaming aggregate

8:join优化

 9:参数调优

10: tablet治理

存储域

日志格式规范管理

  • 标准:日志打印遵守统一标准格式,保证下游可正常解析,异常日志的存储或特化解析会带来存储空间的浪费、人力维护跟进的投入开销与下游解析作业的性能开销;
  • 按需:仅打印下游业务所需的日志,非必要的日志可不打印或不采集到下游链路中;在满足业务分析的前提下,日志打印可遵守最小原则,最大限度减少下游日志传输量;
  • 精简:对于频繁在多条日志反复打印的字段,可仅在会话中的第一条日志打印完整信息,后续日志通过会话ID进行关联查询;可通过维表查询替换的字段,在日志打印时可进一步压缩字段的大小。

建立数据共享/数仓共享方案

数据表生命周期管理

梳理库表的使用情况,无用的库表走申请下线流程。

临时表治理

生命周期管理的推进

 巨型表的治理

abtest专项治理

表的访问占比

存储资源治理

未管理数据表:未设置生命周期的分区表进行识别,当同时满足以下条件,数据表是分区表,没有设置生命周期,且近30天没有访问时,就命中该治理项,并判定该表为未管理的数据表。治理小组也根据提供对应的处理操作建议,优先建议用户进行生命周期的快速设置。针对一些需要长期保留的数据,也可通过设置白名单或设置长生命周期的方式来处理。


无访问数据表:该治理项则是针对进行了初步管理,但是实际是无用数据进行识别。占用了大量存储但是无下游访问的数据表,通常情况下是僵尸数据或者冷数据,需要用户进行处理识别,进行合理生命周期设置,或者进行删除操作。


30天打开次数+近30天引用次数+近30天访问次数+近30天写入次数 = 0


近30天打开次数+近30天引用次数+近30天访问次数 = 0

数据分级与压缩存储

数据分级:

- 第一级:存储在常规Hadoop集群,保证读写性能;

- 第二级:存储在冷备Hadoop集群,可读写,但性能稍差;

- 第三级:存储在冷备S3集群,只读不可写,性能最差。


压缩存储

第一级:格式压缩,基于不同表,压缩为orc/textfile+snappy格式,压缩率在30~48%左右;

第二级:使用纠删码技术,从3副本减少到1.5副本,压缩率在50%左右。


spark与zstd算法的结合,来优化存储资源 Zstd压缩和解压能够达到更高的速度和更高的压缩比,但也可能占用更多的内存和CPU资源。

小文件合并

(1)使用Spark3引擎,自动合并小文件

(2)减少Reduce的数量(可以使用参数进行控制)

(3)用Distribute By Rand控制分区中数据量

(4)添加合并小文件参数

(5)将数据源抽取后的表做一个任务(本质也是回刷分区合并小文件任务)去处理小文件保障从数据源开始小文件不向下游流去

(6) 自定义合并小文件

应用域

热度

决定是否有用,影响查询用户的范围,热度越高表明影响的用户范围越广。

下游类型

决定下游资产重要程度,下游资产类型一般有ETL任务和数据产品两类,ETL任务及数据产品又根据重要度分为普通型及VIP型。

下游依赖数

下游依赖数量:决定是否是关键节点,对下游生产的影响范围,下游数量越多表明影响范围越大。

互动推荐值


应用贡献度


飞书链接:https://j1d30b4chu.feishu.cn/docx/WzNPdhC3GoPe9bxBkGJcEgd2nRc   密码:qfJI
相关实践学习
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
相关文章
|
存储 运维 数据可视化
Jaeger,一个链路追踪神器!
在微服务架构中,一次请求可能经过多个服务节点,带来复杂的调用关系。如何追踪请求全链路、快速定位问题、优化性能,成为开发与运维的关键挑战。链路追踪(Tracing)技术应运而生,而 Jaeger 作为业界主流的开源分布式链路追踪系统,提供了强大的支持。本文将带你全面了解 Jaeger 的核心概念、架构原理、使用方式及实际项目中的落地方法,助你快速掌握链路追踪技术,提升系统的可观测性与稳定性。
1902 2
Jaeger,一个链路追踪神器!
|
安全 算法 数据挖掘
《隐私计算简易速速上手小册》第2章:关键技术介绍(2024 最新版)
《隐私计算简易速速上手小册》第2章:关键技术介绍(2024 最新版)
361 1
《隐私计算简易速速上手小册》第2章:关键技术介绍(2024 最新版)
|
存储 Prometheus Cloud Native
分布式系统架构6:链路追踪
本文深入探讨了分布式系统中的链路追踪理论,涵盖追踪与跨度的概念、追踪系统的模块划分及数据收集的三种方式。链路追踪旨在解决复杂分布式系统中请求流转路径不清晰的问题,帮助快速定位故障和性能瓶颈。文中介绍了基于日志、服务探针和边车代理的数据收集方法,并简述了OpenTracing、OpenCensus和OpenTelemetry等链路追踪协议的发展历程及其特点。通过理解这些概念,可以更好地掌握开源链路追踪框架的使用。
1808 41
|
前端开发 JavaScript 数据库
VSCode编程助手工程能力体验报告(一):通义灵码 - 帮你高效切入新项目、编码和提升质量
我是一位软件工程师,用通义灵码个人版vscode插件的workspace做项目分析和复盘,对比之前没有灵码,现在提效了80%,本文介绍了具体的使用流程。
5562 3
|
SQL 缓存 运维
使用篇丨链路追踪(Tracing)很简单:链路拓扑
使用篇丨链路追踪(Tracing)很简单:链路拓扑
32263 125
|
存储 SQL 搜索推荐
一站式实时数仓Hologres整体能力介绍—2024实时数仓Hologres公开课 01
一站式实时数仓Hologres整体能力介绍—2024实时数仓Hologres公开课 01
Kam
|
算法 Java Linux
使用SecureRandom生成验证码随机数,线程阻塞问题记录
使用SecureRandom生成验证码随机数,线程阻塞问题记录
Kam
1333 0
|
PyTorch TensorFlow 算法框架/工具
手把手教你-MAC笔记本安装Pytorch环境
手把手教你-MAC笔记本安装Pytorch环境
|
运维 算法 物联网
五大智能运维场景
【5月更文挑战第3天】智能运维场景分5类:异常检测、根因诊断、故障自愈、事件预警、效能优化。
|
存储 SQL 关系型数据库
Apache Doris 聚合函数源码阅读与解析|源码解读系列
Apache Doris Active Contributor 隐形通过本文记录下对源码的理解,以方便新人快速上手源码开发。
797 1
Apache Doris 聚合函数源码阅读与解析|源码解读系列