2011-04-12 42 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