批处理任务是否可以读取文件共享上的文件?
我有一个文件共享(你猜对了)很多文件。我想创建一个批处理作业,它将挂载这个文件共享和读入每个文件并且并行处理每个文件(每个作为批处理任务)。批处理任务是否可以读取文件共享上的文件?
这是可能的与蟒蛇和蔚蓝批次?展示如何做到这一点的任何教程都很棒。
您可以通过以下两种方法之一来完成此操作。请注意,以下内容仅适用于Linux。 Windows用户需要使用User Identities稍微不同的方法。
- 使用池的StartTask对象在计算节点级别挂载文件共享。请参阅Azure File documentation关于如何在Linux上为您的发行版执行此操作。启动任务可以是:
- 直接挂载文件共享,即调用
mount -t cifs ...
。这将通过重新启动工作,因为StartTask每次重新启动时都会重新运行。 - 修改
/etc/fstab
以将条目添加到自动安装。请注意,您必须使此操作具有幂等性,因为StartTask每次重新启动时都会重新运行。
- 直接挂载文件共享,即调用
- 使用作业的JobPreparationTask对象在作业级别挂载文件共享。您在此处指定的命令仅对该作业下的每个任务运行一次。您应该也可以指定作业的清理份额JobReleaseTask至
unmount
。
确保,在任何你选择的路径,即适当抬高权限给该过程可以进行安装或修改/etc/fstab
任务(通常是超级用户)等。
如果使用第一个选项,那么挂载将始终可用于计算节点,无论是否需要它的作业都在该节点上运行。每种方法都有优点和缺点。您的要求,无论是合规还是技术(例如)都可以帮助您选择。
太棒了,那么文件共享的安装位置在哪里?例如,如果我使用了linux命令并告诉它挂载到'/ home/mounts/data',那么FS会被挂载到'data'中吗? – pookie
批处理计算节点不会更改/拦截装入命令。它在系统上运行,就好像你在交互中一样。只要目标目录存在(如果不存在,在安装之前需要首先执行'mkdir'),则安装应该可以工作。您应该调查安装到[已知的计算节点位置](https://docs.microsoft.com/zh-cn/azure/batch/batch-compute-node-environment-variables#command-line-expansion-of-environment - 变量)(例如'$ AZ_BATCH_NODE_SHARED_DIR/data'),这可能有助于您的任务而不是硬编码位置。 – fpark
谢谢,使用'$ AZ_BATCH_NODE_SHARED_DIR'是个好主意。我会尝试一下。 – pookie
您可以澄清,如果您试图安装Azure文件共享和哪个操作系统/平台? – fpark
操作系统将是ubuntu,是的,由azure批量创建的VM /节点将需要安装文件共享。 – pookie
通过Azure文件共享我的意思是[Azure文件存储](https://azure.microsoft.com/en-us/services/storage/files/)正确。你在装这个吗? – fpark