软件特性

runjob为每个任务创建了一个任务对象,在内部维护了一个运行时任务队列,并根据用户定义的任务依赖关系,创建出任务依赖的有向无环图DAG(Directed acyclic graph)对象。可灵活控制并行运行的任务量,并及时根据任务依赖关系运行新的任务。

主要特性

  • 支持本地任务、SGE集群任务、阿里云BatchCompute任务的管理。

  • 每个任务都唯一对应一个日志文件,记录着任务的全部输出和任务运行状态。

  • 任务运行失败时可以选择是否将任务重新提交到任务队列。

  • 程序中断时重新运行,会自动跳过运行成功的任务,只运行失败或还未运行的任务。

  • 程序被kill或者终止的情况,会自动清理由程序创建出来的任务,避免计算资源的浪费。

  • 在shell脚本中的任务也支持为每行命令定义运行时使用的cpu和内存资源。

  • 支持通过参数选择只想要运行的部分任务而不是全部任务,部分运行的任务也能自动跳过已经运行成功的任务。

  • 支持自定义任务运行前或任务运行结束后的initcall_back功能。

  • ……

主要模块对象

  • class JobQueue()

    封装了运行中的任务队列,用于控制和记录任务运行。

  • class Job()

    封装了提交任务的对象,记录着任务的命令、依赖关系、资源、状态等信息,提供了任务检查,任务输出等方法。

  • class ShellJob()

    类似于Job对象,提供了shell脚本中每行命令的任务对象的解析和封装。

  • class Jobfile()/Shellfile()

    封装了任务文件输入的对象,提供了用户输入任务的相关属性和方法。

  • class DAG()

    封装了任务依赖的对象,记录着Job对象的依赖关系和依赖处理方法。

  • class Config()

    封装了配置文件和参数相关的对象,用于参数和配置文件的解析和输出。

  • class qsub()

    封装了本地任务或SGE集群任务的处理对象,提供了任务检查,投递,状态监控,日志输出,异常处理相关方法。

  • class RunSge()

    封装了本地任务、SGE集群任务、阿里云BatchCompute任务的处理对象,提供了任务检查,投递,状态监控,日志输出,异常处理相关方法。

  • class Cluster()

    封装了阿里云BatchCompute任务管理对象,提供了阿里云连接,集群创建,任务添加等相关方法。

  • class Task()

    封装了阿里云任务对象,提供了云主机实例选取,任务提交,OSS挂载等相关方法。