深入DataOps:现代数据流水线的精髓

by June 2021-10-12

DataOps是一门快速发展的学科,旨在规范化管理大多数公司不规则的数据流水线。

流水线的从前和现在以往,只有两种数据流水线:

  • 一个是数据仓库,支持一般用途的报告和分析行为,
  • 另一个是财务报告流水线,为投资者和董事会提供审计数据。

当今,随着自助分析和机器学习的发展,公司拥有的流水线数量和拥有数据分析师、数据科学家和处理大量数据的应用程序一样多。每个数据流水线都需要专门的数据集和数据访问权限来生成数据内容。从好的方面说这就是流水线的野蛮生长(甚至是暴力生长),但是带来的管理问题也不容小看。

如果没有DataOps,每个数据流水线都将成为一个数据孤岛,与其他数据流水线、数据集和数据生产者几乎没有任何关系。没有协作或重用,有的只是大量的人工操作和重复工作,大量的错误和数据缺陷,及缓慢的交付。商业用户除了信任自己的数据外不信任任何数据,而且许多决策是在没有任何数据或没有足够数据的情况下做出的,(他们)不能再等了。

DevOps扮演过的救援者的角色

其实软件工程领域一直受到类似问题的困扰,直到它引入了敏捷开发和 DevOps 技术。如今,如果不是每小时或更快的部署时间,DevOps 的先驱们,如亚马逊、谷歌和LinkedIn,也难以按天进行软件部署发布。而这个速度在几年前则是难以想象的。令人惊讶的是,尽管软件开发周期时间加快,软件错误和缺陷却减少了。容器化和微服务的出现将进一步加速和强化软件交付周期的缩短。简而言之,DevOps 以更低成本换取更高质量、更快速度的代码。

现在开始的DataOps

首先是数据带来的挑战。数据领域看到打破自身僵局的机会,(数据领域的)专家们正在抓紧利用DevOps原则。DevOps管理代码、工具和基础架构之间的相互作用,以加快应用程序功能的交付,而DataOps添加了第四个元素:数据。数据正如其他三个元素一样难以控制。在每个流水线中,必须对数据进行标识、捕获、格式化、标记、验证、分析、清理、转换、组合、聚合、保护、分类、管理、移动、查询、可视化、分析和操作。 随着组织从数百个来源收集越来越多的数据,这些任务变得越来越复杂。

然后是工具和人员。借鉴了理论之后,现在需要专门的工具来管理每个任务。每个工具都是针对不同类型的用户:

  • 从传统的ETL / ELT,数据质量和主数据管理工具到数据目录、数据准备、数据治理产品,
  • 再到报表、数据可视化和数据科学工具,
  • 从IT部门的系统工程师和数据库管理员,
  • 到BI团队中的数据工程师,数据管理员和报表开发人员,
  • 再到数据分析师、数据科学家和业务部门的数据消费者。

协调所有这些工具、技术和人员是一项巨大的工作,特别是在拥有规模庞大的开发团队,来自数百个来源的大量数据以及该领域的大量数据分析师和数据科学家的大型组织中。这就是DataOps的来历。

DataOps框架

定义DataOps如同将水母钉在墙上一样困难(作者的原话直译,其实是一个典型的美式比喻)。它具有许多移动的部件和流程。下图(图1)试图绘制DataOps环境的关键组件的简化图。为了简化此环境,一些组织更喜欢从单个供应商那里采购所有组件,例如大型软件或云提供商(例如Microsoft、Amazon、Oracle、IBM)或大数据工程专家工具(例如Infoworks)。有些人则喜欢使用编排工具和监控工具将开源组件和商业组件结合在一起。

DataOps组件

数据流水线

图1中间的箭头表示典型的数据流水线,该流水线将源数据通过三个阶段来处理:数据提取、数据工程和数据分析。这些流水线代表一个数据供应链,可以处理、优化和丰富数据,供各种业务用户和应用程序使用。一个流水线可能会填充财务使用的OLAP多维数据集;一个可能将集成的客户数据实时传递到Web应用程序;另一个可能会为数据科学家创建一个细分的原始数据池,建立广告活动反应分析模型。

数据技术

数据流水线底层主要是用于提取、精炼和分析数据的技术,主要分为:数据捕获、数据集成、数据准备和数据分析。这些技术获得了巨大的媒体关注,也产生了不少成功的公司,每年通过销售数据产品产生数十亿美元的收入。不幸的是,大家对单项数据技术的比较重视,但是协调和驱动这些技术的数据处理流程反而得不到重视,虽然在很多时候其实数据处理流程更重要。(详情参见下面的“数据处理”)

如今,随着组织从批处理架构转向流式架构以支持大数据和物联网,数据捕获已成为热门技术类别。数据集成已从传统的数据仓库项目演变为现在的主流。数据准备是一项新技术,旨在帮助数据分析师建模自己的数据集,理想情况下可利用IT管理的存储库(例如数据湖)中的数据。最后。数据分析通过为业务用户提供查询、分析、可视化和共享的工具来完成整个数据处理周期。

团队和交接   IT部门通过采集和集成数据,创建通用的、面向主题的数据文件来启动数据供应链。然后,数据工程团队将对数据进行建模,以满足特定的业务需求和用例。最后,业务用户查询和分析目标数据集并创建报告、仪表板和预测模型。尽管本质上是线性的,但该循环是以迭代模式进行,其中包含许多必须存储、跟踪和管理的中间步骤和artifacts。

数据存储也是支持数据技术和团队的一个核心底层技术,包括运行在在高性能列式存储上运行的数据仓库,数据湖和数据沙箱。在数据存储层之下是一个基于云、虚拟化、弹性和大规模并行计算的基础架构。

数据处理

一个组织,如果试图仅使用技术来构建和管理数据流水线,注定是要失败的。它需要定义明确的过程和方法来构建、更改、测试、部署、运行以及跟踪新功能和修改后的功能。还需要管理这些过程中生成的所有artifacts,包括代码、数据、元数据、脚本、指标、维度、层次结构等。而且,它需要协调数据技术并监控开发、测试和生产过程。这需要作业调度、事件触发器、错误处理和性能管理,以满足服务级别协议(SLA)。

开发和部署  前两个阶段(开发和部署)通过敏捷和DevOps方法得到了很好的定义。在这里,需要实现的目标是,与自组织团队、业务驱动团队一起开发新功能时,这些团队可以在短短的时间内(通常是两周或更短时间)构建经过全面测试并实现功能的代码。为了同步开发,团队需要将代码存储在应用版本控制的中央存储库中,以避免覆盖和重复工作。团队还需要使用技术和工具对代码进行无缝合并,并以最小延迟将代码移入生产环境(持续集成和持续部署CI / CD)。工具和系统配置集中存储并维护在安装库中。

不管是构建新的应用程序或用例,还是修改现有的用例,有很多工具都可以支持开发和部署过程。例如:Git是用于存储代码和控制版本的开源存储库,而Jenkins是支持CI / CD流程(即合并和部署代码)的开源工具。在数据世界中,有许多针对特定类型流水线的开发和部署工具,包括数据仓库开发(即数据仓库自动化工具)和机器学习模型。

编排  

DataOps的核心和灵魂在于编排。数据在流水线流通时,数据的移动、处理和完善需要具有众多依赖关系的复杂任务工作流。一些比较有名的数据编排工具如:开源项目Airflow, DataKitchen,StreamSet和Microsoft Azure的DataFactory。一个优秀的数据编排工具可以调度数据开发项目中的所有四个组成部分:代码、数据、技术和基础架构。在DataOps环境中,编排工具使用容器管理软件(例如Kubernetes)来启动和调度支持这些流程的容器,从而实现自动配置和释放供应开发、测试、预生产和生产环境。

在数据领域中,编排工具提供了新的开发/测试/生产环境。但是它们需要对在流水线中不同阶段之间移动的数据负责,并实例化操作数据的数据工具。开始工作后,他们监控进度并将错误及告警归类到相应的界面。例如,在云环境中,DataOps编排工具可能会执行以下操作:

  • 提供平台:如数据库、存储容量、访问控制列表、性能管理工具、数据目录、日志服务器和监控工具。
  • 触发提取作业,监控作业(批量或流式),检测故障并恢复功能,监控容量并在需要时触发系统资源自动缩放。
  • 触发数据质量管理作业,分析和验证数据,检查数据血缘。
  • 快速启动数据转换,当数据集获得明确的健康清单,编排工具可能会启动转换代码以合并数据、格式化数据、聚合数据元素。
  • 触发BI工具以将数据下载到其自己的列式存储中或发送通知,告知已准备好进行查询和分析的新数据集。
  • 监控工作流,工作流成功完成后,程序会向相应的人员发出提醒,并释放分配的资源。

持续测试和监控

DataOps环境的最后组成部分是测试环境。理想状况下,团队在开发任何代码或功能之前先进行测试。然后,编排工具在流水线中每个阶段的开始和结尾运行测试。在启动和集成时,在上游捕获错误和问题可以节省大量时间,金钱,减少麻烦。

如:

  • 「Great Expectations」和「ICEDQ」之类的工具支持持续测试环境。相关功能是对工具、应用程序和基础架构的持续监控,以确保最佳的运行时长和性能。 
  • 「Unravel」则是面向大数据处理的应用程序性能管理(APM)的新产品之一。

使用测试作为基本构建版块的团队的开发速度要比不这样使用的开发团队快。对于大多数想在开始之前不进行测试的情况下深入项目的开发人员来说,这起初是违反直觉的。但是一旦测试到位,开发人员就可以在难以解决的代码错误之前迅速发现问题。通过持续的测试和监控,团队可以设定性能目标,衡量其输出并不断减少开发周期时间并提高质量。

结语

DataOps的目标是让数据流水线和应用程序的开发更严谨、可重用及自动化。DataOps可以帮助数据团队从产生数据孤岛、数据积压和无休止的质量控制问题的环境中解脱出来,进入敏捷、自动化和加速的数据供应链环境,从而持续提高并为企业带来更多价值。

留言

评论

${{item['author_name']}} 回复 ${{idToContentMap[item.parent] !== undefined ? idToContentMap[item.parent]['author_name'] : ''}} · ${{item.date.slice(0, 10)}} 回复

暂时还没有一条评论.