我正在寻找有关流程编排最佳实践的建议。为了提供一些上下文,我有以下任务需要编排:
- 纵向扩展 Azure Batch 池以提供足够的节点
- 执行调用服务器以检索任务列表的自定义 .Net 代码。这些任务每天都在变化。将这些任务排队到批处理池上。
- 在批处理池上执行每个任务(自定义 .Net 代码)。每个任务都会在 Azure 存储帐户中创建数据。
- 缩减批处理池,因为它不再需要。
- 启动/纵向扩展数据仓库
- 将数据批量导入数据仓库(预计结合使用 PolyBase 和 BCP)。
- 聚合数据并将输出生成到 Azure 存储帐户。
- 暂停/缩减数据仓库
我目前正在将数据仓库与运行手册进行比较以执行上述操作。
我发现 Runbook 在设计和运行时的可视化方面非常原始。
我发现数据仓库在视觉上更美观。然而,数据切片似乎是矫枉过正。我只是希望这个过程在每天早上 8 点执行。我不希望它在过去几天内试图执行(例如,如果我修改模板)。我希望数据仓库也能沿着活动管道更好地处理故障/恢复。
我应该在这里考虑其他方法/建议吗?
谢谢 大卫
这是一个相当广泛的问题,所以我会提供一个广泛的答案......
Azure 数据工厂 (ADF) 当然可以执行上述列表中所需的大部分操作,但有一些例外/调整,如下所示。
批处理计算池缩放。这需要使用自动缩放功能在服务中本地处理,并传递命令来处理此问题。ADF 中没有直接设置的活动。
在第 3 点和第 4 点中提到的自定义 .Net 代码。可以将这些活动编写为传递给批处理服务执行的 ADF 自定义活动。因此,允许 ADF 处理这些 DLL 等,而不是让其他东西创建批处理任务,而 ADF 只是执行它们。ADF将处理所有这些问题。
有关创建自定义活动的详细信息,请参阅:https://www.purplefrogsystems.com/paul/2016/11/creating-azure-data-factory-custom-activities/
对于数据仓库,ADF 具有开箱即用的功能来执行查询并允许将参数传递给存储过程等。
最后,对于 DW 缩放和暂停,我认为需要在此处使用 Azure 自动化。我不知道 ADF 中有任何内容可以提供这种级别的控制,除非您再次打破 .Net。
希望这能指导你如何进步。