1. 程式人生 > 其它 >02分散式計算

02分散式計算

分散式計算

定義

多個通過網路互聯的計算機都具有一定的計算能力,它們之間互相傳遞資料,實現資訊共享,協作共同完成一個處理任務

原理

分散式計算就是將計算任務分攤到大量的計算節點上,一起完成海量的計算任務

優點

  • 稀有資源共享
  • 通過分散式計算可以在多臺計算機上平衡計算負載
  • 可以把程式放在最適合執行它的計算機上

ACID原則

ACID是資料庫事務正常執行的四個原則

  • A(atomicity)-- 原子性
  • C(consistency)-- 一致性
  • I(isolation)-- 獨立性
  • D(durability)-- 永續性

CAP理論

一個分散式系統最多隻能同時滿足一致性、可用性、分割槽容錯性 三項中的兩項

  • 一致性(consistency)
  • 可用性(availability)
  • 分割槽容錯性(partition tolerance)

BASE理論

base是指基本可用性(basically available)、軟狀態(soft state)、最終一致性(eventual consistency)

最終一致性分為:強一致性、弱一致性、最終一致性

一致性雜湊

一致性雜湊將整個雜湊值空間組織成一個虛擬的圓環

影子節點沒有提供服務的能力

分散式系統的特性

容錯性

高可擴充套件性

開放性

併發處理能力

透明性

分散式儲存系統例項 Apache Hadoop

簡介

Hadoop是由Apache基金會開發的分散式儲存與計算框架

組成

Hadoop是由兩個重要模組組成

一個是Hadoop分散式檔案系統(Hadoop Distributed File System,HDFS),可以將檔案資料分散式地儲存在叢集中的不同節點上

另一個是MapReduce系統,一個針對大量資料的分散式計算系統

HDFS

Hadoop分散式檔案系統是一個主從式的分散式檔案系統,是GFS的一種開源實現

HDFS可以利用大量廉價儲存器組成分散式儲存叢集,取代昂貴的集中式磁碟儲存陣列

HDFS叢集組成

HDFS叢集由一個NameNode和多個DataNode組成,除此之外還有用於熱備份的Secondary Name Node,防止叢集出現單點故障

NameNode是整個叢集的管理者,它並不儲存資料本身,而是負責儲存檔案系統的元檔案

DataNode是實際的資料儲存節點,負責相應NameNode建立、刪除和複製塊的命令

Secondary Name Node是NameNode的備份節點,當NameNode宕機需要重啟時,則可以利用Secondary NameNode中的資料加快NameNode的重啟恢復資料

MapReduce

MapReduce 既是Hadoop中的模組,也是一個計算模組

使用者需要自己將演算法劃分為Map和Reduce兩個階段

首先將資料劃分為小塊的資料,將資料分配到不同計算節點的Map任務中計算

然後將計算結果彙總到Reduce節點中進行合併,得出最終結果

分散式檔案儲存GFS

GFS--Google File System

GFS設計思路

將檔案劃分為若干塊(Chunk)儲存

每塊固定大小64M

通過冗餘來提高可靠性

每個資料塊至少在3個數據塊伺服器上冗餘

通過單個Master來協調資料訪問、元資料儲存

無快取

GFS架構缺點

單點故障

效能瓶頸

解決單點故障問題

採用多個(如三個)影子Master節點進行熱備份,一旦主節點損壞,立刻選舉一個新的主節點服務

解決效能瓶頸問題

儘可能減少資料存取中Master參與程度

Master不存任何資料,只有元資料

客戶端快取元資料

Master節點任務

儲存元資料

檔案系統目錄管理與加鎖

與ChunkServer進行週期性通訊

資料塊建立、複製及負載均衡

垃圾回收

刪除陳舊資料塊

GFS架構特點

採用中心伺服器模式

不快取資料

在使用者態下實現

提供專用的訪問介面

GFS容錯機制

Master容錯

三類元資料:名稱空間(目錄結構)、Chunk與檔名的對映以及Chunk副本的位置資訊

前兩類通過日誌容錯,chunk副本資訊儲存於Chunk Server, Master出現故障時可恢復

Chunk Server容錯

每個Chunk有多個儲存副本(通常為三個),分別儲存於不同的伺服器上

每個Chunk又劃分為若干個Block(64KB),每一個Block對應一個32bit的校驗碼,保證資料正確(若某個Block錯誤,則轉移至其他Chunk副本)

分散式系統

分散式儲存系統的五個子方向

結構化儲存

非結構化儲存

半結構化儲存

In-memory儲存

NewSQL

結構化儲存

傳統結構化儲存強調以下內容:

結構化的資料

強一致性

隨機訪問

非結構化儲存

非結構化儲存強調的是高可擴充套件性

分散式檔案系統

半結構化儲存

半結構化是為了解決非結構化儲存系統隨機訪問效能差的問題

鍵-值

In-memory儲存

將資料儲存在記憶體中,從而獲得讀寫的高效能

Redis、記憶體

NewSQL

分散式計算系統分類

傳統基於訊息的系統--MPI

MapReduce家族系統--Hadoop的Mahout、Spark的MLI

圖計算系統

基於狀態的系統

實時流處理系統

典型的分散式系統

網格系統

P2P系統

透明計算

區塊鏈系統

網格系統

能夠將多組織擁有和管理的計算機、網路、資料庫和科學儀器綜合協同使用的基礎設施

P2P系統

簡介

對等網路系統(Peer-To-Peer),簡稱P2P系統,即媒體及公眾所稱的“點對點系統”

P2P系統是一種應用在對等者(Peer)之間分配任務和工作負載的分散式應用架構的系統

三個性質

高度分散化

自組織性

多管理域

特點

部署低門檻

有機增長

對故障與攻擊的恢復力

資源的豐富性與多樣性

透明計算

是一種使用者無須感知計算機作業系統、中介軟體、應用程式和通訊網路的具體所在,只需根據自己的需求,通過網路從所使用的各種資源裝置中選擇並使用相應服務的計算模式

區塊鏈

簡介

區塊鏈(Blockchain)是一種去中心化、不可篡改、可追溯、多方共同維護的分散式資料庫系統

核心特徵

塊鏈結構

多獨立拷貝儲存

拜占庭容錯