2017-10-09 120 views
0

我有一个文件共享(你猜对了)很多文件。我想创建一个批处理作业,它将挂载这个文件共享和读入每个文件并且并行处理每个文件(每个作为批处理任务)。批处理任务是否可以读取文件共享上的文件?

这是可能的与蟒蛇和蔚蓝批次?展示如何做到这一点的任何教程都很棒。

+0

您可以澄清,如果您试图安装Azure文件共享和哪个操作系统/平台? – fpark

+0

操作系统将是ubuntu,是的,由azure批量创建的VM /节点将需要安装文件共享。 – pookie

+0

通过Azure文件共享我的意思是[Azure文件存储](https://azure.microsoft.com/en-us/services/storage/files/)正确。你在装这个吗? – fpark

回答

0

您可以通过以下两种方法之一来完成此操作。请注意,以下内容仅适用于Linux。 Windows用户需要使用User Identities稍微不同的方法。

  1. 使用池的StartTask对象在计算节点级别挂载文件共享。请参阅Azure File documentation关于如何在Linux上为您的发行版执行此操作。启动任务可以是:
    • 直接挂载文件共享,即调用mount -t cifs ...。这将通过重新启动工作,因为StartTask每次重新启动时都会重新运行。
    • 修改/etc/fstab以将条目添加到自动安装。请注意,您必须使此操作具有幂等性,因为StartTask每次重新启动时都会重新运行。
  2. 使用作业的JobPreparationTask对象在作业级别挂载文件共享。您在此处指定的命令仅对该作业下的每个任务运行一次。您应该也可以指定作业的清理份额JobReleaseTaskunmount

确保,在任何你选择的路径,即适当抬高权限给该过程可以进行安装或修改/etc/fstab任务(通常是超级用户)等。

如果使用第一个选项,那么挂载将始终可用于计算节点,无论是否需要它的作业都在该节点上运行。每种方法都有优点和缺点。您的要求,无论是合规还是技术(例如)都可以帮助您选择。

+0

太棒了,那么文件共享的安装位置在哪里?例如,如果我使用了linux命令并告诉它挂载到'/ home/mounts/data',那么FS会被挂载到'data'中吗? – pookie

+0

批处理计算节点不会更改/拦截装入命令。它在系统上运行,就好像你在交互中一样。只要目标目录存在(如果不存在,在安装之前需要首先执行'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

+0

谢谢,使用'$ AZ_BATCH_NODE_SHARED_DIR'是个好主意。我会尝试一下。 – pookie

相关问题