runsge集群和本地任务

runsgerunbatch的副本命令,和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可用于任务分析完成之后结果汇总,回传,或者结果发送等应用场景,在任务分析完成之后主动发送结果,不需要额外单独开发被动轮询接口。