第7章 数据治理
7.1 元数据管理
元数据管理目前开源的框架中,Atlas框架使用的较多。再就是采用自研的系统。
1)元数据管理底层实现原理
解析如下HQL,获取对应的原数据表和目标表直接的依赖关系。
insert into table ads_user
select id, name from dws_user
依赖关系能够做到:表级别和字段级别 neo4j
2)用处:作业执行失败,评估他的影响范围。主要用于表比较多的公司。
atlas版本问题:
0.84版本:2019-06-21
2.0版本:2019-05-13
框架版本:
Apache 0.84 2.0 2.1
CDH 2.0
3)自研的元数据管理
7.2 数据质量监控
7.2.1 监控原则
一张表的记录数在一个已知的范围内,或者上下浮动不会超过某个阈值
日活、周活、月活、留存(日周月)、转化率(日、周、月)GMV(日、周、月)
复购率(日周月) 30%
某个字段为空的记录数在一个范围内,或者占总量的百分比在某个阈值范围内
一个或多个字段是否满足某些规则
一个或多个字段没有重复记录
主要针对同步流程,监控两张表的数据量是否一致
7.2.2 数据质量实现
7.3 权限管理(Ranger)
7.4 用户认证(Kerberos)
详见下篇
7.5 数据治理
资产健康度量化模型。
根据数据资产健康管理的关键因素,明确量化积分规则。根据数据基础信息完整度、数据存储和数据计算健康度、数据质量监控规则合理性等,完整计算数据资产健康分。
1)资产健康分基础逻辑
(1)健康分基本设定原则:
- 健康分采用百分制,100最高,0分最低;
- 健康度以表为最细粒度,每个表都有一个健康分;
- 个人、业务版块、团队、一级部门、以及集团的健康分以所属表的健康分加权平均;
- 数据表权重=(表字节数 + 1)再开立方根;空表的权重为1;
(2)数据表资产健康分:
数据表资产健康分score =(规范合规健康分*10% + 存储健康分*30% + 计算健康分*30% + 数据质量健康分*15% + 数据安全健康分 * 15%);
2)数据资产特征列表:
资产健康类型 | 特征 | 特征分计算逻辑 |
规范 Specification 规范健康分= 100 * sum(特征分)/count(特征) | 有技术owner | 0/1 |
有业务owner | 0/1 | |
有分区信息 | 0/1 | |
有归属部门 | 0/1 | |
表命名合规 | 0/1 | |
数仓分层合规 | 0/1 | |
表有备注信息 | 0/1 | |
字段有备注信息 | 有备注字段数 / 总字段数 | |
存储 Storage 存储健康分= 100 * 完成度 | 生命周期合理性 |
|
计算 Calc 计算健康分= 100 * sum(特征分)/count(特征) | hdfs路径被删除 | 被删除,0分;否则为1 |
产出为空 | 连续15天无数据产出,0分;否则为1; | |
产出表未被读取 | 最近30天产出数据表无读取,0分;否则为1; | |
运行出错 | 最近3天任务运行有出错,0分;否则为1; | |
重复表/相似表 | 与其他数据表50%相似,则为0分,否则为1; | |
责任人不合理 | 对应的调度节点责任人已经离职,或调度节点责任人在职但与数据表责任人不一致 ,0分;否则为1; | |
简单加工 | 生产sql只简单 select字段出来,没有 join、group;where 条件只有分区字段 ;0分,否则为1; | |
暴力扫描 | 表中被查询分区大于 90 天,同时被查询分区的总存储量大于 100G ;0分,否则为1; | |
两侧类型不一致 | 类似这个例子: select ... from table1 t1 join table2 t2 on t1.a_bigint=t2.a_string; 这种情况在 on 条件中两边都被 double了,这个其实不合理;是个大坑, 会导致行为和用户期待不一致 | |
数据倾斜 | 长尾运行实例耗费时⻓高于平均值 20%,分数记为0,否则记为1; | |
需要列剪裁 | 判断 select 语句及后续使用逻辑,是否 select 出来的列都被使 用,用被使用的列数/总 select 列数计算使用率,低于 50% 就需要列剪裁,0分,否则为1; | |
质量 Quality 质量健康分= 100 * sum(特征分)/count(特征) | 表产出时效监控 | qdc有定义产出时间预警或已经归属于某个生产基线; 0/1; |
表内容监控 | 有配置表级规则; 0/1; | |
字段内容监控 | 有配置字段级规则; 0/1; | |
表产出SLA | X点及时性SLA测量函数:
| |
表内容SLA | 1-触发监控规则/总监控规则数 | |
字段内容SLA | 1-触发监控规则/总监控规则数 | |
安全 Security 安全健康分= 100 * sum(特征分)/count(特征) | 数据分类 | 有明确设置归属的“资产目录” ; 0/1; |
资产分级 | 有指定资产等级; 0/1; | |
字段级安全等级 | 有字段设置了安全等级; 0/1; |