1. 程式人生 > >MPI與Hadoop的區別

MPI與Hadoop的區別

1.Hadoop與MPI的主要區別體現在資料儲存和資料處理在系統中位置不同。

        MPI是計算與儲存分離,Hadoop是計算向儲存遷移。這一點體現出,hadoop系統中資料儲存的位置更重要。

        MPI是一種基於訊息傳遞機制的並行程式設計標準,它為程式設計者提供了豐富而方便的通訊函式,在程式設計上非常簡單而且符合普通程式設計師的程式設計習慣。然而MPI有一個比較大的缺陷,即底層沒有一個分散式的檔案系統對其進行支援。在MPI中資料儲存的節點和資料處理的節點往往是不同的,一般在每次計算開始時MPI需要從資料儲存節點讀取需要處理的資料分配給各個計算節點,然後進行資料處理,即MPI的資料儲存和資料處理是分離的。對於計算密集型的應用MPI能表現出良好的效能,但對於處理TB級資料的資料密集型應用,大量的資料在節點間進行交換,網路通訊時間將成為影響系統性能的重要因素,效能會大大降低。用“計算換通訊”也是MPI並行程式設計中的基本原則 。

        在Hadoop中有HDFS檔案系統的支援,資料是分散式儲存在各個節點的,計算時各節點讀取儲存在自己節點的資料進行處理,從而避免了大量資料在網路上的傳輸,實現“計算向儲存的遷移”。這對處理TB級的海量資料有很大的優勢。

        Hadoop從上層架構上看是一種典型的主從式結構,主從式的結構在MPI並行程式設計中也是一種重要的並行程式設計方法,主節點負責對整個系統的資料和工作進行管理和分發。而Hadoop與MPI最根本的區別在於,Hadoop有一個主從式的檔案系統HDFS在底層支撐其Map/Reduce的資料處理功能。有了HDFS,Hadoop可以方便地實現“計算向資料儲存位置的遷移”,從而大大提高了系統計算效率。主從式基礎儲存和主從式資料處理構成了Hadoop的基本架構模型。

2.MPI無法應對節點的失效。

     如果MPI在執行過程出現節點失效及網路通訊中斷,則只有返回並退出,MPI沒有提供一套機制處理節點失效後的備份處理方案問題,所以如果中途出現問題,所有的計算將重新開始,這是非常耗時的。Hadoop為應對伺服器的失效,在資料備份上下了很大的功夫,資料塊會形成多個副本儲存在不同的地方,一般會有3個副本,採用簡單化的跨機架資料塊儲存,最大限度避免了資料丟失,資料的安全性得到了保證。