簡介
開放分散式計算架構是指以分散式計算技術為基礎,用於解決大規模的問題開放式軟體架構。開放分散式計算架構具有較好的伸縮性,特別在處理大數據問題時,開放分散式計算架構能提高處理速度。常見的開放分散式計算架構有:Hadoop、Spark。
特點
可移植性。各種計算機套用系統可在具有開放結構特性的各種計算機系統間進行移植,不論這些計算機是否同種型號、同種機型。
可互操作性。如計算機網路中的各結點機都具有開放結構的特性,則該網上各結點機間可相互操作和資源共享,不論各結點機是否同種型號、同種機型。
可剪裁性。如某個計算機系統是具有開放結構特性的,則在該系統的低檔機上運行的套用系統應能在高檔機上運行,原在高檔機上運行的套用系統經剪裁後也可在低檔機上運行。
易獲得性。在具有開放結構特性的機器上所運行的軟體環境易於從多方獲得,不受某個來源所控制。
實現為了全面實現上述開放系統的4個特性,首先要保證實現系統的可移植性和互操作性。
為實現可移植性,首先要建立起符合開放系統概念的開發平台,在這個開發平台上所開發的套用系統都可以在另一個符合開放系統概念的平台上,以同樣的工作環境去編譯和運行原套用系統,不必對源程式作任何修改。
為實現互操作性,首先應實現通信時的互操作性,即應實現開放系統互連環境(OSIE)。
軟體架構
軟體架構,是有關軟體整體結構與組件的抽象描述,用於指導大型軟體系統各個方面的設計。架構描述語言(ADL)用於描述軟體的體系架構。現在已有多種架構描述語言,如Wright(由卡內基梅隆大學開發),Acme(由卡內基梅隆大學開發),C2(由UCI開發),Darwin(由倫敦帝國學院開發) 。ADL的基本構成包括組件、連線器和配置。軟體體系結構是構建計算機軟體實踐的基礎。與建築師設定建築項目的設計原則和目標,作為繪圖員畫圖的基礎一樣,軟體架構師或者系統架構師陳述軟體架構以作為滿足不同客戶需求的實際系統設計方案的基礎。從和目的、主題、材料和結構的聯繫上來說,軟體架構可以和建築物的架構相比擬。一個軟體架構師需要有廣泛的軟體理論知識和相應的經驗來實施和管理軟體產品的高級設計。軟體架構師定義和設計軟體的模組化,模組之間的互動,用戶界面風格,對外接口方法,創新的設計特性,以及高層事物的對象操作、邏輯和流程。
分散式計算
在計算機科學中,分散式計算(英語:Distributed computing)。這個研究領域,主要研究分散式系統(Distributed system)如何進行計算。分散式系統是一組電腦(computer),通過網路相互連結傳遞訊息與通信後並協調它們的行為而形成的系統 。組件之間彼此進行互動以實現一個共同的目標。把需要進行大量計算的工程數據分區成小塊,由多台計算機分別計算,再上傳運算結果後,將結果統一合併得出數據結論的科學。
分散式計算研究主要集中在分散式作業系統研究和分散式計算環境研究兩個方面。在過去的 20 多年間出現了大量的分散式計算技術, 如中間件技術、 格線技術、 移動 Agent 技術、P2P 技術以及最近推出的 Web Service 技術等。每一種技術都得到了一定程度的認同, 在特定的範圍內得到了廣泛的套用。但是,所有分散式計算技術都沒有得到全世界的公認, 沒有一種技術能顯示出是分散式計算技術的主流方向。技術的複雜性和多樣性使得分散式計算機的研究十分活躍, 同時也使得分散式計算技術的普及非常困難。分散式系統的例子來自有所不同的面向服務的架構,大型多人線上遊戲,對等網路套用。目前常見的分散式計算項目通常使用世界各地上千萬志願者計算機的閒置計算能力,通過網際網路進行數據傳輸(志願計算)。如分析計算蛋白質的內部結構和相關藥物的Folding@home項目,該項目結構龐大,需要驚人的計算量,由一台電腦計算是不可能完成的。雖然現在有了計算能力超強的超級計算機,但這些設備造價高昂,而一些科研機構的經費卻又十分有限,藉助分散式計算可以花費較小的成本來達到目標。
Hadoop
Hadoop是一款支持數據密集型分散式應用程式並以Apache 2.0許可協定發布的開源軟體框架。它支持在商品硬體構建的大型集群上運行的應用程式。Hadoop是根據谷歌公司發表的MapReduce和Google檔案系統的論文自行實現而成。所有的Hadoop模組都有一個基本假設,即硬體故障是常見情況,應該由框架自動處理。
Hadoop框架透明地為套用提供可靠性和數據移動。它實現了名為MapReduce的編程範式:應用程式被分區成許多小部分,而每個部分都能在集群中的任意節點上運行或重新運行。此外,Hadoop還提供了分散式檔案系統,用以存儲所有計算節點的數據,這為整個集群帶來了非常高的頻寬。MapReduce和分散式檔案系統的設計,使得整個框架能夠自動處理節點故障。它使應用程式與成千上萬的獨立計算的電腦和PB級的數據。現在普遍認為整個Apache Hadoop“平台”包括Hadoop核心、MapReduce、Hadoop分散式檔案系統(HDFS)以及一些相關項目,有Apache Hive和Apache HBase等等。
Spark
Apache Spark 是專為大規模數據處理而設計的快速通用的計算引擎。Spark是UC Berkeley AMP lab (加州大學伯克利分校的AMP實驗室)所開源的類Hadoop MapReduce的通用並行框架,Spark,擁有Hadoop MapReduce所具有的優點;但不同於MapReduce的是Job中間輸出結果可以保存在記憶體中,從而不再需要讀寫HDFS,因此Spark能更好地適用於數據挖掘與機器學習等需要疊代的MapReduce的算法。
Spark 是一種與 Hadoop 相似的開源集群計算環境,但是兩者之間還存在一些不同之處,這些有用的不同之處使 Spark 在某些工作負載方面表現得更加優越,換句話說,Spark 啟用了記憶體分布數據集,除了能夠提供互動式查詢外,它還可以最佳化疊代工作負載。
Spark 是在 Scala 語言中實現的,它將 Scala 用作其應用程式框架。與 Hadoop 不同,Spark 和 Scala 能夠緊密集成,其中的 Scala 可以像操作本地集合對象一樣輕鬆地操作分散式數據集。
儘管創建 Spark 是為了支持分散式數據集上的疊代作業,但是實際上它是對 Hadoop 的補充,可以在 Hadoop 檔案系統中並行運行。通過名為 Mesos 的第三方集群框架可以支持此行為。Spark 由加州大學伯克利分校 AMP 實驗室 (Algorithms, Machines, and People Lab) 開發,可用來構建大型的、低延遲的數據分析應用程式。Spark 主要有三個特點:首先,高級 API 剝離了對集群本身的關注,Spark 套用開發者可以專注於套用所要做的計算本身。其次,Spark 很快,支持互動式計算和複雜算法。最後,Spark 是一個通用引擎,可用它來完成各種各樣的運算,包括 SQL 查詢、文本處理、機器學習等,而在 Spark 出現之前,我們一般需要學習各種各樣的引擎來分別處理這些需求。