2011-04-12 74 views
7

我想找到一个用户空间工具(最好在Python中 - 禁止在任何我可以轻易修改的东西中,如果它尚未完成我所需的工作)来替换很短的剧本我一直在使用,做以下两件事情:负载,可用内存用于作业调度的Python库,ssh

  • 投票少于100台计算机(Fedora 13的,所以发生),如果它看起来像有人使用他们
  • 为作业选择好的主机,通过ssh运行这些作业。这些作业是执行任意命令行程序,读写共享文件系统 - 通常是图像处理脚本或类似的 - CPU,有时是内存密集型任务。

例如,使用我的当前脚本,我可以在一个python提示

>>> import hosts 
>>> hosts.run_commands(['users']*5) 

或从命令行

% hosts.py "users" "users" "users" "users" "users" 

运行命令users 5倍(发现5后通过从配置文件检查至少5台计算机上的CPU负载和可用内存来运行命令的计算机)。除了刚刚运行的脚本之外,不应该有任何作业服务器,并且在运行这些命令的计算机上不需要工作守护进程或进程。

我还希望能够跟踪作业,在失败时再次运行作业等,但这些是额外的功能(在真正的作业调度程序中非常标准),我实际上并不需要。

我发现很好的Python ssh库,例如classhPuSSH,它们没有我想要的(非常简单的)负载平衡功能。另一方面,我想要的是Condor或Slurm,正如Crispamares在我澄清之前所建议的,我希望更轻一些。那些人会以正确的方式做事,但是从阅读他们的信息来看,他们听起来像是在我需要的时候在用户空间中旋转它们会令人讨厌是不可能的。这不是一个专用的群集,我没有在这些主机上的root访问权限。

我目前正计划围绕classh使用一些基本轮询计算机的包装,每当我需要知道他们有多忙时,如果我找不到别的东西。

+1

什么样的工作? [fabric](http://docs.fabfile.org/en/1.0.1/index.html)(ssh wrapper,没有作业调度),[jenkins](https://wiki.jenkins-ci.org/display/JENKINS/Meet + Jenkins)(CI工具:可重复任务,零设置,简单负载均衡),[disco](http://discoproject.org/)(MapReduce,erlang + python,只有python jobs?),hadoop (大,需要root?),PBS(转矩 - 传统工作负载管理系统)。 – jfs 2011-04-12 16:37:46

+0

谢谢J.F.编辑的问题,说作业正在运行处理图像,读写共享文件系统的命令行程序。 – Thomas 2011-04-12 17:11:58

+0

这种用法可能是合理的,但是直到平行执行代码才是特征。 – Thomas 2011-04-12 17:31:43

回答

3

还有fabric,我很惊讶没有人没有提到它。

+0

Fabric现在有并行执行! readthedocs.org/docs/fabric/en/latest/usage/parallel.html – Thomas 2013-10-14 01:49:21

1

你可以修改buildbot并扭曲?这似乎是一个好方法。

2

Slurm是一个功能强大的作业调度程序,可以在Python中使用PySlurm进行编程。

我不知道它是否比Condor更难部署。我也不知道它是否适合您的所有需求,但为了以防万一,我把它写下来。

+0

Slurm看起来会做这项工作,但在用户空间部署它看起来几乎不可能。我将在这个问题上缩减我的需求。 (所以在编辑问题之前注意这个答案是更合适的) – Thomas 2011-04-12 16:19:20

1

看一看func。我没有超越“你好,世界”的水平使用它,但我认为它完全适合你的法案。

0

我可能会迟到这个问题,但最近我遇到了同样的问题,我正在寻找一个C/C +库,在那里我可以执行作业调度和服务器负载平衡,以通过服务器集群处理映像文件。我将从GUI调用图书馆并监视作业的状态。

我安装了slurm并尝试了这些命令,但是将它作为一个工具并可能作为一个库看起来相当困难。其他选项似乎提供了作业调度,但没有基于cpu利用率的负载平衡。我将不胜感激任何建议。

最好问候

+0

您好Mustaf - 如果您提出一个新问题,您可能会收到更多有用的回复。我肯定会投票支持这样一个问题,我也很好奇! – Thomas 2015-09-01 17:46:41