软件特性
runjob
为每个任务创建了一个任务对象,在内部维护了一个运行时任务队列,并根据用户定义的任务依赖关系,创建出任务依赖的有向无环图DAG(Directed acyclic graph)
对象。可灵活控制并行运行的任务量,并及时根据任务依赖关系运行新的任务。
主要特性
支持本地任务、SGE集群任务、阿里云BatchCompute任务的管理。
每个任务都唯一对应一个日志文件,记录着任务的全部输出和任务运行状态。
任务运行失败时可以选择是否将任务重新提交到任务队列。
程序中断时重新运行,会自动跳过运行成功的任务,只运行失败或还未运行的任务。
程序被kill或者终止的情况,会自动清理由程序创建出来的任务,避免计算资源的浪费。
在shell脚本中的任务也支持为每行命令定义运行时使用的cpu和内存资源。
支持通过参数选择只想要运行的部分任务而不是全部任务,部分运行的任务也能自动跳过已经运行成功的任务。
支持自定义任务运行前或任务运行结束后的
init
或call_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挂载等相关方法。