
我下面的帖子(我認為相當不公平)在 StackOverflow 上被關閉,因此我在這裡重新發布。
原問題:如何使用多台電腦來創造更快的環境?我大約有 12 台計算機,每台 4GB,每台 2GHz。我需要運行一些耗時的資料轉換,並希望利用這些機器的綜合能力。它們都運行Win2003伺服器。
基本上,我們有大量需要轉換的視訊文件,以便我們的分析師可以進行分析。由於我無法告訴您有關該項目的更多信息,問題變得更加複雜。
答案1
您所問的問題是當今計算中一個主要問題的癥結所在。單一處理核心不會變得更快,因此我們需要程式設計師開始編寫程式碼,將較大的問題分解為可以在多台電腦上並行處理的較小問題。
簡短的回答是:如果您的處理軟體允許您分解作業並並行運行它們,那麼就這樣做。如果沒有,請與編寫它的人討論,讓他們重新設計它,以便以更並行的方式工作。
其他發文者提到的叢集管理軟體的大部分工作都是將資料傳送到各個電腦、啟動並行任務、確保作業實際完成以及將資料帶回的機制。那裡是涉及到一些不平凡的問題,但總的來說,叢集管理軟體是關於作業調度和資源管理的。叢集管理軟體不會處理實際的平行工作—這就是您的「處理軟體」必須要做的事情。
您無法對一組多台電腦施以“魔法”,使它們“像”更快的機器一樣工作。如果沒有專門為利用多個處理器而建立的軟體,您將無法擺脫這種困境。
答案2
為了結合多台機器的處理能力,您需要執行某種叢集軟體,通常稱為計算或計算叢集。可以執行此操作的一些應用程式範例包括:
然而,這些都是複雜的軟體,創建可用的高效能叢集是一項複雜且可能昂貴的工作,不應輕易進行。您還需要可以在叢集上運行的特殊軟體來完成您的工作。您不能簡單地將一堆 Windows 電腦連接在一起並神奇地形成一個集群,並在其上安裝一組標準的 Windows 應用程式。
答案3
當你可以說時,電腦集群就能很好地工作......
我可以讓某人坐在每台電腦前解決部分問題嗎?換句話說,能否將問題拆分成基本上獨立的區塊?
鑑於您將問題描述為“需要轉換大量視訊檔案”,是的,這可以在叢集上運行。
微軟確實有我一無所知的叢集軟體。這可能是要走的路。
可能更容易的是:
專用一台電腦作為主機。其餘的都是客戶。
將所有影片檔案放在該母版上的一個資料夾中。
為每個客戶端建立一個共用資料夾,並讓每個客戶端掛載該共用資料夾。
客戶端運行一些 Windows 腳本語言(perl 可以工作),它會經常喚醒,並且如果共用資料夾中有某些內容,則將其重命名為 work_yourfilenamehere 並執行您的轉換。完成後,它將其重命名為done_yourfilenamehere。如果沒有,請等待 60 秒左右。
主電腦執行一個腳本來尋找每個共用資料夾。如果其中沒有任何內容,則放入一個要轉換的檔案。如果他們有一個名為 did_yourfilenamehere 的文件,則將其移動到 done 資料夾中。循環直到主資料夾中沒有任何內容為止。
基本上,所有客戶端都應盡可能保持忙碌,每個客戶端都需要花時間轉換每個檔案。
答案4
你的問題的答案取決於大部分關於您用來「轉換」這些影片檔案的軟體,以及這需要什麼。
Adobe After Effects 有一種稱為「網路渲染」的叢集模式,但這並不是理想的解決方案。 (上次我檢查它涉及將您的視訊渲染為想像序列,然後可能需要將其重新組合成視頻供您使用)
基本想法是將電影分成多個區塊,並讓不同的 PC 處理每個區塊:
應該有一些命令列視訊編碼工具可以選擇僅處理特定範圍的幀;這可以自動進行分割。
每個區塊都可以複製到不同的共用資料夾(同樣容易自動化)
「農場」中的每台 PC 都會查看這些共用資料夾之一以查找要轉換的來源影片。 (假設進行轉換的軟體具有「監視資料夾」的功能,這很容易,但是可以為此配置一個批次檔/shell 腳本)
如果不知道影片「轉換」的性質、您正在使用什麼軟體或您可以使用的腳本/程式設計水平,就不可能進一步發表評論。