【问题标题】:Python library for job scheduling, ssh用于作业调度的 Python 库,ssh
【发布时间】:2015-09-01 16:43:14
【问题描述】:

我想找到一个用户空间工具(最好是在 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,它们没有我想要的(非常简单的)负载平衡功能。在我想要的另一边是 Condor 或 Slurm,正如在我澄清我想要更轻的东西之前由 crispamares 所建议的那样。那些会以正确的方式做事,但是从阅读它们的角度来看,它们听起来像是只有在我需要它们时才在用户空间中旋转它们,这会令人讨厌到不可能。这不是一个专用集群,我在这些主机上没有 root 访问权限。

我目前正计划在 classh 周围使用包装器,并在我找不到其他东西时,在我需要知道它们有多忙时对计算机进行一些基本轮询。

【问题讨论】:

  • 什么样的工作? fabric(ssh 包装器,无作业调度),jenkins(CI 工具:可重复任务,零设置,简单负载平衡),disco(MapReduce,erlang+python,只有 python 作业?),hadoop(大,需要root?),PBS(Torque——传统的工作负载管理系统)。
  • 感谢 J.F.,编辑问题说作业正在运行处理图像、读取和写入共享文件系统的命令行程序。
  • 我将在几个小时内使用 classh 处理我明天早上需要的东西。在那之后,我暂时不会碰它,会一直挂在那里直到面料 1.2。 (甚至可以通过微不足道的方式帮助它)
  • 这个关于 serverfault 的问题列出了我正在考虑的各种事情,但它们似乎主要是为了在许多主机上执行一个命令,而我想在每个主机上执行不同的命令serverfault.com/questions/13322/…
  • Fabric 现在可以并行执行了! readthedocs.org/docs/fabric/en/latest/usage/parallel.html

标签: python ssh batch-processing job-scheduling condor


【解决方案1】:

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

【讨论】:

  • Fabric 现在可以并行执行了!阅读thedocs.org/docs/fabric/en/latest/usage/parallel.html
【解决方案2】:

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

我不知道它是否比 Condor 更难部署。另外我不知道它是否满足您的所有需求,但以防万一,我把它写下来。

【讨论】:

  • Slurm 看起来可以完成这项工作,但在用户空间中部署它几乎是不可能的。我将在问题中稍微缩减我的要求。 (所以请注意在编辑问题之前这个答案更合适)
【解决方案3】:

你可以修改 buildbot 和扭曲?这似乎是个不错的选择。

【讨论】:

    【解决方案4】:

    看看func。我没有在“Hello, world”级别之外使用它,但我认为它非常适合您。

    【讨论】:

      【解决方案5】:

      我可能有点晚了:我喜欢在这里推荐python saga

      【讨论】:

        【解决方案6】:

        这个问题我可能迟到了,但我最近遇到了同样的问题,我正在寻找一个 C/C+ 库,我可以在其中进行作业调度和服务器负载平衡,以便在服务器集群上处理图像文件。我将从 GUI 调用库并监控作业的状态。

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

        最好的问候

        【讨论】:

        • 您好 Mustaf - 如果您提出新问题,您可能会得到更多有用的回复。我当然会投票给这样的问题,我也很好奇!
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-02-02
        • 2020-03-17
        • 1970-01-01
        • 1970-01-01
        • 2010-12-28
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多