工作流数据分析(工作流编排与数据编排)
Pexels 上的Artem Podrez 拍摄的照片
W随着现代数据堆栈的兴起,业内许多工具开始将自己定位为“数据编排器”而不是“工作流编排器”。本文试图消除这些术语的歧义。我认为数据编排绰号是一个令人困惑的简写术语,工作流编排和数据流自动化更好地代表了现代数据堆栈的编排。
注意:当我在Prefect工作时,本文仅代表我的个人观点,而不是 Prefect 对该主题的官方观点。将我个人博客(而不是Prefect 博客)上发布的任何内容视为我自己对该主题的看法。
什么是工作流编排?
目录:·什么是工作流编排? ·人们说“数据编排”是什么意思? ·工作流程编排 — 像我 5 岁一样解释 ∘顺序、并发和分布式工作流程执行 ∘可扩展和优雅的故障处理 ∘混合执行模型 ·为什么“工作流程编排”比“数据编排”更容易混淆 ·结论
工作流编排意味着以尊重编排规则和业务逻辑的方式管理您的数据流。工作流编排工具允许您将任何代码转换为可以调度、运行和观察的工作流。
一个好的工作流程编排工具将为您提供连接到现有数据堆栈的构建块,并允许您:
- 在任务之间传递数据,
- 触发临时 参数化运行,
- 分配自定义(复杂)时间表,
- 当出现故障时提醒您,
- 重试并从失败中恢复,
- 通过缓存避免昂贵的重新计算,
- 并且将节省您编写防御性代码的时间,只是为了确保您的工作流程步骤以正确的顺序运行,并且您可以找出发生故障的时间(可见性)。
简而言之,好的工作流程软件可以消除负面工程。
当您考虑好的工作流程工具时,您应该考虑当出现问题时它们是如何工作的。只有当事情失败时,工作流程才有意义;它们有点像代码的保险或风险管理 。假设事情会出错 - 他们会 - 正确的工作流程工具应该可以快速简单地处理那些“错误的事情”并指导您如何解决它们。——耶利米·洛温,2020 年 5 月
人们说“数据编排”是什么意思?它们通常指的是涉及数据的工作流节点的编排。任何与数据交互的工作流节点,无论是生产数据还是消费数据,都属于这一类。
按照这个定义,“数据编排”是编排数据(或数据仓库)工作流的简写,但它仍然描述了工作流编排或数据流自动化。
工作流程编排——像我 5 岁一样解释想象一下工作流编排工具是您的个人交付服务:
- 每个订单(或购物车)都反映了您的工作流程,
- 每次交付都是一个工作流运行,
- 将东西放入购物车非常简单方便——你只需添加几个装饰器,你就可以参加比赛了,
- 在每个订单(或购物车)中,您可能有许多产品被打包到盒子中——您的任务、
- 盒子里的产品可能有不同的口味、形式和形状,它们反映了您放入购物车的内容——您希望安排什么以及如何安排,
- 风味可能反映您的数据复制作业(例如 Airbyte)、数据转换(例如 dbt)、数据清理(例如 pandas)、您的 ML 用例(例如 scikit-learn)等等。
- 您的盒子可以随心所欲地小或大- 最终是您的订单(您的工作流程设计),
- 您盒子里的产品可能来自不同的供应商,即您的数据工具,例如 dbt、Fivetran、您最喜欢的 ML 框架、您的自定义数据清理库、
- 收货地址可以是您的家庭地址(您的数据仓库)、您的假期地址(您的数据湖库)或朋友的地址(某些外部数据库、数据处理服务、微服务或应用程序)。
Pexels 上的Norma Mortenson拍摄的照片
顺序、并发和分布式工作流执行按照交付服务的类比,在编排中,您可以:
- 决定您是要一次性交付订单还是按顺序交付订单——任务的执行顺序,
- 选择您的交付类型——您可以选择标准(顺序执行)或使用特殊分布式服务的快递,例如Dask、Ray(想象多辆送货卡车),甚至使用异步并发(async )在单个线程内加速执行(a单一但更快、更高效的交付者,可以更好地进行上下文切换),
- 确定您的订单应该如何(礼物)包装——您可以选择将其打包到子流程、Docker容器、Kubernetes作业或 ECS 任务中。
工作流编排将负责交付,即执行。它将确保您的产品按要求进行包装,按正确的时间表发货,并为所有箱子使用正确的交付类型——一些包裹需要通过快递快速交付,而另一些则可以等待并按顺序执行。
扩展和优雅的故障处理一个好的交付(编排)服务的扩展性非常好。您可以同时安排多个交付,可能有数千辆卡车(甚至是货船车队)和数百万个包裹,它仍然可以让您对每个包裹的交付状态进行细粒度的可见性。
此调度服务是异步且高度可用的,可确保即使某些供应商生病或某些卡车发生故障,您的订单也能发货。在交付过程中可能会出现许多问题:
混合执行模型
- 有些盒子可能会损坏,可能需要退回,即重试或重新启动,
- 由于您当时不在家,因此可能需要重新安排整个交付时间。
良好的送货服务也尊重您的隐私,纯粹对元数据进行操作,例如您的送货地址、送货类型、包装形式等。然后它负责传输和执行(数据流),但它不能也不应该打开 检查里面有什么的盒子(你的数据)。
为什么“工作流程编排”比“数据编排”更容易混淆一个好的工作流程编排工具(您的交付服务)允许您挑选和选择您的产品,将它们放入盒子并根据需要定制您的订单,但最终它负责数据移动(交付,运输,数据流,执行),而不是关于这些框中的实际产品(您的数据)。因此,术语数据编排是一个令人困惑的简写,缺少描述数据流经系统时的实际移动的词。数据流编排、工作流编排、数据移动编排、数据处理编排和数据传输编排——所有这些都比简写的术语“数据编排”要清楚得多。
工作流程编排是关于数据流的,并确保您可以通过各种故障处理机制依赖其执行。它可以让您了解交付所需的时间。它可以为您提供所有货件更新(您的工作流程执行日志)。它可以告诉你一个盒子是否成功运送到最终收件人,但它不能直接打开它来检查里面产品的品牌、质量和产地。
借用这篇博文中的类比,编排是关于指示各种框(任务)在执行时在它们之间进行转换的箭头,而不是关于框本身(您的数据)。它应该保证您的流程和任务在正确的时间以正确的顺序以正确的并行度按预期运行。它应该防止错误和故障,并帮助您从中恢复并正确解释执行状态。
结论本文旨在消除这些术语的歧义,并让您深入了解什么是工作流编排。如果您仍有任何疑问或想进一步讨论这个话题,您可以加入 Prefect Community Slack:prefect.io/slack。有一个专门的频道#best-practices-orchestration,您可以在其中向我提问。
谢谢阅读!
,
免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。