如何使用Achelous qsub 运行Container 作业
在实际生物信息生产或科研工作中,存在着一些软件或工具需要临时进行执行的情况。此时使用WDL 语言通过镜像进行执行,显然步骤相对过于繁琐。Achelous 提供了模拟qsub 功能,可以使普通用户通过命令行脚本,提交Docker 容器化运行程序的功能。在最大程度上降低了使用Docker 技术的门槛。
步骤1:准备脚本
此应用比较典型的场景为:基因组建立比对所需索引。下面以bwa index为例,编写对应的脚本
#!/bin/bash
/bio/bwa/bwa index -a is /autofs/vol6/qsub-test/chrM.fa.gz
需要注意
- 脚本第一行
#!/bin/bash
不能缺少 - 脚本中所有的路径均为绝对路径。若存在相对路径,需要在脚本中添加
cp
或mv
将文件转移至存储路径下。 - 保存的脚本需要保存至存储路径下。
步骤2: 任务投递
采用以下命令进行任务的投递
[user@Cc7Apc ~] qsub -l cpu=1:mem=512M:gpus=1 -i bwa:base --vol /var/log/:/var/test/log --vol /autofs/vol6/ /autofs/vol6/qsub-test/bwa-index.sh
Job (id: 47, name: nil) has been submitted
其中:
-l
为程序运行所需要的资源限制-i
为程序运行所需的镜像名称--vol
为目录的挂载位置;支持两种类型的挂载方式:i) 指定挂载点形式,如:/var/log/:/var/test/log
/var/log/
为物理机目录;/var/test/log
为容器内挂载目录
ii) 默认挂载形式,如: /autofs/vol6/ 在此模式下,Achelous 系统会自动将指定目录挂载至容器的同名目录下。
- /autofs/vol6/yawei/test/wdtest.sh 为所投递的脚本。
- 结果中id 为作业标识,后续用于查看作业状态。
步骤3: 结果查看
用户可以通过以下命令查询作业运行状态
[user@Cc7Apc ~] qstat -j 47 ## 47 为作业编号
==============================================================
job_number: 47
state: finished
state_reason: Container exited with status 0
exec_file: job_scripts/paladin-task.715d5b71-54ce-43e9-815a-1b1ce221728c
submission_time: Mon Jun 7 14:50:10 CST 2021
deadline: Mon Jun 7 14:50:13 CST 2021
owner: user
uid: 10844
group: user
gid: 10844
sge_o_home: /home/user
sge_o_log_name: user
sge_o_path: /home/user/.cargo/bin:/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/var/lib/snapd/snap/bin:/usr/local/go/bin:/home/user/.local/bin:/home/user/bin
sge_o_shell: /bin/bash
sge_o_workdir: /home/user
sge_o_host: Cc6Apc
execution_time: Mon Jun 7 14:50:12 CST 2021
account: user
stderr_path_list: /home/user/bwa-index.sh.e47Cc1Apc
mail_list: user@Cc1Apc
job_name: user.paladin-task.qHBc2899
stdout_path_list: /home/user/bwa-index.sh.o47Cc1Apc
priority: 1
env_list: TERM=NONE
script_file: /autofs/vol6/qsub-test/bwa-index.sh
binding: NONE
job_type: NONE
Starve Timeout: 1h 0m 0s
usage 1: cpu=1.000000, mem=512.00000 MB, io=00000 GB, vmem=N/A, maxvmem=N/A
binding 1: NONE
scheduling info: (Collecting of scheduler job information is turned off)
==============================================================
[user@Cc1Apc ~]$ ll /autofs/vol6/qsub-test/
total 37
-rw-rw-r-- 1 user user 76 Jun 7 14:49 bwa-index.sh
-rwxr--r-- 1 user root 5537 Jun 7 14:47 chrM.fa.gz
-rw-r--r-- 1 user user 10 Jun 7 14:50 chrM.fa.gz.amb
-rw-r--r-- 1 user user 35 Jun 7 14:50 chrM.fa.gz.ann
-rw-r--r-- 1 user user 16648 Jun 7 14:50 chrM.fa.gz.bwt
-rw-r--r-- 1 user user 4144 Jun 7 14:50 chrM.fa.gz.pac
-rw-r--r-- 1 user user 8336 Jun 7 14:50 chrM.fa.gz.sa
注意 为了保证存储上数据的安全,用户在通过qsub 功能进行docker 作业提交时,只能对自己名下的目录或文件进行修改。