作者:极光数据架构师—旷东林

01 摘要

本文提出了一种大数据质量体系建设的办法,能对数据处理过程中的ETL工作进行数据品质监控,并依据监控后果进行必要的告警或工作停止。监控工作的开启能够增量进行,对存在的ETL工作不须要做任何批改,监控工作的开启或敞开也不影响原有的ETL工作的依赖关系。

02 背景

随着极光各个业务线的业绩倒退越来越依赖数据中心所提供的数据分析能力。

数据中心数据平台上运行的ETL工作也越来越多,解决逻辑也越来越发简单ETL工作的依赖链也越来越长,这些ETL工作往往还是由不同团队的不同业务人员开发的,业务人员的开发水准参差不齐,不同团队之间的沟通也可能不畅,造成ETL工作的数据品质问题频发,更重大的是,出了品质问题后,因为工作的依赖链很长,造成排查数据品质问题困难重重,需上下游一层一层的排查,需不同团队的开发人员协调排查,极大的升高了数据产出效率。

另外,因为没有对立的数据品质监管措施,往往是业务发现数据报表有问题后反馈给开发人员,开发人员才被动的去查找问题,修复谬误,不足发现问题的主动性。

最初,因为没有对立的数据品质监管措施,往往只会在数据品质问题曾经扩散开来当前才会被感知到,造成大量计算资源的节约和修补过程的耗时。

为了彻底扭转这种场面,一个弱小的数据品质监控零碎是十分必要的。本文就联合极光的理论状况设计了一套数据品质监控零碎,比拟完满的解决了上述的问题。

03 设计方案

极光的数据品质监控平台十分依赖于ETL工作的调度平台提供的底层性能,其整体架构如图3-1所示

图3-1数据品质监控我的项目后盾架构

数据品质服务后盾负责的事务次要由:

1、负责接管前端的配置信息并存入后盾数据库;

2、承受质量检查过程中上报的指标采集,指标评估,工作告警制动等的质量检查过程的跟踪日志;

3、从调度零碎获取调度工作列表及其与质量检查无关的工作配置信息;

图中的调度节点实质上就是调度系统启动的一个调度过程,在失常的调度过程中,调度过程依据配置的工作类型运行相应代码,比方,如果运行的工作是一个hive脚本,则调度过程会通过hive的客户端提交hive脚本给hive服务端来执行该脚本,这里为运行hive脚本所须要的hive客户端代码被对立形象成一个SideCarProxy组件,提供对立的接口,不同类型的ETL工作通过不同的SideCarProxy实现来提交和运行不同类型的ETL工作,比方Spark工作的SideCarProxy实现就会提供提交spark工作的性能,Spark类型的ETL工作只需负责具体业务逻辑的实现。

为了反对ETL工作开启数据质量检查性能,咱们扩大了SideCarProxy的性能,在放弃与原来接口兼容的根底上扩大了三种接口,别离是数据质量指标采集接口,数据质量指标评估接口,数据质量检查动作接口和数据品质告警配置接口。这些质量检查接口依据其触发查看的工夫点不同能够进一步分为前置查看,中置检查和后置查看。

前置查看是在ETL工作运行前触发的质量检查工作,个别用于查看ETL工作的输出数据是否满足要求;中置查看时在ETL工作运行期间监控工作运行状况的一种查看机制,经常用于工作启动工夫,运行时长,实现工夫等指标的查看;后置查看是在ETL工作运行实现后触发的质量检查工作,个别用于查看ETL工作的输入数据是否满足要求。

3.1 数据质量指标采集接口

数据品质的查看依赖数据质量检查指标的定义,这种指标的定义齐全由业务依据本身的须要定义。为了提供零碎的应用便利性,零碎内置了一些罕用的数据质量检查指标,比方工作的启动时延,运行时长,实现时延。对于业务特定的指标,零碎反对通过sparksql的形式来自定义业务特有的数据品质采集指标,如截图3-2所示


图3-2 质量检查的预约义指标和自定义指标

3.2 数据质量指标

利用数据质量指标采集接口,能够实现从数据的时效性,完整性,一致性,统计特色等各个角度来实现数据品质的监控,上面通过示例的形式来阐明怎么实现这些指标的监控。

3.2.1 时效性指标监控

时效性指标目前次要是通过工作的启动时延和完结时延来实现,启动时延监控ETL工作配置的启动工夫与工作理论的启动工夫之间的提早;完结时延监控ETL工作配置的启动工夫与工作理论的实现工夫之间提早;这两个指标监控零碎曾经原生反对,开发人员只需开启这两个监控项即可

3.2.2完整性指标监控

完整性指标个别监控指标表的数据是否残缺,最简略的检测形式就是统计指标表指定分区的记录数,这种检测目前能够通过零碎的自定义指标接口来实现,其实现的SQL逻辑如下表所示

表3-1 完整性指标采集的SQL实现

SQL中的变量会主动被任务调度时所援用的具体变量值替换,每次ETL工作运行时该指标都会被检测一次,其检测值在通过评估规定的评估后依据告警规定实现告警动作。后续布局把一些大家罕用的完整性指标实现为零碎原生反对,进步大家应用的便利性。

3.2.3 一致性指标监控

一致性指标的监控和完整性指标的实现形式完全相同,目前的实现还须要用户编写SQL脚本来实现,后续也布局把罕用的一致性指标实现为零碎原生反对的形式。

3.2.4数据统计特色监控

这类指标是齐全依赖ETL工作自身的业务逻辑的,实质上是一类数据的业务品质的检测,目前该类指标的监控都须要业务本人通过SQL的形式来表白指标采集逻辑,零碎只会提供这些指标的保留和治理性能。上面以监控工作的数据歪斜水平为例来阐明这类监控指标的实现,假设数据歪斜以数据分布偏离均匀分布的水平来掂量,则其歪斜指标能够定义为(公式来源于信息论的穿插熵)



表3-2 数据统计特色指标采集的SQL实现

获取这个歪斜率后依据评估规定中配置的阈值即可检测数据歪斜的水平是否在正当的范畴内,并做相应的告警。

3.3 数据质量指标评估接口

数据质量指标评估接口用于评估采集到的数据指标是否合乎数据品质要求,其接口次要承受两个参数,别离是评估规定和阈值范畴。评估规定决定了采集到的指标值通过怎么的计算能力转换成评估值,阈值范畴决定了评估值的正当范畴,评估值一旦超出阈值范畴,就视为数据品质不合格。

依据业务的须要,能够抉择不同的评估规定,为了进步零碎的应用便利性,零碎内置了透传,同比,环比三个评估规定,业务也能够依据业务的须要通过sparksql自定义评估规定。

图3-3 质量检查的评估规定与告警设置

3.4数据质量检查动作接口

数据质量检查动作接口配置数据质量检查不合格时所采取的措施,目前反对疏忽,告警和阻塞三种动作。忽悠示意不做任何操作,查看工作和ETL工作失常运行;告警示意依据配置的告警模板通过钉钉,短信或电话的形式收回告警音讯,但查看工作和ETL工作都失常持续运行不受影响;阻塞示意依据配置的告警模板通过钉钉,短信或电话的形式收回告警音讯,同时该ETL工作及其质量检查工作都终止,ETL工作视为执行失败,依赖该工作的后续工作不能继续执行,此时,须要人工干预修复数据并通过数据质量检查后该工作才视为执行胜利。

3.5数据品质告警配置接口

数据品质告警配置接口次要配置告警的接管人,承受渠道和其余一些与告警无关的一些高级设置

04 总结

数据品质监控我的项目为业务数据品质的监控提供了一个对立的平台,使得业务数据的品质保障工作从被动告诉晋升到了被动发现的水准,并为业务自身参加数据品质保障工作提供的参加伎俩。

同时,为了进一步提高数据品质的保障工作,数据品质监控我的项目也在一直给加强和欠缺,后续布局改善的几个方面次要有:

1、继续提供更多的预约义采集指标,预约义评估指标

2、反对更多的自定义指标的实现形式,比方反对通过python实现自定义指标

3、通过利用ETL工作的依赖血缘关系,能进一步评估数据品质问题的影响范畴,依据影响范畴给与不同的告警等级,依据影响的业务线提前告诉相干业务人员和开发人员做好相干的协调工作。