unix中的批处理过程pipe理软件

我正在寻找一个很好的开源解决scheme来pipe理整个机群中的许多批处理作业。 我已经看过这篇文章中提到的解决scheme,但是看起来并不是我正在寻找的东西,或者所提到的项目只是非常糟糕的文档。

我们有一套很好的批处理操作,需要按照不同的时间表进行。 这些批处理操作有时会有依赖关系,因为在日志处理中使用批处理作业A,则批处理作业B和C可以在结果数据上运行。 资源利用(在我们的批处理机器之间平衡工作)可能不是一个问题,所有这一切虽然是一个不错的奖金。

今天我们用fcron和shell脚本的组合处理这个问题。 但是,当然要跟踪哪些工作计划在哪些机器上运行是相当困难的。 当一些工作挂了(或者运行时间比预期的要长得多),或者甚至只是失败时,也并不总是显而易见的。

这对我们来说不是一个独特的问题。 事实上,我们在以前的公司有一个本土的解决scheme,但从来没有开源。 有没有人有一个好的解决scheme?

有许多解决scheme您可能想要看看:

转矩 – 这是原始PBS(便携式批处理调度程序)代码库的变体。 他们称之为资源pipe理器,因为从技术上讲,它不包含调度作业,尽pipe它包括几个调度器。 但是,它将负责pipe理和分配计算节点的CPU,内存,文件和其他消耗资源。 如果你有更多的基本调度需求,你可能需要用Maui Cluster Scheduler进行补充。 我对这个最了解,因为这是我们使用的。 由于它大部分是由社区开发的,大多数开发人员是系统pipe理员,而不是软件工程师,所以可能会有些粗糙。 有一个商业产品是从相同的PBS代码库( PBS Professional)产生的,这个代码库看起来比较成熟,可以收取相对较低的费用。

Sun Grid Engine – 类似于基于PBS的系统,但是由Sun编写。 资源pipe理器和调度器在这个系统中更加集成,它提供了几种不同的操作和资源分配模式。 尽pipe是Sun的产品,但它在Linux和其他操作系统上运行良好,不仅仅是solaris。

Platform LSF – 是另一个在同一空间的广受欢迎的商业产品。

Condor – 另一种批量调度系统,更适合于高吞吐量,大量短期工作。

SLURM – 是另一个开源的产品。 它不像基于PBS的产品那样成熟,但是它具有更好的体系结构,基于插件,并且易于安装,如果你使用CAOS NSA Linux发行版和Perceus集群pipe理器。 看到这个Linux杂志文章的例子是多么容易起床和运行。

您挑选哪一个主要是一个偏好问题,并将其与您的要求相匹配。 我想说的是,Torque和SGE在科学计算环境中对多用户群集稍有弯曲。 根据我所见到的Altair的PBS Professional,它看起来更适合商业环境,并有一套更好的开发产品特定工作stream程的工具。 LSF也一样。

SLURM和Condor可能是最容易启动和运行的,如果你的要求比较适中,它们可能是最合适的。 但是,如果您需要更复杂的调度策略以及许多用户向您的系统提交作业,则可能缺乏这方面的内容,而无需外部调度程序的补充。

这可能是夸大你的情况,但你检查了群集的开源Torque批处理调度程序? 它常用于计算网格和大型集群: 关于扭矩 。

你有没有看过Gearman?

Gearman驱动的应用程序由三部分组成:客户端,工作者和作业服务器。 客户端负责创build要运行的作业并将其发送到作业服务器。 作业服务器将find可以运行作业并转发作业的合适工作人员。 工作人员执行客户端请求的工作,并通过作业服务器向客户端发送响应。 Gearman提供您的应用程序调用的客户端和工作者API来与Gearman作业服务器(也称为gearmand)交谈,因此您不需要处理networking或作业的映射。

http://gearman.org/

干杯

我可能不了解你所要实现的复杂性,但是对于我所处理的情况,它是这样处理的。 您可以根据数据源端确定运行cron作业的位置。 从具有要处理的数据的机器运行的脚本收集需要处理的数据,并在该脚本的末尾使用scp将其发送到下一个系统,并使用ssh在第二个系统上执行脚本。 你可以通过ssh执行一个远程脚本:

ssh主机名“/ usr / local / path / to / script”

第二个系统用数据来处理数据,在这个脚本的末尾,在下一个系统上进一步进行scp数据和ssh处理等等。这样就产生了一连串的事件,而且只涉及一个cron。 在源机器上执行一个cron作业,根据第一个cron是否完成,在某个特定时间是否可以安全地运行第二个cron是没有任何第二个猜测的。 你只需要设置一些.ssh / authorized_keys条目,然后离开。 任何故障的结果都由第一台机器上的初始cron报告,即使它们发生在下游。