1-3 常見的分散式系統

Aventador_S發表於2020-10-27

1 分散式儲存系統

1.1 中間控制節點架構

定義:單獨後設資料伺服器為中間控制,具體資料儲存伺服器為分散式的架構

代表:Hadoop Distributed File System(HDFS)

後設資料:描述資料的資料(包含具體資料的路徑,以及相關資訊)

架構圖:

特點:1.使用者進行資料讀寫時,先訪問儲存後設資料伺服器節點,得到真正資料的儲存資訊後,去真正儲存資料的節點進行讀寫

           2.儲存後設資料節點通常為單一的伺服器節點,但是因為訪問後設資料伺服器節點的頻率和訪問量都相對資料節點較小,所以不太可能會出現效能瓶頸

 

1.2 完全無中心架構

定義:客戶端通過裝置對映關係計算具體資料的位置,客戶端直接訪問

代表:計算模式(Ceph)

過程:描述資料的資料(包含具體資料的路徑,以及相關資訊)

架構圖:

流程:客戶端根據Mon服務通訊,以及一系列計算會得到客戶端需要讀寫的具體檔案路徑

與中間控制節點架構的相似點:真實資料都是分散式儲存在各個伺服器節點

與中間控制節點架構的不同點:架構中沒有中心節點;通過對映關係計算資料節點位置

 

2 分散式計算系統

2.1 Hadoop Map Reduce

定義:一種大資料程式設計模型,將資料處理運用Map和Reduce的概念進行分而治之的處理

理念:分而治之,將大任務劃分為小任務

應用場景:批處理(一次性處理資料)

原理:

計算例項:

特點:1.分散式計算

           2.中間結果都存放在硬碟,因此無法查詢上一個步驟的結果

           3.效率一般

 

2.2 Spark

定義:基於記憶體優化的分散式大資料計算框架

理念:分而治之,將大任務劃分為小任務,引入RDD概念

應用場景:批處理(效率最好)+流處理(微小批處理)

原理:從HDFS中讀取資料後,經過執行計劃,得到的中間結果儲存在分散式記憶體中

應用程式流程:一個Spark Task被拆分為多個小的Task並在Worker Node中執行,通過Cluster Manager(叢集管理器)監測Worker Node,協調資源

 

2.3 Flink

定義:對流資料可以進行計算的分散式大資料處理框架

理念:實時處理

應用場景:流處理

 

2.4 對比

 

3 分散式訊息佇列系統

Kafka是一個分散式訊息佇列,具有高效能、持久化、多副本備份、橫向擴充套件能力。生產者往佇列裡寫訊息,消費者從佇列中取訊息進行業務邏輯

相關概念:

Topic:定義特定的訊息,可以讓生產者和消費者都從該Topic中進行資料讀寫

Partition:一個Topic可以分成幾個分割槽(1個分割槽只能被1個消費者讀取)

Broker:伺服器儲存資料,可做備份

生產者:生產資料到Kafka

消費者:消費處理Kafka的資料

 

4 分散式機器學習系統

4.1 Spark機器學習

定義:以Spark為計算引擎的分散式機器學習框架

特點:1.提供一個分散式的模型訓練環境

           2.提供一個訓練資料集分散式處理的環境

4.2 分散式Tensorflow

步驟:1.建立工作節點。主節點W1和從節點W2,W3……

           2.機器學習任務傳送給W1,W1分發到W2,W3……

           3.每個節點進行相應的模型訓練

 

相關文章