大数据-257 离线数仓 - 数据质量监控 监控方法 Griffin架构

为什么做数据质量监控

数据质量监控是一个持续的过程,旨在确保数据在整个生命周期中保持高质量。它包括多方面的监控措施,通常包括以下几个主要内容:

  • 准确性:监控数据是否准确反映了真实世界的状态,确保数据在收集、存储和传输过程中未发生错误。
  • 完整性:检查数据集是否包含所有必需的信息,确保没有缺失值或者空白字段。
  • 一致性:数据在不同系统之间应该保持一致。数据质量监控确保数据在不同数据源或不同平台中不冲突。
  • 及时性:监控数据是否按时收集和更新。延迟的数据会影响决策的准确性。
  • 有效性:确保数据符合预期的格式或范围。
  • 可用性:监控数据是否容易访问和使用。
  • 合规性:确保数据遵守相关的法律法规和公司政策。
  • 重复性:监控是否存在重复的数据记录。

数据质量问题

  1. 数据不一致:企业早期没有进行统一的规划,大部分信息系统是逐步迭代建设的,系统建设的时间长度不一样,各系统数据标准也不同。
  2. 数据不完整:由于企业信息系统的孤立使用,各个业务系统或模块按照各自的需要录入数据,没有统一的录入工具和数据出口。
  3. 数据不合规:没有统一的数据管理平台和数据源头,数据全生命周期管理不完整。
  4. 数据冗余:各个信息系统针对数据的标准规范不一,编码规则不一,校验方式不一。

监控方法

设计思路

数据质量监控设计的要求分为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:服务元数据