再聊聊Data observability(数据可观测性)
再聊聊Data observability(数据可观测性)
数据可观测性(Data Observability)是数据工程领域的一个关键概念,它类似于软件系统中的可观测性。简单来说,它是指能够全面了解数据在整个数据生命周期(从数据生成、收集、存储、处理到最终消费)中的状态、变化以及质量情况的能力。
数据工程中应用
- 数据质量保障
在数据工程中,数据质量是至关重要的。Data observability 可以帮助数据工程师和分析师监控数据质量指标,如数据的准确性、完整性、一致性、时效性等。例如,在一个电商数据平台中,通过监测商品价格数据的准确性,可以确保消费者看到的价格是正确的;通过检查订单数据的完整性,能够保证所有订单信息都被正确记录和处理。
- 数据管道监控
数据通常在复杂的数据管道(Data Pipeline)中流动,包括从数据源提取(Extract)、转换(Transform)和加载(Load)到数据仓库或其他存储系统的过程(ETL 过程),以及后续的数据处理和分析步骤。Data observability 能够实时监控这些数据管道的运行状态,及时发现管道中的故障、延迟或数据丢失等问题。比如,当一个数据转换步骤出现异常时,能够快速定位是因为数据格式问题还是计算逻辑错误导致的。
- 数据血缘追踪
了解数据的来源和流向,即数据血缘(Data Lineage)是数据工程的重要部分。Data observability 提供了数据血缘追踪的功能,使得数据工程师可以清楚地知道数据是从哪里来的,经过了哪些处理步骤,最终被用于何处。这在数据溯源、合规审计以及故障排查等场景中非常有用。例如,在金融数据处理中,为了满足监管要求,需要追踪每一笔交易数据的来源和处理过程。
主要组成部分
- 数据质量维度监控
准确性:通过与已知的正确数据或业务规则进行对比,验证数据是否正确。例如,在客户关系管理(CRM)系统中,通过与实际客户信息核实来检查客户联系方式数据的准确性。
完整性:检查数据是否包含所有必需的元素。例如,在一个包含用户个人信息的数据库中,确保每个用户记录都有姓名、年龄、性别等基本信息。
一致性:确保数据在不同的存储位置或处理阶段保持一致。例如,在分布式数据库系统中,检查不同节点上存储的相同数据是否一致。
时效性:监控数据是否在规定的时间范围内更新和可用。例如,对于实时股票数据,要确保数据的更新频率符合市场交易的实时要求。
- 数据管道性能监测
流量监控:观察数据在管道中的流动速度和流量大小。例如,在大数据处理场景中,监测从数据源流入数据湖的数据量和速率,以确保数据能够及时处理而不会造成积压。
延迟监测:检测数据在管道各个环节的延迟情况。比如,在一个实时数据分析系统中,监控从数据产生到数据在仪表盘上显示的时间间隔,确保数据的实时性。
错误率统计:记录数据管道中出现错误的频率和类型。例如,在一个数据转换过程中,统计因为数据格式不兼容导致的错误次数。
- 数据血缘可视化
使用可视化工具来展示数据的来源、转换过程和去向。例如,通过有向图(Directed Graph)来清晰地描绘一个销售数据从各个门店的销售记录系统,经过数据汇总、清洗、分析,最终生成销售报表的全过程。这种可视化有助于数据工程师快速理解数据的流动路径和相互关系。
与数据测试对比
软件工程师在将代码投入生产之前使用单元测试来识别有bug的代码类似,数据工程师通常利用测试来检测和防止潜在的数据质量问题进一步向下游发展。
数据测试是整个数据可靠性堆栈的一部分。
这种方法(在大多数情况下)是可行的,直到公司开始摄取如此多的数据,以至于单点故障是不可行的。我遇到过无数的数据团队,尽管采用了严格的测试制度,但他们还是遇到了持续的数据质量问题。这让人泄气,而且浪费了工程师的时间。
即使是最好的测试过程也是不够的,因为有两种类型的数据质量问题:那些你可以预测的(已知的未知)和那些你不能预测的(未知的未知)。
有些团队将有数百个测试来覆盖大多数已知的未知,但他们没有有效的方法来覆盖未知的未知。
数据可观测性所涵盖的未知未知的一些例子包括:
- 一个BI仪表板或报告没有更新,陈旧的数据几个月都不会被注意到,直到业务主管在季度末访问它并注意到数据是错误的。
- 组织代码库的一个小变化,导致API停止收集BI仪表板中关键字段的数据。
- 意外更改JSON模式,一夜之间将50,000行变为500,000行。
- ETL、ELT或反向ETL发生了意外更改,导致一些测试无法运行,导致数据质量问题在几天内未被注意到。
- 一直运行数据管道的数据测试环节,但最近没有更新,从而不能反映当前业务逻辑。
总而言之,数据观察与测试不同,而且比测试更有效,因为它提供端到端覆盖,可扩展,并且提供血缘关系用于分析各类影响因素。
工具和技术
- 数据质量管理工具
像 Apache Griffin、Great Expectations 等工具可以帮助定义和监控数据质量规则。它们允许数据工程师设定质量指标和期望,然后自动检查数据是否符合这些标准。例如,Great Expectations 可以通过简单的代码定义数据期望,如 “期望这个数据表中的每一行都有一个非空的客户 ID 字段”,然后在数据处理过程中自动检查并报告不符合期望的情况。
- 监控和告警系统
例如 Prometheus 和 Grafana 的组合,可以用于监控数据管道的性能指标。Prometheus 收集各种指标数据(如数据流量、延迟等),Grafana 则用于将这些数据可视化展示,并设置告警规则。当数据管道的某个性能指标超出设定的阈值时,能够及时发出告警,通知相关人员进行处理。
- 元数据管理系统
像 Apache Atlas 这样的元数据管理工具可以用于存储和管理数据血缘信息。它能够记录数据的来源、处理过程等元数据,并提供查询和可视化功能,方便数据工程师追踪数据的历史和流向。