2008-12-30 43 views
7

是否有任何安全且免費的Linux語言無關分佈式make系統?針對linux的免費安全分佈式make系統

背景資料:

我運行的科學實驗(計算機科學的),有時有很大的依賴性樹,偶爾在數千或數萬樹節點的順序。此依賴關係樹覆蓋數據文件,數據處理可執行文件和結果文件。

我已經嘗試了多年來各種技術,包括:

  1. 使用的數據庫我自己的滾動依賴跟蹤和運行的每個工人的機器上的腳本。這可能會有點麻煩,特別是在嘗試使用非腳本語言時。
  2. 將所有處理命令放入單個生成文件中,並使用可在不同工作機器上手動「構建」的僞目標。這不需要特殊工具,但手動將工作分解爲均勻大小的僞目標塊並在每個工作站框中正確調用「make」會很痛苦。
  3. distmake:自動從一個單一的makefile文件分發命令的執行...

我基本上尋找類似distmake,但更安全。據我所知,distmake基本上爲每個工人節點留下了一個敞開的後門。

如果一個替代品比distmake更強大,它也會很好。如果您擺脫了主要的distmake調用,它可以關閉後門服務器,但它不會正確地終止worker節點上的執行進程。


澄清:

我與makefile文件處理數據,而不是編譯和用gcc鏈接。從我在文檔中讀到的內容來看,distcc是分發gcc的專用工具。我將在共享文件系統上託管的非常大的數據文件上運行我自己的可執行文件,而不是源文件上的gcc,因此distcc沒有幫助。

工作節點是外部可見的機器,所以我希望任何工作守護進程至少和ssh一樣安全。盡我所知,不用閱讀源代碼,distmake工作守護進程打開一個端口,並接受任何附加到它的任何人的命令。他們將以啓動守護程序的用戶身份執行這些命令。

回答

1

還有distcc,聲稱能夠通過SSH進行操作(儘管除非distmake在某種程度上非常奇怪,您應該能夠限制對本地主機的訪問並構建SSH隧道來運行構建)以及icecream

更新:因爲我們的目標是不是分佈式編譯,而是一個分佈式計算,只是碰巧使用make爲引導,它更有意義的使用是專爲喜歡BOINC分佈式計算的工具。以下評論表示condor作爲所選平臺。

+0

我會研究ssh隧道。它看起來像distcc和冰淇淋只用於編譯和鏈接。冰淇淋的主頁警告說,它不應該用於不安全的環境。 – 2008-12-30 14:07:16

+0

在這種情況下,你爲什麼不寫一個BOINC引擎? – 2008-12-31 06:25:02

+1

啊,網格計算...爲什麼我沒有想到這一點。我認爲禿鷹可以做我想做的事。爲了未來讀者的利益,您可否介意將網格計算解決方案添加到您的響應中(或創建新響應)? – 2009-01-01 18:51:14

0

如果你勤於依賴(即make -jxx在本地工作正常),distcc可能是你想要的。它非常易於使用,並且可以和幾個流行的CC緩存一起快樂地工作。同樣,適當的依賴關鍵是關鍵,尤其是在使用緩存來幫助加速重建過程時。

如果您使用GCC生成超出makefile中模塊依賴關係範圍的依賴關係,您可能會喜歡distcc。我一直在一個建造良好的小型農場上使用它,但是我的設置/樹遠沒有你描述的那麼精細。

0

您可以使用AT&T nmakecoshell程序結合使用。我不知道如何評估安全性,但是Glenn Fowler的團隊中有很多優秀的工程師,他們做了很多非常好的工作。我會信任他們與我的源代碼:-)他們最熟悉的工具可能是graphviz

3

依賴關係很難管理,我不知道有什麼完美的系統可以在沒有大量工作的情況下完成您想要的任務。

我最近使用的是以下設置: - Condor隊列來管理羣集中的機器 - Condor DAGMAN元調度程序提交相互依賴的作業。 DAGMAN是Directed Acyclic Graph MANager的首字母縮寫,其中使用有向無環圖來表示作業之間的依賴關係。

我們已經在我們的實驗室中爲迭代科學協議做了很好的成功,它的運行效果很好,雖然這是一個非常有才華的博士後學習經驗,讓初始實現運行。它確實需要你設置並運行一個不重要的Condor集羣,但我認爲你有Condor或類似的東西來管理你的所有機器。 Sun GridEngine可能有些類似的東西,我不知道。

1

儘管透明地與'make'集成可能會很複雜,但GNU並行似乎提供了一個方便的選項來跨服務器分發命令。