SGE作业调度系统的简单理解

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SGE作业调度系统的简单理解相关的知识,希望对你有一定的参考价值。

参考技术A

Sun网格引擎(Sun Grid, SGE)是一种来自于 SUN Microsystem的分布式资源管理和调度系统,它用来在基于UNIX的计算环境中优化软件和硬件资源的使用。SGE能用于查找资源池内的闲置资源并利用这些资源(将用户投递的任务进行排队,然后将任务交给能够运行的结算节点执行);它同样用于通常的一些事务中,例如管理和调度作业到可用资源中。当然,作业调度系统的种类有很多,除了SEG,常见的还有Condor、负载共享设施(LSF)、便携式批处理系统(PBS)。

SGE的工作流程可以分为四步:

主控节点 :主控节点是所有集群活动的中心,控制SGE系统组件。一般情况,主控节点也是管理节点和提交节点。
执行节点 :执行节点有权限执行作业的系统,执行节点有附加到它上面的队列。
管理节点 :管理节点有权运行SGE系统的任何类型的管理操作。
提交节点 :提交节点只允许用户提交和控制批处理作业。具体说,用户登陆后,可以使用 qsub 命令提交作业,使用 qstat 命令监控作业状态。

管理人员 :管理人员拥有完全操作SGE系统的能力。默认情况,管理主机的超级用户都具有管理人员权限。
操作员 :操作员可以执行很多管理人员命令,但是进行配置更改除外。
拥有者 :队列拥有者可以暂停或者启动其拥有的队列,还可以暂停或启动其拥有的队列中的作业。队列拥有者没有其他管理权限。
用户 :用户有一定的访问权限。

其中:

qconf -sel 显示“执行主机”列表
qconf -sh 显示“管理主机”列表
qconf -ss 显示“提交任务主机”列表
qconf -sql 显示“集群队列”列表
qconf -spl 显示“集群并行环境”列表

使用 qsub 进行任务投递时需要添加参数来调整 qsub 的行为。下面只列几个常用的参数。

任务解释 :使用 bowtie 将 A_1.fq 和 A_2.fq 和参考基因组比对生成bam文件,然后再使用 samtools sort 将bam排序获得 A.bam 。
qsub 命令解释 :申请8个线程并使用openmpi进行运算(同时申请内存25G),这里定义任务名称为 A.bt2

编辑shell脚本 test.sh ,内容如下

投递时直接 qsub test.sh

qstat 是一个非常有用的任务查询命令

qselect 的语法: qselect [options]
常用参数:
qselect -U 查看指定用户的可用队列节点
qselect -q 查看指定队列有哪些可用节点

attention : qmod -s 和 qmod -us 还可以用于暂停和启动队列,
前提是拥有对应的队列管理权限。

qalter 语法: qalter [参数] 修改内容 jobid
常用参数:
-q :修改指定队列
-l :修改限制资源
-N :修改指定作业名称
-P :修改指定项目名称
这里以修改指定作业名称 qalter -N 举例吧:

qdel 常用的参数:
-f 强制删除
-u 删除指定用户的作业

详解BI系统中的任务调度

任务调度是一个通用的计算机概念,可以简单地理解为计算机基于一定时间频率,自动执行一项进程任务。任务调度是操作系统的重要组成部分,Windows系统中的定时任务和Linux的Crontab都是常用的系统级调度器,被广泛应用于各种定时执行程序的场景。在传统商业智能BI领域,系统的调度器也经常被作为ETL作业的调度器。作业任务会通过T+1或者更高的时间频率进行调度执行。

随着商业智能BI技术的发展,BI工具的调度功能也有了长足的发展。特别是伴随着大数据和实时数据的市场需求,处理能力更强、多线程作业,准实时调度等场景的应用越来越普遍。

具体到商业智能BI工具的调度功能,目前,主要可以概括为两类:

  1. 数据抽取的任务调度
  2. 通知、消息的任务调度

一、数据抽取的任务调度

商业智能工具的一大应用场景就是打破数据孤岛,将分布在不同系统中的异构数据进行整合,并抽取到数据仓库,形成分析模型,为可视化分析提供数据支撑。对于大数据量的历史数据分析,抽取基本采用的就是定时调度机制。从数据源到数据仓库,可以配置增量更新或者全量更新。

全量更新一般采用的机制是先Truncate Table,再进行Insert操作。增量更新则是基于主键列或者时间戳,只更新满足条件的数据。无论哪种方式,都是通过设置不同时间频率的定时调度任务来执行的。

任务的频率也是和前述两种更新方式密切相关的。对于实时性要求不高的数据,可以通过设置T+1来进行全量更新。对于频率相对较高的数据,可以设置以小时、分钟甚至秒级的频率来进行调度增量更新。

具体的调度频率要根据数据量、服务器配置,同时考虑对数据源系统的压力来综合考虑。

以Wyn为例,在数据接入方式上同时支持直连模型和抽取模型。对于抽取模型,可以设置调度运行计划。自动重载计划会在设定的时间自动刷新模型中的数据。

用户可以根据不同的业务需求制定不同的执行计划,以不同频率重载表中的缓存数据。若计划执行失败,会向填写的邮箱发送一封邮件通知。若成功,则没有提示。

创建自动定时的运行计划,设定后运行计划会周期性的自动刷新数据。

商业智能BI工具在任务计划设置上,也会考虑到其复用性。提供通过模板创建运行计划功能。运行计划可以手动或自动执行。运行计划的调度执行是数据抽取成功的重要技术保障。

二、通知、消息的任务调度

在商业智能的任务调度场景中,不仅要将数据抽取到数仓集中存储。对于报表、仪表板等分析结果,也需要支持定时推送功能。并不是每个报表数据的查看者都方面直接登录系统查看数据。例如,出差路上,或者遗忘时,通过定时推送功能,可以主动地将分析结果呈现给数据的使用者。在企业实践中,邮件推送是最常用的方式之一。

以Wyn为例,在任务计划模板中,可以使用邮件推送功能。发送对象支持邮件和邮件组。在运行报表运行计划时,不仅仅支持将报表作为邮件附件或链接的形式发送至目标邮箱,也支持将报表作为邮件正文,这样会更加方便用户查看。

将报表作为邮件正文显示的关键在于,在设置运行计划时,将导出格式设置为"HTML"或"Image"。而后,发送方式选择邮件通知时,"发送类型"中才可以选择"在邮件正文中显示报表"。

综上所述,任务调度作为商业智能工具的普遍需求,已经被广泛应用,为数据抽取提供了有效的支撑。随着软件开发技术的发展和市场需求的变化,数据实时性更高的分析场景将越来越多。但是,大数据量历史数据分析的场景也会一直存在。因此,可以预见的是,在未来一段时间内,基于任务调度的抽取模型和基于流式的、实时推送模型、直连数据源的直连模型将并存,并共同为企业的数据分析提供重要的技术支撑。

以上是关于SGE作业调度系统的简单理解的主要内容,如果未能解决你的问题,请参考以下文章

详解BI系统中的任务调度

Python使用multiprocessing实现一个最简单的分布式作业调度系统

作业调度—了解

操作系统 实验二

进程调度算法

操作系统常用调度算法