云計算一開始致力于為互動系統(systems of engagement)改善應用架構,而在高性能計算方面提供不了什么。而如今,領先的云服務提供商正在重構解決方案及相關的基礎設施,讓計算密集型應用切合實際、經濟高效。
在過去,云架構是為了交付將應用程序與Dropbox、Gmail、iTunes和Evernote等存儲結合起來的服務而設計的。Bright Computing公司的首席執行官Matthijs Van Leeuwen說:“集群的架構旨在暴露除了存儲外的其他資源,比如在定制網絡中執行廠商提供的或用戶構建的應用程序所需要的那些資源。”
酷似在專用硬件上運行的傳統集群,基于云的集群包括不同的分布式資源,這些資源因某個用途而結合起來。這可能包括:為可識別集群的數據庫管理系統(DBMS)、高性能計算(HPC)應用或大數據分析應用交付平臺。亞馬遜和Rackspace之類的公有云提供商暴露資源的預定義實例,它們可以用于在云基礎設施上構建集群。
OpenStack讓企業組織可以定制自己的資源實例,然后使用這些資源實例在自己的私有云中構建集群。物理服務器或使用物理服務器上虛擬機管理程序的虛擬機在專用的內部部署集群中很典型。對開發人員來說,區別主要在于資源實例抽象,這是云集群與專用集群之間的主要區別。
常見的集群使用場合
Leeuwen表示,云集群可以用來取代或補充專用資源。對于運行在低配專用硬件(比如筆記本電腦)上的應用程序而言,云可以用來為集群創建實例、使用集群以及刪除實例。在這種使用場合下,筆記本電腦只是訪問基于云的集群的最終用戶設備而已。它并不提供用來執行計算或設計網絡的任何實例化資源。
在第二種常見的使用場合下,基于云的資源可以用來補充專用資源。這種情況下,內部部署的資源通過云突發流程,由云端可用的那些資源予以拓展。基于云的資源只要根據需要創建實例、使用并刪除實例。可以做到內部部署資源與云端資源的這種區別對最終用戶和許多類型的應用而言是透明的。
這兩種使用場合都可以運用到公有云或私有云。企業組織可以設計其應用程序架構,以便直接做到這一點,或者充分利用Bright Cluster Manager之類的工具,在AWS公有云或在OpenStack私有云中構建集群,前期的開發和配置工作比較少。
彌補抽象方面的缺口
開發人員面臨的最大挑戰就是,用于相對專用硬件,配置云資源(比如網絡、處理器和存儲)的不同抽象模式。云依賴實例化資源。除了存儲外,暴露基于云的處理器實例在公有云和私有云解決方案中都相當成熟。最新的云解決方案隨帶服務和鉤子(hook),可用于指定異常需求,比如InfiniBand網絡連接、GPU加速和定制的IP網絡。
任何資源都需要通過這同一條路徑來傳輸,之后才能予以暴露,以便在任何一種類型的云里面利用。由于集群通常使用低延遲高帶寬的互連結構、加速器和協處理器以及其他的專門資源,這每一個在基于云的集群方面同時帶來了機遇和挑戰。
Leeuwen表示,企業組織完全由云服務提供商來支持存儲和計算之外的資源實例化。比如說,AWS通過亞馬遜VPC以及英偉達GPU實例,支持定制的IP網絡。一種良好的做法就是,開發標準的配置,或者充分利用第三方云管理工具,管理存儲、計算、網絡和加速器等資源,無論它們駐留在企業內部,還是與AWS協同使用。
延遲對集群來說很關鍵
通信延遲是構建可擴展集群應用面臨的最大挑戰之一。一個良好的做法就是,為HPC智能化緩存數據。在數據方面,這需要認真考慮使用更具成本效益的、速度較慢的持久性存儲服務(比如AWS S3)和歸檔服務(比如AWS Glacier),而不是成本較為高昂的RAM實例。
但是一個還要重大的網絡挑戰在于在運算期間,盡量縮短節點之間的通信延遲。處理期間充分利用消息傳遞的HPC應用最有可能出現瓶頸。大量使用消息傳遞接口(MPI)等接口的應用會陷入困境,除非開發人員和操作團隊確保節點之間的延遲極低。
如果MPI應用在密封在私有云或公有云里面的集群中運行,這個問題比較容易解決。但如果在不同公有云或私有云基礎設施上運行的不同節點之間有大量的MPI流量,這個問題就比較棘手。
這些考慮同樣適用于云端運行大數據分析任務。讓Hadoop分布式文件系統(HDFS)實例橫跨內部部署基礎設施和云基礎設施沒有太大意義。Leeuwen說:“但是完全在內部或完全在云端的HDFS實例實際上能取得相當好的效果。”
敏捷云整合解決方案提供商Jitterbit的首席技術官Ilan Sehayek表示,你在擴展時要保持性能的關鍵在于分布式架構。“讓用戶自行選擇哪里運行API,哪里運行支持API的服務。”
另外要確保所有通信由可擴展的消息傳遞基礎設施來支持,以便快速、有保障地處理API網關與服務之間的API請求。Sehayek補充說,面向集群的服務還需要高效的緩存技術,以便提供快速響應API這一機制。
原文標題:High-performance computing with cloud clusters