管理群集中的作业执行
qmap的Python项目详细描述
qmap是一个旨在快速运行类似作业集合的工具。 很容易并行。 它可以独立运行,也可以使用不同的hpc调度程序(slurm、sun grid 发动机和LFS)。
qmap包含5种不同的工具:
- run:使用扩展资源执行命令
- template:创建作业映射文件
- submit:从映射文件提交作业
- 重新附加:重新附加到以前的qmap执行
- info:探索作业的元数据
警告
qmap使用使用subprocess模块的shell python标准库的。通过使用 shell=True,这可能导致外壳注入漏洞。 有关详细信息,请参见https://docs.python.org/3/library/subprocess.html#security-considerations
文档位于:https://qmap.readthedocs.io/en/latest/
工具
- qmap运行
使用更多资源执行命令以维护工作环境
qmap run -m <memory> -c <cores> "<command>"
- qmap模板
创建一个与qmap submit一起工作的jobs map file。
qmap template "<command with wildcards>" -f <jobs map file>
创建的文件使用当前加载的Easy Build模块 以及当前conda环境作为作业预命令[1] 如果没有明确提供。
job命令是扩展后的所有组合:
{{list,of,items}}: comma separated list of items {{file}}: all lines in file *, ?, [x-y]: wildcards in Python’s glob module 格式为{{...}}的通配符在第一阶段展开 和glob通配符稍后将展开。
作为附加功能,上述任何组都可以命名为 {{?<name>:...}}并使用{{?=<name>}}替换任何位置。
注意
要命名glob通配符,它们应该只在组中。 例如{{?myfiles:*}}
- qmap提交
从ajobs map file执行所有作业
qmap submit -m <memory> -c <cores> <jobs map file> --logs <logs folder> --max-running <#>
qmap submit已实现,以将一组作业提交到群集执行 控制他们。 它充当工作负载管理器和用户之间的一层,防止她/他 一次提交大量作业(可能会阻止未来用户)。 可以提交给工作负载管理器的作业数由 –max running标志。
警告
如果qmap submit已关闭,则尚未提交给 工作负载管理器永远不会。 因此,建议在屏幕中运行它。
此外,在指定存储带有–logs标志的日志的文件夹中 用户可以找到关于每个作业执行的重要信息,以及 来自stdout和stderr的日志。
此工具的另一个功能是可以使用对作业进行分组-分组 选项此选项使用传递的值作为适合每个作业的命令数。 因此,几个命令可以作为同一个作业的一部分,一个接一个地执行。 对于使用相同分配的“小”作业,此选项可能很有趣。 如果任何命令失败,关联的作业将失败。
最后,任何作业命令都可以包含以下几个值 在处决前被替换。这些值表示作业参数 此外,每个作业的唯一标识符。
${QMAP_LINE}: identifier of the line the job command has in the input file ${QMAP_CORES}: cores for the execution - qmap重新连接
关闭qmap submit执行后,您可以 从其日志目录重新连接
qmap reattach --logs <logs folder>
注意
如果在上一次执行中有作业尚未提交给工作负载管理器 qmap reattach可以提交它们,但是除了no-console接口之外,执行将暂停。
- qmap信息
qmap submit为每个作业生成一个包含元数据信息的文件。 qmap info旨在探索它们并检索 请求的数据。信息以json格式存储,并且 用户可以请求任何字段:
qmap info --logs <logs folder> <field 1> <field 2>.<subfield 1> ...
此外,–status选项可用于筛选作业 按其状态(完成失败其他挂起运行未提交全部)。
如果不传递任何字段,则返回值 是作业的输入命令。 此功能可用于生成新作业文件原始作业文件的子集。
作业映射文件
此文件包含要执行的命令列表,以及 在每个作业之前和之后执行的命令(例如加载简易构建模块或conda环境)。 文件格式为:
[pre] # command to be executed before any job [post] # command to be executed after any job [params] # parameters for all the jobs cores = 7 memory = 16G [jobs] job command job command
安装
qmap依赖于python>;3.5和一些外部库。
您可以直接从我们的github存储库安装它:
pip install git+https://github.com/bbglab/qmap.git