将应用程序和数据复制到池节点
Azure Batch 支持通过多种方式将数据和应用程序获取到计算节点,以便在任务中使用它们。
用户可根据文件或应用程序的范围来选择方法。 运行整个作业可能都需要数据和应用程序,因此需要将它们安装到每个节点上。 有些文件或应用程序可能只是特定任务需要。 还有一些可能需要为了作业而安装,但并不需要在每个节点上都安装。 Batch 为上述每种场景都提供了相关工具。
需要确定文件的范围,即需要文件的是池、作业还是任务。 范围设为池的文件应使用池应用程序包或启动任务。 范围设为作业的文件应使用作业准备任务。 范围设在池或作业级别的文件的一个很好的例子就是应用程序。 范围设为任务的文件应使用任务资源文件。
对于需要在池中每个节点上都安装的应用程序或数据,请使用池启动任务资源文件。 结合使用这种方法以及应用程序包或启动任务的资源文件集合,才能执行安装命令。
例如,可以使用启动任务命令行来移动或安装应用程序。 此外,也可以在 Azure 存储帐户中指定文件或容器的列表。 有关详细信息,请参阅 REST 文档中的 Add#ResourceFile。
如果池中运行的每个作业运行的都是必须先使用 .msi 文件安装的应用程序,则需要将启动任务的“等待成功”属性设置为“true”。 有关详细信息,请参阅 REST 文档中的 Add#StartTask。
对于需要在池中每个节点上都安装的应用程序或数据,可考虑使用应用程序包。 没有与应用程序包关联的安装命令,但你可使用启动任务来运行任何安装命令。 如果应用程序无需安装或者包含大量文件,则可使用此方法。
当有大量文件时,应用程序包非常有用,因为它们可以将许多文件引用组合到一个小型有效负载中。 如果尝试将 100 个以上单独的资源文件包含到一个任务中,Batch 服务可能会遇到单任务内部系统限制。 当有同一应用程序的多个不同版本并需要在它们之间进行选择时,应用程序包也很有用。
扩展是小型应用程序,可以简化 Batch 计算节点上的预配后配置和设置。 创建池时,可以选择一个支持在预配的计算节点上安装的扩展。 之后,扩展就可执行其预期操作。
对于作业运行必须安装但无需安装到整个池的应用程序或数据,可考虑使用作业准备任务资源文件。
例如,如果池中包含许多不同类型的作业,但只有一种类型的作业运行时需要 .msi 文件,则将安装步骤放到作业准备任务中比较合适。
当应用程序或数据仅关乎单个任务时,适合使用任务资源文件。
例如,你有五个任务,其中每个任务处理不同的文件,然后将输出写入到 Blob 存储。对于这种情况,应在任务资源文件集合中指定输入文件,因为每个任务具有自己的输入文件。
由于用户可以控制 Azure Batch 节点并可运行自定义可执行文件,所以可以从任意数量的自定义源提取数据。 请确保 Batch 节点已连接到目标,并且你拥有节点上该源的凭据。
下面是将数据传输到 Batch 节点的几种方法示例:
- 从 SQL 下载数据
- 从其他 Web 服务/自定义位置下载数据
- 映射网络共享
切记,Blob 存储具有下载可伸缩性目标。 对单个 Blob 来说,Azure 存储文件共享可伸缩性目标是相同的。 大小会影响所需的节点数和池数。
- 了解如何通过 Batch 使用应用程序包。
- 详细了解使用节点和池。