利用Beowulf讓普通PC變叢集

來源:互聯網
上載者:User
現在,Linux在IT業裡已經有著非常重要的影響,除了其具有免費、高效、可靠等優勢外,對於電腦科學家和那些需要進行大量運算的科學家來說,它還是一個非常強大的工具。自從Donald Becker發起了Beowulf叢集計算以後,在NASA的Goddard Space Flight Center工作的Thomas Sterling又擴充了Linux在高效能並行計算領域的應用。今天,大量以普通PC為基礎的叢集出現在了各個層級的實驗室、工業科技中心、大學甚至是一些小的學院中。如果有人問你是否一個有關科學計算的問題可以通過一些鬆散的計算資源來解決?答案是當然可以。我們可以使用Beowulf叢集,它可以使用很多普通的PC做成一個叢集來解決我們所面臨的問題,並且這種叢集所具有的價格優勢是傳統的並行電腦所無法比擬的。

如何建立一個Beowulf叢集事實上,使用現有的PC或者不用的舊PC,任何人都可以構建一個自己的並行系統來練習並行編程或者進行並行運算。在一個電腦實驗室裡,我們可以將PC機做成雙啟動系統(可以根據需要進入Windows或者Linux),將其用作兩種用途。此外,對於那些已經不再使用的機器則可以像Stone SouperComputer一樣做成一個並行的運算系統。

沒有兩個Beowulf叢集是完全相同的。事實上,這種系統的硬體和軟體的配置是如此的靈活,以致於其可以被輕鬆定製成為不同的組合。雖然每一個Beowulf叢集系統都是不同的,並且其配置也是根據應用程式的需要來進行的,但還是有一些基本要求是相同的。下面我們就來看一看在建立一個叢集時需要考慮的一些基本問題。

建立一個叢集的最低需求要建立一個叢集,每一個節點至少應該包含有一個Intel 486 CPU和主板。雖然Intel 386也可以正常工作,但其效能將不值得我們為之付出勞動。記憶體的需求則取決於目標應用程式的需求,但每一個節點至少需要16MB的記憶體。大部分應用程式都會要求每一個節點具有32MB以上的記憶體。通過使用集中式的磁碟空間,節點可以從磁碟片、小容量的硬碟或者網路檔案系統啟動。啟動以後,節點可以通過網路訪問檔案系統中屬於自己的Root分區,這種訪問一般都是通過NFS(網路檔案系統)來實現的。在一個具有高頻寬和高效能伺服器的環境中,這種配置的工作狀態將非常不錯。要想獲得更好的效能,應該在本地磁碟上安裝有作業系統、交換分區,並且資料可以在每一個節點獲得。每一個節點應該至少有200MB的磁碟空間用於存放作業系統組件和用作交換空間,還應該有400MB或者更多的空間保留用於程式運行中使用。每一個節點至少要包含有一個網卡(最好是高速網卡)。最後,每一個節點都需要一個顯卡,一個硬驅和一個電源。鍵盤和顯示器則只有在進行系統安裝和配置時需要。

需要注意的是,所有選擇使用的硬體在Linux中都要有驅動程式或者相應的模組,一般來說,除非這些硬體非常陳舊,否則都不是問題。對於需要對整個叢集進行管理的主節點來說,為了方便起見,最好安裝一個X伺服器。安裝過程中,如果某一個特定的組件出現問題或者沒有驅動程式,可以到論壇中尋求協助。

網路連接如果可能,每一個節點最好處於一個單獨的區域網路中,並且擁有一個自己的Hub。這樣可以保證網路通訊能夠順暢進行。叢集中的第一個或者主節點應該具有兩個網卡,其中一個與內部網路相連,另外一個與公用網路相連。這對於使用者登入和檔案傳輸尤為有用。在內部網路中,需要使用不在 Internet上使用的IP地址。一般來說,最簡單的辦法就是A類10.0.0.0地址,因為這些地址是專門為那些沒有路由的網路保留的。在本例中,每一個節點的/etc/hosts檔案看起來如下所示:

一個節點號為2,使用Red Hat Linux的ifcfg-eth0設定檔如下所示:

此外,我們還經常需要一個DNS,對於那些節點名字和地址經常變化的內部網路更是如此。DNS可以運行在第一個節點來為內部網路的節點提供名字/地址的解析。

本機存放區在載入作業系統的問題上,建立Beowulf叢集需要預先做一些儲存方面配置的決定。因為一旦安裝完成後要變更就要重新安裝所有的節點,所以一定要進行非常細緻的考慮。雖然大部分基於Linux的Beowulf叢集啟動並執行是都是Red Hat Linux發行版,但事實上,基本上所有的Linux發行版都支援基本的叢集。Red Hat的安裝非常簡單,我們可以使用光碟片或者通過叢集的第一個節點進行安裝(前提是在節點上已經有一份發行版拷貝)。在實際的使用過程中,很多人發現從主節點通過FTP把作業系統載入到每一個節點要比通過NFS掛載Root分區好。這種方法避免了一些不必要的網路通訊,在應用程式運行時保留頻寬用於資訊的傳送。

Red Hat Linux運行環境只需要每一個節點有大約100MB的磁碟空間,不過,在實踐中發現在每一個節點包含一個編譯和一些其它的工具還是非常必要。因此,在配置中,每一個作業系統需要大約175MB的磁碟空間。雖然有一些叢集將交換分區配置在了普通的檔案系統上,但在本地磁碟上使用一個專門的交換分區才是一個更高效的選擇。一般而言,節點的交換空間的大小應該是記憶體的2倍,而當記憶體大於64MB時,交換空間應該等於記憶體的大小。在實際中,當記憶體為64MB至 128MB時,我們通常將交換分區設為128MB。因此,如果某一個節點有32MB記憶體,有2個硬碟,那麼我們就應該將Linux系統載入至主驅動上,而將另外一個硬碟用作交換空間(64MB)和本地Runspace(138MB)。

叢集管理系統管理和維護是一件非常乏味的工作,對於大型的叢集更是如此。不過,我們可以從網上找到一些工具和指令碼來簡化這些工作。比如,一個節點必須在時間和系統檔案(/etc/passwd、/etc/group、/etc/hosts、/etc/hosts.equiv等)上與其它的節點保持同步,那麼一個簡單的可以被cron定時執行的指令碼將可以來完成這個同步過程。

一旦所有的節點都載入和配置完成後,我們就可以來開發和設計並行應用程式來充分利用新系統的運算能力。

為叢集計算開發並行應用程式在Linux下,我們可以使用商業編譯器,也可以使用免費的編譯器。GCC、g++和FORTRAN(g77)編譯器被包含在了大部分的Linux發行版中。其中C和C++編譯器已經非常優秀,而FORTRAN編譯器也在不斷的進步之中。商業編譯器則可以從Absoft、 Portland Group、The Numerical Algorithms Group等公司擷取。如果配置適當,一些商業的FORTRAN-90編譯器可以自動實現並行計算。一般來說,開發並行代碼需要在處理器之間使用PVM (並行虛擬機器)、MPI(資訊傳送介面)或者其它的通訊庫來進行清晰的資訊傳遞。PVM和MPI都是免費的,並且可以在計算的過程中通過簡單的庫調用來實現節點的之間的資訊傳遞。

當然,並不是所有的計算任務都適合用並行計算來實現。一般而言,為了充分利用並行計算的優勢,通常要對針對任務進行一些開發工作。很多科學問題都可以進行細分,也就是可以將其分解為相對獨立的模組,以使其可以在各個獨立的節點進行處理。比如,影像處理任務通常可以再細分,讓每一個節點都可以處理某一部分的映像。當某一映像可以被獨立處理時(比如處理這部分映像不需要其它部分的資訊),效果更好。

對於並行計算來說,最危險的缺陷就是將一個計算問題變成了一個通訊問題(不管是使用現有的並行運算代碼還是自己新開發代碼)。這種問題一般發生在將任務過分細化,從而使得各個節點為了保持同步而傳輸資料的時間超過了CPU進行計算的時間。在這種情況下,使用更少的節點反而可能會獲得更多的已耗用時間和更充分地利用資源。這就是說,對於不同的並行應用程式而言,要根據本地節點計算的負載和通訊來進行調整和最佳化。

最後要說的是,在開發並行演算法時,如果所使用的叢集環境的節點各不相同,那麼就要充分考慮到這個問題。事實上,在運行並行應用程式時,各個節點間CPU的速度是非常關鍵的,因此,在一個配置不同的叢集中,只簡單地將任務平均分配,那麼速度比較快的CPU就必須要等待速度比較慢的 CPU完成自己的任務,這顯然是不合理的。因此,設計適當的演算法可以很好地處理這種情況,當然,不管採用什麼樣的演算法,一定要充分考慮到通訊過載問題。

平行處理可以以很多種方式來組織,但是master/Slave的組織方式是最易於理解和編寫程式的。在這種模式中,一個節點作為master,而另外一個則作為Slave。Master節點通常決定如何分割任務,以及指揮資訊的傳送,而Slave節點則只負責處理分配到的任務,並在任務完成的時候向master報告。

總結事實上,在開發並行代碼時,並沒有嚴格的規定,而是要根據實際情況來進行。最佳化硬體設定和演算法的前提是要知道所要啟動並執行應用程式的細節。在各個節點配置不同的叢集中,在各個節點中進行Server Load Balancer以及各個節點中的通訊都取決於硬體的具體情況。在通訊速度快的環境裡,可以將任務分得更細,反之則不宜將任務過分細化。

應該說“Beowulf運動”將並行計算福士化了。在Beowulf系統中使用標準資訊傳送庫開發的並行代碼可以不經過任何更改就直接運行在商業級的超級電腦之上。因此,Beowulf叢集可以作為一個入門的切入點,在需要時再將其過渡到大型主機上。此外,廉價、通用的叢集意味著並行電腦環境可以用於特定的任務,而大型的商業超級電腦由於其過於昂貴,故不可能使其專註於某個單一的應用程式。很顯然,隨著並行環境越來越多地被應用到現實工作,將會更進一步促進其在各個領域的應用。



相關文章

Beyond APAC's No.1 Cloud

19.6% IaaS Market Share in Asia Pacific - Gartner IT Service report, 2018

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。