Python库用于工作调度,ssh

7
我希望找到一个用户空间工具(最好是用Python编写,如果不行的话,任何我可以轻松修改的语言都可以),来替换我一直在使用的短脚本,这个工具需要完成以下两个任务:
  • 轮询少于100台计算机(恰巧是Fedora 13),获取负载、可用内存以及是否有人正在使用
  • 为作业选择好的主机,通过ssh运行这些作业。这些作业是执行任意命令行程序,它们读取和写入共享文件系统 - 通常是图像处理脚本或类似的cpu,有时是内存密集型任务。
例如,使用我的当前脚本,我可以在Python提示符中:
>>> import hosts
>>> hosts.run_commands(['users']*5)

或者从命令行中执行

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

要运行命令users 5次(在配置文件中至少检查5台计算机的CPU负载和可用内存后,找到可以运行该命令的5台计算机)。除了我刚才运行的脚本之外,不应该有任何作业服务器,并且在运行这些命令的计算机上不应该有任何工作进程或进程。
我还希望能够跟踪作业,失败后重新运行作业等,但这些都是额外的功能(在真正的作业调度程序中非常标准),实际上我并不需要。
我已经为Python找到了很好的ssh库,例如classhPuSSH,它们没有我想要的(非常简单的)负载均衡功能。另一方面,根据crispamares的建议,在我澄清我想要更轻量级的东西之前,我想要的是Condor或Slurm。那些做事情的方式是正确的,但从阅读它们的介绍来看,它们似乎在我需要它们时仅在用户空间中启动它们可能很麻烦甚至不可能。这不是一个专用集群,而且我在这些主机上没有root访问权限。
如果找不到其他东西,我目前计划使用classh的包装器,并对计算机进行一些基本的轮询,以了解它们的繁忙程度。

1
什么样的工作?[fabric](ssh包装器,无作业调度),[jenkins](CI工具:可重复任务,零设置,简单负载平衡),[disco](MapReduce,erlang + python,仅限python作业?),hadoop(大型,需要root?),PBS(Torque-传统工作负载管理系统)。 - jfs
@Thomas: 你可以尝试使用goosemo的并行执行分支https://github.com/goosemo/fabric (至少在fabric 1.2之前是不会被集成进去的)。 - jfs
1
我会在几个小时内使用classh完成我明天早上所需的工作。之后,我会暂时不再碰它,并一直等到fabric 1.2版本。(甚至通过微小的贡献来帮助它的发展) - Thomas
1
这个在Serverfault上的问题列出了我所考虑的事情,但它们似乎大多是用于在许多主机上执行一个命令,而我想在每个主机上执行不同的命令。 http://serverfault.com/questions/13322/what-distributed-shell-utilities-do-people-feel-are-good-flexible-and-easy-to-u - Thomas
1
现在 Fabric 已经支持并行执行了!http://readthedocs.org/docs/fabric/en/latest/usage/parallel.html - Thomas
显示剩余2条评论
6个回答

3

有一个名叫fabric的工具,我很惊讶没有人提到它。


现在 Fabric 已经支持并行执行了!请参阅 readthedocs.org/docs/fabric/en/latest/usage/parallel.html。 - Thomas

2

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

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


Slurm看起来可以胜任这项工作,但在用户空间部署似乎几乎不可能。我将在问题中略微降低要求。 - Thomas

1
你可以修改Buildbot和Twisted吗?这似乎是一个不错的方法。

1

我可能会有点晚:我想在这里推荐一下Python传奇


1

看一下func。我只用过它的“Hello, world”级别,但我认为它完全符合你的要求。


0

可能我回答这个问题有点晚了,但最近我遇到了同样的问题,我正在寻找一个C/C+库,可以在一组服务器上进行图像文件处理的作业调度和服务器负载均衡。我将从GUI调用库并监视作业状态。

我安装了slurm并尝试了命令,但是将其用作工具甚至库似乎相当困难。其他选项似乎提供作业调度,但没有基于CPU利用率的负载平衡。我会感激任何建议。

此致敬礼


嗨,穆斯塔夫 - 如果您提出一个新问题,您可能会得到更有帮助的回答。我肯定会支持这样的问题,我也很好奇! - Thomas

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接