unix下批处理管理软件

unix下批处理管理软件

我正在寻找一个好的开源解决方案来管理跨机器集群的大量批处理作业。我查看了本文中列出的解决方案邮政但它似乎并不是我想要的,或者也许提到的项目的文档很差。

我们有一组需要按照不同时间表执行的批处理操作。这些批处理操作有时具有依赖性,例如,日志由批处理作业 A 处理,然后批处理作业 B 和 C 可以在结果数据上运行。资源利用率(在我们的批处理机器之间平衡作业)可能不是什么大问题,但所有这些都会是一个不错的奖励。

今天我们结合使用 fcron 和 shell 脚本来处理这个问题。但当然,跟踪哪些作业计划在哪些机器上运行是相当困难的。当某些作业挂起(或运行时间比预期长得多)甚至直接失败时,也并不总是很明显。

这对我们来说不是一个独特的问题。事实上,我们在之前的公司有一个自主开发的解决方案,但从未开源过。有人有好的解决方案吗?

答案1

您可能需要查看多种解决方案:

扭矩- 这是原始 PBS(便携式批处理调度程序)代码库的变体。他们称其为资源管理器,因为从技术上讲,它不负责调度作业,尽管它确实包含几个调度程序。但是,它将负责管理和分配您的计算节点 CPU、内存、文件和其他可消耗资源。如果您有超出基本调度需求的东西,您可能希望用Maui 集群调度器。我对这个最了解,因为它是我们使用的。它可能有点粗糙,因为它主要是社区开发的,大多数开发人员都是系统管理员,而不是软件工程师。有一款商业产品源自同一个 PBS 代码库,名为PBS 专业版它看起来更加成熟,而且收费相对适中。

太阳网格引擎- 与基于 PBS 的系统类似,但由 Sun 编写。资源管理器和调度程序在此系统中更加集成,并且它提供了几种不同的操作和资源分配模式。尽管是 Sun 产品,但它似乎在 Linux 和其他操作系统(而不仅仅是 Solaris)上运行良好。

平台 LSF- 是同一领域的另一种受欢迎的商业产品。

秃鹰- 另一个批处理调度系统更适合高吞吐量、大量的短时间作业。

斯拉普- 是另一款开源产品。它不如基于 PBS 的产品那么成熟,但它具有基于插件的更好架构,如果您使用 CAOS NSA Linux 发行版和 Perceus 集群管理器,则易于安装。请参阅此Linux 杂志文章中的示例展示了如何轻松启动和运行。

选择哪一款在很大程度上取决于个人喜好以及是否符合您的要求。我认为 Torque 和 SGE 在科学计算环境中更适合多用户集群。根据我对 Altair PBS Professional 的了解,它似乎更适合商业环境,并且拥有一套更好的工具来开发特定于产品的工作流程。LSF 也是如此。

SLURM 和 Condor 可能是最容易启动和运行的,如果您的要求相对适中,它们可能是最适合的。但是,如果您需要更复杂的调度策略,并且许多用户向您的系统提交作业,那么如果没有外部调度程序的补充,它们在这方面可能会有所欠缺。

答案2

这可能对你的情况有些夸大,但你有没有查看过用于集群的开源 Torque 批处理调度程序?它通常用于计算网格和大型集群:关于扭矩

答案3

您研究过 Gearman 吗?

Gearman 支持的应用程序由三部分组成:客户端、工作者和作业服务器。客户端负责创建要运行的作业并将其发送到作业服务器。作业服务器将找到可以运行该作业的合适工作者并将其转发。工作者执行客户端请求的工作并通过作业服务器向客户端发送响应。Gearman 提供客户端和工作者 API,您的应用程序可以调用这些 API 与 Gearman 作业服务器(也称为 gearmand)进行通信,因此您无需处理网络或作业映射。

http://gearman.org/

干杯

答案4

我可能不理解你要实现的目标有多复杂,但就我所处理的案例而言,它是这样处理的。你根据数据源端确定运行 cron 作业的位置。从具有要处理的数据的机器运行的脚本会收集需要处理的内容,并在该脚本的末尾使用 scp 将其发送到下一个系统,并使用 ssh 在第二个系统上执行脚本。你可以使用以下命令通过 ssh 执行远程脚本:

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

第二个系统处理数据,并在该脚本结束时,对数据进行进一步的 scp 并在下一个系统上进行 ssh 等。这样就有了一系列事件,并且只涉及一个 cron。在源计算机上有一个 cron 作业,无需再猜测第二个 cron 是否可以在特定时间安全运行(取决于第一个 cron 是否已完成)。您只需设置一些 .ssh/authorized_keys 条目,就可以了。任何故障的结果都由第一台计算机上的初始 cron 报告,即使它们发生在下游。

相关内容