背景
我司是阿里云深度用户,公司业务基本都在云上,本人又在大数据部门,所以涉及到对数据的一系列监控,DataWorks 针对不同的场景提供了多种监控方法,但是这些方法之间又不是完全割裂,存在某些功能同质化,都能实现一定的最终效果,起初本人有点混淆,所以在亲自使用一段时间并且参考大量资料之后决定写作这篇文章来讲述一下它们之间的差别。
一、数据质量DQC
DQC 支持对常见大数据存储(MaxCompute、E-MapReduce、Hologres、AnalyticDB PostgreSQL、CDH等)进行质量校验。从完整性
、准确性
、有效性
、一致性
、唯一性
和及时性
等多个维度,配置质量监控规则。可以关联DQC规则与调度节点,当任务运行完成后便会触发质量规则校验,第一时间感知问题数据,按需设置规则强弱来控制任务是否失败退出,从而避免脏数据影响扩大,有效降低数据恢复处理的时间成本和费用成本。官方文档
二、智能监控
智能监控功能通过配置自定义规则,实现对任务运行状态
及资源使用情况
的监控,分为全局规则
、自定义规则
。官方文档
- 全局规则
- 孤立节点:
无父节点
,孤立节点会造成资源浪费,且对业务毫无意义,如果下游有很多依赖的话是非常危险的。 - 节点成环:
节点A > 节点B > 节点A
,A是B的父节点,并且还依赖B,这样就构成节点成环
,一个节点出错其他全错。
- 孤立节点:
- 自定义规则
- 任务节点
- 未完成:X点前未完成。
- 出错:任务出错。
- 超时:任务运行超过多长时间造成报警。
- 工作空间
- 除了上述任务节点中的:未完成、出错、超时之外,还包含
- 任务转实例完成:每天24:00前生成次日需要运行的实例数。
- 实例数量波动:增长/下降。
- 除了上述任务节点中的:未完成、出错、超时之外,还包含
- 独享资源组
- 资源组利用率:当利用率大于某个数值并持续指定时长时,触发报警。
- 资源组上等待资源的实例数:当等资源实例数大于某个数值并持续指定时长时,触发报警。
- 任务节点
三、数据推送
数据推送功能是DataWorks
提供的一项数据服务,能够将数据查询后推送到各渠道,除了能推送业务数据,也能将数据库自身提供的监控数据进行推送,并且支持富文本/Markdown、图标、图片设置。官方文档
四、适用场景
以上三个功能,各有侧重,但也不是完全割裂,那么我们该如何选择呢?
- DQC & 智能监控
- 当某个ETL任务的调度时间 6:30 AM,跑批只需要 10 mins ,要监控 7:00 AM 之前能否跑完,也就是监控数据的及时性,这时可以选择使用
DQC
计算表行数,或者智能监控配置未完成告警
,监测时间设置为6:40 至 7:00 AM 之间即可。 - 但是,DQC 能够监控到 字段粒度,可以根据规则强弱阻断下游任务,智能监控没办法实现同样功能。反之,面对
业务线
、项目空间
、资源组
等粗粒度监控,智能监控就可以办到,DQC 实现很困难甚至压根无法实现。
- 当某个ETL任务的调度时间 6:30 AM,跑批只需要 10 mins ,要监控 7:00 AM 之前能否跑完,也就是监控数据的及时性,这时可以选择使用
- DQC & 数据推送
- 要想观测 字段/表
枚举值个数
、重复数据比率
、空值比率
、最大值
、最小值
的时候,DQC 和 数据推送 皆可实现,两者都支持 SQL 编辑 。 - 数据推送在同比或者环比的日期选择上更灵活,DQC 只支持 1/7/30 day,并且支持富文本/Markdown编辑推送内容,使其更丰富。
- 只有 DQC 支持在检测异常时阻断下游ETL。
- 要想观测 字段/表
- 智能监控 & 数据推送
- 数据的及时性监控 ,二者皆可支持。其他方面不再做过多赘述,二者功能重合点较少。
五、总结
总结一下,监控 表级/字段级 完整性
、准确性
、有效性
、一致性
、唯一性
和及时性
等数据质量并且能够及时阻止脏数据进入下游选择DQC;监控具体任务资源运行状况选择智能监控,选择个性化推送某些轻量数据的选择数据推送。
以上就是全部内容,欢迎大家在评论区尽情留言,也可以扫码关注本人公众号: