大規模分佈式系統概念介紹

大規模分佈式計算概念

1、分佈式計算
分佈式計算:研究如何把一個需要非常巨大的計算能力才能解決的問題分成許多小的部分,然後把這些部分分配給許多計算機進行處理,最後把這些計算結果綜合起來得到最終的結果。

分佈式計算比起其它算法具有以下幾個優點:稀有資源可以共享;通過分佈式計算可以在多臺計算機上平衡計算負載;可以把程序放在最適合運行它的計算機上,其中,共享稀有資源和平衡負載是計算機分佈式計算的核心思想之一。

2、並行計算
並行計算(Parallel Computing)是指同時使用多種計算資源解決計算問題的過程,是提高計算機系統計算速度和處理能力的一種有效手段

並行計算可分爲時間上的並行和空間上的並行。時間上的並行就是指流水線技術,而空間上的並行則是指用多個處理器併發地執行計算

爲利用並行計算,通常計算問題表現爲以下特徵:
1)將工作分離成離散部分,有助於同時解決;
2)隨時並及時地執行多個程序指令;
3)多計算資源下解決問題的耗時要少於單個計算資源下的耗時

空間上的並行導致了兩類並行機的產生,分爲:
單指令流多數據流(SIMD)
多指令流多數據流(MIMD)

常用的串行機也叫做單指令流單數據流(SISD)

MIMD類的機器又可分爲以下常見的五類:
並行向量處理機(PVP)
對稱多處理機(SMP)
大規模並行處理機(MPP)
工作站機羣(COW)
分佈式共享存儲處理機(DSM)

並行計算機有以下五種訪存模型:
均勻訪存模型(UMA)
非均勻訪存模型(NUMA)
全高速緩存訪存模型(COMA)
一致性高速緩存非均勻存儲訪問模型(CC-NUMA)
非遠程存儲訪問模型(NORMA)

3、雲計算
雲計算(cloudcomputing)是基於互聯網相關服務的增加、使用和交互模式,通常涉及通過互聯網來提供動態易擴展且經常是虛擬化的資源。

雲計算是一種理念,實際上是分佈式技術+服務化技術+資源隔離和管理技術(虛擬化)

虛擬化和服務化是雲計算的表現形式

虛擬化技術包括:資源虛擬化、統一分配檢測資源、向資源池中添加資源。重量級虛擬化產品:VMWare,輕量級虛擬化:Linux的LXC

服務思想包括:軟件即服務(SAAS)、平臺即服務(PAAS)、基礎設施即服務(IAAS)

雲計算特點如下:

  • 超大規模
  • 虛擬化
  • 高可靠性 使用了數據多副本容錯、計算節點同構可互換等措施來保障服務的高可靠性
  • 通用性
  • 高可擴展性 規模可以動態伸縮,滿足應用和用戶規模增長的需要
  • 按需提供服務
  • 極其廉價 特殊容錯措施可以採用極其廉價的節點來構成雲,自動化集中式管理使大量企業無需負擔日益高昂的數據中心管理成本,通用性使資源的利用率較之傳統系統大幅提升
  • 潛在的危險性

4、離線計算
在離線狀態下去分析這些數據,要分析的數據量很大,一般用並行計算方式提高效率,是一種分佈式計算應用方式

5、實時計算
是指一種增量計算,是增量性的,少量的,變化的,來了就能算了。也是一種分佈式計算應用方式

6、迭代計算
需要考慮階段,上一階段的結果是下一個階段的條件,而且爲了高效,最好中間結果保存內存,不要頻繁讀寫文件。也是一種分佈式計算應用方式

大規模分佈式產品介紹

1、Hadoop
Hadoop是一個由Apache基金會所開發的分佈式系統基礎架構,用戶可以在不瞭解分佈式底層細節的情況下,開發分佈式程序,充分利用集羣的威力進行高速運算和存儲。

優點:

  • 高可靠性 Hadoop按位存儲和處理數據的能力值得人們信賴
  • 高擴展性 Hadoop是在可用的計算機集簇間分配數據並完成計算任務的,這些集簇可以方便地擴展到數以千計的節點中
  • 高效性 Hadoop能夠在節點之間動態地移動數據,並保證各個節點的動態平衡,因此處理速度非常快
  • 高容錯性 Hadoop能夠自動保存數據的多個副本,並且能夠自動將失敗的任務重新分配
  • 低成本

Hadoop從最初的HDFS分佈式文件系統發展爲Hadoop+ZooKeeper+Hive+Pig+HBase生態系統

HDFS提供了一個可擴縮的、容錯的、可以在廉價機器上運行的分佈式文件系統,按行存儲,按64MB塊進行文件拆分

HDFS的架構是一個NameNode和多個DataNode的結構:

  • NameNode:存儲HDFS的元數據;管理文件系統的命名空間;創建、刪除、移動、重命名文件和文件夾;接受從DataNode來的Heartbeat和Blockreport
  • DataNode:存儲數據塊;執行從NameNode來的文件操作命令;定時向NameNode發送Heartbeat和Blockreport

Hadoop並不是爲了追求一個並行計算的框架而設計,提供快捷和靈活的計算方式去服務各種計算場景,它更多的是一個分佈式文件系統,提供文件數據的存儲和查詢

2、Zookeeper
ZooKeeper是一個分佈式的,開放源碼的分佈式應用程序協調服務。它是一個爲分佈式應用提供一致性服務的軟件,提供的功能包括:配置維護、域名服務、分佈式同步、組服務等。ZooKeeper的目標就是封裝好複雜易出錯的關鍵服務,將簡單易用的接口和性能高效、功能穩定的系統提供給用戶

ZooKeeper在Hadoop生態體系中是作爲協同系統出現的

ZooKeeper是以Fast Paxos算法爲基礎的,ZooKeeper的基本運轉流程:

  • 選出Leader
  • 同步數據
  • 選出Leader過程中算法有很多,但要達到的選出標準是一致的
  • Leader要具有最高的執行ID,類似root權限
  • 集羣中大多數的機器得到響應並接受選出的Leader

3、HBase
HBase是一個分佈式的、面向列的開源數據庫,不同於一般的關係數據庫,它是一個適合於非結構化數據存儲的數據庫

HBase – Hadoop Database,是一個高可靠性、高性能、面向列、可伸縮的分佈式存儲系統,利用HBase技術可在廉價機器上搭建起大規模結構化存儲集羣

HBase位於結構化存儲層,Hadoop HDFS爲HBase提供了高可靠性的底層存儲支持;Hadoop MapReduce爲HBase提供了高性能的計算能力;Zookeeper爲HBase提供了穩定服務和failover機制;Pig和Hive還爲HBase提供了高層語言支持,使得在HBase上進行數據統計處理變的非常簡單;Sqoop則爲HBase提供了方便的RDBMS數據導入功能,使得傳統數據庫數據向HBase中遷移變的非常方便

HBase中的所有數據文件都存儲在Hadoop HDFS文件系統上,主要包括兩種文件類型

  • HFile, HBase中KeyValue數據的存儲格式,HFile是Hadoop的二進制格式文件,實際上StoreFile就是對HFile做了輕量級包裝,即StoreFile底層就是HFile
  • HLog File,HBase中WAL(Write Ahead Log) 的存儲格式,物理上是Hadoop的Sequence File

4、Storm
一款用於實時分析的軟件,流式計算方式,支持消息分流,增量數據通過消息分發,多個消息接受者並行接受處理

5、Spark
一款基於內存的用於迭代計算的框架

6、MPI(Message Passing Interface)
是消息傳遞並行程序設計的標準之一,它是一個規範,定義了進程間的通信接口,用於廣告算法和迭代算法

7、BSP(Bulk Synchronous Parallel 整體同步並行計算模型)
支持多階段,將複雜計算過程劃分多個階段,每個階段等待最慢的進程計算完成才能進行下一個階段,並且試圖通過一些參數指標估算出並行計算時間

8、DAG(Directed Acycline Graph 有向無環圖)
支持計算任務流,構成了一個任務並行流的概念

大規模分佈式系統架構模式

1、master-slave模式
實現方式:一臺計算機作爲主調度者,然後其它幾臺計算機根據調度完成任務;一臺計算機上多線程實現;上述兩種方式結合實現擴展,可以統一用socket進行通信

特點:
master必須一直存在於集羣中,需要承擔分配任務,負責協同一致性等角色,接受salve連接,探測感知salve狀態等等(master掛掉重選恢復問題,責任過多問題)

2、工廠管理模式
實現方式:
1)員工註冊到人資,管理者從人資中獲取員工信息
2)管理者負責分配任務,並將任務分配給員工
3)員工從倉庫獲取資源,執行完成後將產品放回倉庫

特點:
管理者(調度)分配任務,員工(多個程序)執行任務,人資(獨立程序)負責協同一致性等處理,倉庫(可存放任務類型的對象)負責資源供給與產品存放

3、消息中心模式
對於上述管理者和員工之間通過消息中心進行交互

4、網狀互聯模式
實體之間直接相連

5、外部級聯模式

6、內部分階段模式

7、集羣與兼容模式

8、服務化模式
採用webservice 、RESTFUL等

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章