2016-10-02 75 views
1

我的實驗室剛剛獲得了Microsoft Azure的贊助,我正在探索如何利用它。我是工業級雲服務新手,對於大量的術語和概念非常困惑。簡而言之,這裏是我的場景:使用Microsoft Azure作爲計算集羣

  1. 我想用多個數據集實驗相同的算法,即數據並行性。
  2. 該算法在Linux(ubuntu 16.04)上用C++實現。我盡我所能使用靜態鏈接,但仍依賴於一些動態庫。但是,這些動態庫可以通過apt輕鬆安裝。
  3. 每個數據集是結構化的,意味着數據(圖像,其他文件...)與文件夾組織。

想法系統配置將是一堆相同的虛擬機和共享的文件系統。然後我可以通過腳本或其他東西用'qsub'提交我的工作。有沒有辦法在Azure上做到這一點?

我調查了批量服務,但無法建立計算節點後安裝的依賴。我也有存儲問題。到目前爲止,我只看到了使用Blob存儲批處理的例子,它是非結構化的。

那麼,有沒有在Azure中的任何其他服務能滿足我的要求嗎?

回答

1

我有點想通了我的自我基礎上的文章:https://azure.microsoft.com/en-us/documentation/articles/virtual-machines-linux-classic-hpcpack-cluster/。這是我的解決方案:

  1. 使用Windows頭節點和一組Linux計算節點創建HPC Pack。以下是Marketplace中的幾個有用模板。

  2. 從頭部節點上,我們可以用「clusrun」裏面的PowerShell命令執行Linux的計算節點內,無論是內部HPC羣集管理器,或。我們可以通過apt-get爲計算節點輕鬆安裝依賴關係。

  3. 內的存儲帳戶的一個創建文件共享。這可以由集羣內的所有機器裝載。

  4. 這裏出現的一個小問題是,出於某種加密原因,您無法在Linux機器之外的Azure上掛載文件共享。我的腦海中有兩種解決方案:(1)將文件共享掛載到Windows頭節點,並通過FTP或SSH創建文件共享。 (2)創建另一個Linux VM(作爲網橋),在該VM上安裝文件共享,並使用「scp」從外部與其通信。由於我不熟悉Windows,我採用了後來的解決方案。

  5. 對於可執行文件,我只是上傳在本地機器上編譯的二進制可執行文件。大多數依賴關係是靜態鏈接的。儘管如此,仍然有一些動態對象。我將這些動態對象上傳到Azure,並在計算節點上執行程序時設置LD_LIBRARY_PATH。

  6. 作業提交在Windows頭節點完成。爲了使它更加靈活,我編寫了一個python腳本,它編寫XML文件。作業管理器可以加載這些XML文件來創建作業。下面是一些說明:https://msdn.microsoft.com/en-us/library/hh560266(v=vs.85).aspx

我認爲應該有更多與Azure的批量服務完美的解決方案,但到目前爲止,我的小集羣上運行得很好用HPC包。希望這篇文章可以幫助某人。

0

Azure的文件可以爲您提供一個共享的文件解決方案,爲你的Ubuntu箱 - 詳情請看這裏:

https://azure.microsoft.com/en-us/documentation/articles/storage-how-to-use-files-linux/

再根據您的需求,您可以通過使用容器創建通過Blob存儲僞結構然後在你的斑點的命名策略中使用「/」。

大衛的點,而批一般看着這些類型的工作負載,可能不適合您的解決方案。 VM Scale Sets(https://azure.microsoft.com/en-us/documentation/articles/virtual-machine-scale-sets-overview/)將允許您通過負載或時間表來擴展計算容量,具體取決於您的工作負載行爲。

+0

非常感謝您的回覆!我還發現Azure File非常有用。我成功部署了HPC Pack的集羣。 – Higerra