大数据-257 离线数仓 - 数据质量监控 监控方法 Griffin架构
为什么做数据质量监控
数据质量监控是一个持续的过程,旨在确保数据在整个生命周期中保持高质量。它包括多方面的监控措施,通常包括以下几个主要内容:
- 准确性:监控数据是否准确反映了真实世界的状态,确保数据在收集、存储和传输过程中未发生错误。
- 完整性:检查数据集是否包含所有必需的信息,确保没有缺失值或者空白字段。
- 一致性:数据在不同系统之间应该保持一致。数据质量监控确保数据在不同数据源或不同平台中不冲突。
- 及时性:监控数据是否按时收集和更新。延迟的数据会影响决策的准确性。
- 有效性:确保数据符合预期的格式或范围。
- 可用性:监控数据是否容易访问和使用。
- 合规性:确保数据遵守相关的法律法规和公司政策。
- 重复性:监控是否存在重复的数据记录。
数据质量问题
- 数据不一致:企业早期没有进行统一的规划,大部分信息系统是逐步迭代建设的,系统建设的时间长度不一样,各系统数据标准也不同。
- 数据不完整:由于企业信息系统的孤立使用,各个业务系统或模块按照各自的需要录入数据,没有统一的录入工具和数据出口。
- 数据不合规:没有统一的数据管理平台和数据源头,数据全生命周期管理不完整。
- 数据冗余:各个信息系统针对数据的标准规范不一,编码规则不一,校验方式不一。
监控方法
设计思路
数据质量监控设计的要求分为4个模块:数据、规则、告警、反馈
- 数据:需要被监控的数据,可能存放在不同的存储引擎中
- 规则:如何设计发现异常的规则,一般而言主要是数值的异常和环比等异常监控方式
- 告警:告警是指发告警的动作,可以通过微信消息、电话、短信等方式
- 反馈:反馈是对告警内容的反馈,有了反馈机制,整个数据监控才能形成闭环
技术方案
- 最开始可以关注核心要监控的内容,比如说准确性,那么对核心的一些指标做监控
- 监控平台尽量不要做太多复杂的规则逻辑,尽量只对结果数据进行监控
- 多数据源,多数据源的监控方式有两种方式
- 实时数据监控:区别在于扫描周期不同,因此在设计时候可以先以离线为主,但是尽量预留好实时监控的设计
Griffin架构
Apache Griffin是一个开源的大数据质量解决方案,它支持批处理和流处理两种模式的数据质量检测方式。可以从不同的维度度量数据资产,从而提升数据的准确度、可信度。
Griffin主要分为Define、Measure和Analyze三个部分:
- Define:主要负责定义数据质量统计的维度,比如数据质量统计的时间跨度、统计的目标
- Measure:主要负责执行统计任务,生成统计结果
- Analyze:主要负责保存与展示统计结果
Griffin主要特点
- 数据质量评估:支持基于规则和模型的质量评估,可定义完整性、准确性、一致性、有效性和及时性等规则
- 质量规则定义和管理:用户可自定义规则,使用JSON格式描述数据质量要求,周期性检查数据
- 灵活的数据源支持:支持HDFS、Hive、Kafka、HBase等,处理批处理和流处理模式
- 多维度数据质量监控:支持基于时间、地点、数据源等多维度评估
- 可视化界面:查看数据质量评估结果、报告、警告信息等
- 集成与兼容性:与Hadoop、Spark等大数据平台高度集成
- 自动化修复:支持自动修复部分数据质量问题,如填补缺失值
- 扩展性:提供扩展接口和插件机制
编译安装
相关依赖:
- JDK 1.8
- MySQL 5.6 及以上
- Hadoop(2.6.0 或 Later)
- Hive(2.x)
- Maven
- Spark(2.2.1)
- Livy(livy-0.5.0-incubating)
- Elasticsearch (5.0 or later versions)
备注:
- Spark:计算批量、实时指标
- Livy:为服务提供RESTful API调用 Apache Spark
- Elasticsearch:存储指标数据
- MySQL:服务元数据