簡體   English   中英

如何在不可靠的群集上分發程序?

[英]How to distribute a program on an unreliable cluster?

我要尋找的是以下任何/全部:

  • 自動發現工作人員故障(例如計算機關閉)
  • 在給定IP地址范圍內檢測所有正在運行的(linux)PC(計算機已打開)
  • ...以及自動生成器(ping + ssh?)
  • 負載平衡,以使工作人員不會減慢其他進程的速度(不錯嗎?)
  • 某種形式的消息傳遞

...並且不想重新發明輪子。

C ++庫,bash腳本,獨立程序...都歡迎。

如果您舉一個軟件的例子,請告訴我們它具有上述功能。

查看Spread Toolkit (一個C / C ++群組通信系統)。 通過這種方式,您可以重新平衡分布式工作負載,從而檢測節點/進程故障以及恢復/啟動。

您正在尋找的被稱為“工作計划程序”。 市場上有很多工作計划程序,這些是我所熟悉的:

  • SGE處理與多台機器上的作業計划有關的所有問題(恢復,監視,優先級,排隊)。 您的軟件不必具有SGE意識,因為SGE只是提供了您提交批處理作業的環境。
  • LSF是更好的選擇,但不是免費的。

要支持消息傳遞,請參閱MPI規范。 SGE完全支持基於MPI的分發。

根據您的應用程序要求,我將檢查BOINC基礎結構。 他們在最新版本中實現了一種客戶端/服務器通信形式,目前尚不清楚您需要哪種通信形式。 他們的API用C語言編寫,我們已經很容易用C ++編寫了包裝。

BOINC的另一個優點是,它旨在針對SETI或Rosetta @ Home之類的大型分布式計算項目進行擴展,因此它支持諸如驗證,作業分配以及針對不同平台的不同應用程序版本的管理之類的工作。

這是鏈接:

BOINC網站

Hadoop 它具有Map Reduce,但我不確定它是否具有我需要的任何其他功能。 有人知道嗎

您確實在尋找“工作計划程序”。 節點是“靜態”注冊到作業調度程序的。 這使作業調度程序可以檢查節點並確定核心數,RAM,可用的暫存磁盤空間,OS等。 所有這些信息都可以用於選擇作業所需的資源。

作業調度程序還提供群集的基本運行狀況監視。 發生故障的節點會自動從可用節點列表中刪除。 (通過調度程序)正在運行作業的節點也將從可用節點列表中刪除。

SLURM是您可能考慮的資源管理器和作業計划程序。 SLURM具有用於LSF和PBSPro的集成掛鈎。 幾個MPI實現是“ SLURM感知的”,並且可以使用/設置環境變量,這些變量將允許MPI作業在SLURM為其分配的節點上運行。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM