持久性作业和任务输出

在 Azure Batch 中运行的任务可能在其运行时产生输出数据。 通常需要存储任务输出数据,以便作业中的其他任务和/或执行该作业的客户端应用程序进行检索。 任务可向 Batch 计算节点的文件系统写入输出数据,但当重置节点映像或节点离开池时,节点上的所有数据都会丢失。 任务可能还具有文件保留期,超过此保留期后,系统将删除该任务创建的文件。 出于这些原因,请务必将以后需要的任务输出保留到数据存储,如 Azure 存储

有关 Batch 中的存储帐户选项,请参阅 Batch 帐户和 Azure 存储帐户

任务输出的一些常见示例包括:

  • 任务处理输入数据时创建的文件。
  • 与任务执行关联的日志文件。

本文介绍用于持久保存任务输出的各个选项。 了解如何将 Azure Batch 任务和作业的输出数据保存到 Azure 存储或其他存储。

保存输出的选项

有多种方式可保存输出数据。 为方案选择最佳方法:

批处理服务 API

可使用批处理服务 API 保存输出数据。 将任务添加至作业时将任务集合添加至作业时,请指定用于任务数据的 Azure 存储输出文件。

有关详细信息,请参阅使用 Batch 服务 API 将任务数据保存到 Azure 存储

批处理文件约定库

批处理文件约定标准是用于命名 Azure 存储任务输出数据的可选约定集。 该标准基于作业和任务的名称提供文件目标容器和 Blob 路径的命名约定。

使用文件约定标准来命名输出数据文件是可选的。 可以改为选择命名目标容器和 Blob 路径。 如果使用文件约定标准,则可以在 Azure 门户中查看输出文件。

如果使用 C# 和 .NET 生成批处理解决方案,则可以使用适用于 .NET 的批处理文件约定库。 此库将输出文件移动到 Azure 存储,然后根据皮文件约定标准命名目标容器和 Blob。

有关详细信息,请参阅使用适用于 .NET 的批处理文件约定库将作业和任务数据保存到 Azure 存储

批处理文件约定标准

如果使用的是除了 .NET 以外的语言,则可以在自己的应用程序中实现批处理文件约定标准。 在以下情况下使用此方法:

  • 需要使用常见命名方案。
  • 需要在 Azure 门户中查看任务输出。

自定义文件移动解决方案

也可实现自己的完整文件移动解决方案。 在以下情况下使用此方法:

  • 想要将任务数据保存到除 Azure 存储之外的数据存储。 例如,需要将文件上传至数据存储,如 Azure SQL 或 Azure DataLake。 创建自定义脚本或可执行文件,将其上传到该位置。 然后,在运行主要可执行文件后,在命令行上调用自定义脚本或可执行文件。 例如,在 Windows 节点上,调用 doMyWork.exe && uploadMyFilesToSql.exe
  • 需要执行检查点检查或提前上传初始结果。
  • 想要维持对错误处理的具体控制。 例如,如果需要使用任务依赖关系操作根据特定的任务退出代码来执行某些上传操作。

设计注意事项

设计批处理解决方案时,请考虑以下因素。

计算节点通常是暂时性的,尤其是在启用了自动缩放的批处理池中。 只能从任务中查看输出:

  • 当运行任务的节点存在时。
  • 在为任务设置的文件保留期内。

在 Azure 门户中查看批处理任务并选择“节点上的文件”时,会看到该任务的所有文件,而不仅仅是输出文件。 若要直接从池中的计算节点检索任务输出,需要此节点上的文件名及其输出位置。

如果要使任务输出数据更长,请将任务配置为将其输出文件上传到数据存储。 建议使用 Azure 存储作为数据存储。 在批处理服务 API 中集成了将任务输出数据写入 Azure 存储的操作。 可使用其他持久的存储选项来保存数据。 但是,你需要自行为其他存储选项编写应用程序逻辑。

若要查看 Azure 存储中的输出数据,请使用 Azure 门户,也可以使用 Azure 存储客户端应用程序,例如 Azure 存储资源管理器。 记下输出文件的位置,并直接跳到该位置。

后续步骤