淺談HBase的數據分佈

若是你對大數據存儲、分佈式數據庫、HBase等感興趣,歡迎加入咱們,一塊兒作最好的大數據在線存儲,職位參考及聯繫方式:https://maimai.cn/job?webjid=1heZGIyM4&srcu=1aOrffoj1&src=app&fr=my_jobsrecruit_jobweb

數據分佈問題簡述

分佈式產生的根源是「規模」,規模可理解爲計算和存儲的需求。當單機能力沒法承載日益增加的計算存儲需求時,就要尋求對系統的擴展方法。一般有兩種擴展方式:提高單機能力(scale up),增長機器(scale out,水平擴展)。限於硬件技術,單機能力的提高在一個階段內是有上限的;而水平擴展在理論上能夠是無限的,同時,也更廉價、更容易落地。水平擴展能夠經過快速、簡單的「加機器」,有效解決業務快速增加的問題,這幾乎是現代分佈式系統必備的能力。對於爆發式增加的業務,水平擴展彷佛是惟一可選擇的方案。數據庫

對於存儲系統而言,本來存儲在一臺機器上的數據,如今要存放在多臺機器上。此時必須解決兩個問題:分片,複製。app

  • 數據分片(sharding),又稱分區(partition),將數據集「合理的」拆分紅多個分片,每臺機器負責其中若干個分片。以此來突破單機容量的限制,同時也提高了總體的訪問能力。另外,分片也下降了單個分片故障的影響範圍。
  • 數據複製(replica),也叫「副本」。分片沒法解決單機故障丟數據的問題,因此,必然要經過冗餘來解決系統高可用的問題。同時,副本機制也是提高系統吞吐、解決熱點問題的重要手段。

分片和副本是正交的,這意味着咱們能夠只使用其中一種或都使用,但一般都是同時使用的。由於分片解決的是規模和擴展性的問題,副本解決可靠、可用性的問題。對於一個生產可用的系統,兩者必須同時具有。分佈式

從使用者/客戶端的角度看,分片和副本能夠歸結爲同一個問題:請求路由,即請求應該發送給哪臺機器來處理。大數據

  • 讀數據時,能經過某種機制來確保有一個合適的分片/副原本提供服務
  • 寫數據時,能經過一樣的機制來確保寫到一個合適的地方,並確保副本的一致性

不管客戶端的請求是直達服務端(如HBase/cassandra),仍是經過代理(如公有云上的基於gateway的訪問方式),請求路由都是分佈式系統必須解決的問題。ui

不管是分片仍是副本,本質上都是數據分佈的體現。下面咱們來看HBase的數據分佈模型。spa

相關文章
相關標籤/搜索