runsge集群和本地任务
runsge
是runbatch
的副本命令,和runbatch
一样的配置和使用,参数和帮助可直接参照runbatch阿里云批量计算,通常对于集群和本地任务管理用runsge
命令,对于阿里云批量计算任务用runbatch
命令。
runsge参数配置
输入命令runsge --help
可查看参数配置,各参数介绍如下:
参数 | 描述 |
---|---|
-h/--help | 打印帮助信息并退出 |
-q/--queue | 使用SGE集群运行任务时指定的节点队列名,默认["all.q"] |
-m/--memory | 任务使用的内存资源申请,默认1,单位G |
-c/--cpu | 任务使用的cpu资源申请,默认1个cpu |
-wd/--workdir | 任务提交时的工作目录,默认为当前目录 |
-N/--jobname | 任务提交的任务名称,默认为"job"+当前pid号 |
-lg/--logdir | 任务运行时,各任务的日志输出文件夹。 |
-om/--out-maping | 使用batchcompute云服务时可用,若需要将输出结果保存,须指定保存的OSS路径 |
-n/--num | 允许同时运行的最大任务数,默认为1000 |
-s/--startline | shell脚本中,从第几行开始运行,默认第0行 |
-e/--endline | shell脚本中,从第几行开始运行,默认最后一行 |
-g/--groups | shell脚本中,指定行数为一个组,作为一个单独的任务,默认1行 |
-d/--debug | 程序输出日志级别debug,默认info级别 |
-l/--log | 程序输出日志文件,默认屏幕输出 |
-r/--retry | 任务运行失败之后,重新投递次数,默认0,即不进行重投 |
--init | 所有任务开始之前运行的命令。若有命令,则命令需要用引号引用。init命令默认强制本地运行 |
--call-back | 所有任务结束之后运行的命令。若有命令,则命令需要用引号引用。call-back命令默认强制本地运行 |
--mode | 指定任务运行方式,可选[sge,local,localhost,batchcompute] ,默认为sge投递。batchcompute代表阿里云上投递,local和localhost代表本地运行,sge代表SGE集群运行 |
--access-key-id | OSS访问id,当使用阿里云投递时使用,若不传入该参数,会从配置文件中读取,传入时,会覆盖配置文件中的指定 |
--access-key-secret | OSS访问密钥,当使用阿里云投递时使用,若不传入该参数,会从配置文件中读取,传入时,会覆盖配置文件中的指定 |
--region | 当使用阿里云投递时,指定的云主机所在区域,默认BEIJING |
-ivs/--retry-ivs | 任务错误后,重投的等待时间,单位秒,默认2秒 |
-ini/--ini | 程序运行的配置文件,当使用阿里云投递时,可以传入指定配置文件。默认配置文件路径为:$HOME/.runjobconfig 或软件安装路径下的runjobconfig 文件,默认路径可通过runbatch -config 查看 |
-config/--config | 打印配置文件和参数信息并退出 |
--strict | 强拆退出模式,一旦有一个任务运行错误,则销毁全部正在运行的任务,并退出程序 |
-v/--version | 打印当前软件版本并退出 |
-j/--jobfile | 指定需要运行的shell脚本文件,脚本中每一行命令即作为一个任务投递 |
shell任务格式
runsge批量投递任务,会将shell脚本中的每一行命令作为一个任务并行投递到计算资源中。
shell脚本格式如下:
echo hello // -c 1 -m 1 --mode sge -q all.q
echo word
wait
echo end
每一行会作为一个任务进行投递,每个任务支持任务资源限定,不限定资源则使用参数传入的资源。
wait
会阻塞当前任务投递过程,同时参数--num
也会限定当前最大运行的任务数。需要注释的行可使用
"#"
。
任务使用资源
shell任务通过参数
--cpu
和--memory
限定程序运行的资源申请。脚本中每行任务也可以通过
//
符号来表示本任务的资源申请,后面可以添加该行任务的参数选项,用以覆盖runsge参数配置中的部分选项,方便更精细的设置任务运行参数,可添加的参数如下表所示,错误的参数则无法被识别到。
参数 | 描述 |
---|---|
-m/--memory | 该行任务申请使用的内存资源,在sge模式和batchcomputer模式下生效。 |
-c/--cpu | 该行任务申请使用的cpu资源,在sge模式和batchcomputer模式下生效。 |
-q/--queue | 该行任务可投递的SGE集群节点队列,多个队列用空白隔开,只在sge模式下生效。 |
-n/--jobname | 该行任务投递的任务名称,在sge模式和batchcomputer模式下生效,不要以数字开头。 |
-om/--out-maping | 该行任务投递时,需要保存的数据OSS 路径,只在batchcompute下生效。 |
--mode | 该行任务运行的方式,可选的有["sge", "local", "localhost", "batchcompute"] 。 |
localhost
运行的任务不需要指定运行资源。阿里云计算模式时,会根据指定资源自动选取合适的实例云主机。
任务依赖关系
shell任务支持简单的任务依赖,每条任务独立进行运行,没有依赖。
对于有依赖关系的任务,可以通过
wait
关键字进行任务依赖限定,当碰到单行的wait
时,会阻塞任务投递过程,等待任务全部运行完成之后才会投递后面行的任务。
callback和init
runsge支持任务初始化
init
和任务完成之后的call_back
。命令通过--init "cmd1"
和--call-back "cmd2"
,执行的命令需要用“”
,若多行命令可写到shell
脚本中通过"sh /path/your/scripts.sh"
传入。init
任务和call_back
任务都是localhost
本地运行,使用本机环境变量和路径。call_back
可用于任务分析完成之后结果汇总,回传,或者结果发送等应用场景,在任务分析完成之后主动发送结果,不需要额外单独开发被动轮询接口。