HBase使用者福利
新使用者9.9元即可使用6個月雲資料庫HBase,更有低至1元包年的入門規格供廣大HBase愛好者學習研究,更多内容
請參考連結前言
HBase可以支援百TB資料規模、數百萬QPS壓力下的毫秒響應,适用于大資料背景下的風控和推薦等線上場景。阿裡雲HBase服務了多家金融、廣告、媒體類業務中的風控和推薦,持續的在高可用、低延遲、低成本方向上進行優化。目前單叢集承諾可用性99.9%,SSD機型上可以做到請求毛刺99.5% < 50ms,以及新上線的表内冷熱分離可以加速熱資料通路性能、減少冷資料存儲成本并且在API上對使用者透明。為了進一步滿足客戶在可用性以及低延遲上的訴求,阿裡雲HBase将提供以主備架構為平台,以備援、并發、隔離、降級等全方位服務為支撐的高可用解決方案,目标提供99.99%可用性、99.9%請求小于50ms。目前高可用項目一期已經完成,本文将介紹主備架構以及一鍵切換能力。
HBase單叢集可用性
一個HBase系統包含了Zookeeper、HDFS、HBase三個元件。其中Zookeeper在資料和計算上都進行了備援,且是一個可自愈系統,單節點故障可在秒級恢複。HBase對Zookeeper是輕依賴,一般不會出現大問題。HDFS是一個Master-Slave模式的分布式檔案系統,存在中心節點Namenode,Namenode支援以HA方式部署,單Namenode故障可秒級恢複,在兩個NN都當機的情況下依然可以重新開機自愈,但恢複時間取決于回放日志大小,在分鐘級别。資料多副本備援,Datanode單節點當機不中斷服務。HBase也是一個Master-Slave模式的分布式系統,其中HMaster不參與讀寫路徑,是以HMaster當機不中斷服務,但長期當機會影響負載均衡、Failover等能力,HMaster支援HA方式部署。HBase還有一個單點是Meta服務,它随機選擇一個RegionServer節點作為宿主,如果meta服務不可用則所有請求路由會失效,導緻整體不可用。由于用戶端有路由緩存,meta服務停機不會立即造成不可用。HBase資料分片使用Range Partition的方式,每一個Region由一個RegionServer服務,即HBase的計算服務是0備援,是以當RegionServer故障時多個分片不可服務。HBase Failover機制可以自愈,單RegionServer當機恢複時間在分鐘級,多個RegionServer當機恢複時間在10分鐘~1小時時間不等。

單叢集HBase高可用部署
元件 | 角色 | 高可用機制 | 故障影響 |
---|---|---|---|
Zookeeper | 資料、計算備援 | 單點當機秒級服務 | |
HDFS | Namenode | 雙節點HA部署 | 單點當機秒級恢複,雙節點當機恢複時間在分鐘級 |
Datanode | 單點當機不中斷服務 | ||
HBase | HMaster | 不影響資料讀寫 | |
Meta服務 | 單點,可自愈 | 影響全局不可用 | |
Region | 局部不可用,單點分鐘級恢複,多點恢複時間可達小時級别 |
核心或運作環境Bug造成HBase自愈不可控
case1 某金融公司自建HBase因ECS重新開機導緻WAL資料破壞,HBase Failover無法進行,叢集不可用無法自愈
case2 某視訊公司自建HBase叢集Meta資料陷入不一緻無法恢複,造成分區無法上線,部分表不可用無法自愈
case3 某媒體公司IO壓力較大經常觸發空間洩漏Bug,導緻空間不足叢集當機無法自愈
以上是真實的案例,Bug是不可避免的,未知Bug處理考驗核心團隊的技術實力,需要具備外科手術的能力,但其處理時間是不可預期的。
雲HBase主備高可用方案
故障恢複時間可預知的高可用系統,故障發生時可以在分鐘級别恢複讀寫能力。實作方案選擇經典的主備模式,也支援主主模式。備叢集部署在同城的不同機房内,在資源層面完全隔離,軟體可部署不同的版本,最大程度保持兩個叢集的獨立性。從經驗資料出發,單機房故障恢複時間的上限為1個小時,在這1個小時内另一個機房也發生故障的機率非常低,有兩種情況除外:第一種是城市級災難,這個需要異地容災方案;第二種是故障源于業務流量增長,系統過載,此時的解決方案是限流或者擴容。這兩種情況不在本文設計考慮之内。系統提供一鍵切換能力,不需要用戶端重新開機,每一個用戶端在收到切換信号時會自動完成連接配接的切換,用戶端的切換是并發進行的,所有用戶端可以在10秒内完成切換。
高可用方案可以獨立提供給自建使用,支援自建和雲HBase混合主備。如果你已經擁有一個HBase叢集,可以友善的彈出一個備援備叢集,備叢集的建表和資料複制都是自動完成。當故障發生時,可以在控制台切換流量到備庫,待主叢集恢複後再把流量切回。雲HBase高可用服務是一個獨立的服務,可以看做是基于HBase之上的一個中間件,支援混合雲是我們的設計原則,雲上同VPC下的自建HBase、EMR HBase、雲HBase可以友善的進行主備混合使用,對于IDC自建HBase或者它雲上的HBase則需要使用者自行解決網絡聯通。
簡單易用,HBase用戶端從普通模式轉化為高可用模式不需要修改代碼。雲HBase會提供一個插件內建到HBase用戶端,并且為高可用提供一個新的Endpoint。這個Endpoint就是簡單的 ip+port,用來替換單叢集模式下的Zookeeper位址。使用者可以選擇核心表進行高可用建設,非核心表依然保持單叢集來降低成本。對于高可用的表,可以通過高可用用戶端進行建立、修改和删除,控制台會保證主備叢集中繼資料的一緻性。目前我們支援0.96、0.98、1.x、2.x、雲HBase增強版等多個版本。
0.96 | 1.x | 2.x | 雲增強版 | |
---|---|---|---|---|
YES | NO | |||
版本主備相容性清單
控制台提供一鍵切換不需要重新開機用戶端,提供AliHBaseConnector作為原生HBase用戶端的一個插件,插件内部會封裝主備切換邏輯。用戶端啟動時會從BDS擷取主備位址資訊同時建立一個高可用的指令通道,控制台發出的切換指令通過該通道到達用戶端,用戶端自動的斷開舊連結,打開備庫連結并重試請求。
綜上所述,雲HBase主備高可用架構如下圖:
- 資料同步
雲HBase并沒有采用開源的Replication方案,主要的原因包括:
HBase Replication抗熱點能力差,每台機器隻能處理自己的日志
HBase Replication Failover的設計存在缺陷,導緻一旦RS當機就會出現長時間同步延遲
HBase Replication與核心争搶資源,無法獨立擴容
HBase Replication的管理依賴表屬性配置,配置項很多,在混合雲模式下很難維護
BDS Replication是一個獨立的資料複制服務,提供延遲百毫秒級别的雙向資料同步能力。BDS Replication可以獨立的擴容縮容,它不需要磁盤,可以更好的管理成本。
- 主備一緻性
雲HBase主備采用的是異步複制,提供基于版本的最終一緻性。寫入主庫的一行資料在同步到備庫時,會保持和主庫一緻的版本号。雲HBase高可用目前僅支援最終一緻性切換,在切換時主備可能存在秒級的不一緻。對于風控、推薦、畫像類的應用,最終一緻性是滿足需求的。如果您使用了CheckAndPut、CheckAndDelete這樣的接口則會出現一緻性問題,此種情況請聯系雲HBase提供技術咨詢。
- 配置服務
配置服務有兩個作用,存儲主備叢集的位址資訊和通知切換指令。高可用用戶端在啟動時會通路該服務加載主備叢集位址資訊。通過控制台執行的切換指令也會由配置服務通知所有的用戶端。配置服務本身采用了備援來保障存儲和消息的高可用。
- 監控
高可用服務可以實時顯示主備叢集的狀态。主、備角色在初始配置時确定不能更改,但狀态"active/standby"是可變化的,處于"active"狀态的叢集是目前用戶端通路的叢集。提供主備叢集雙向同步鍊路的實時延遲展示,同時提供用戶端連結數量監控,使得使用者可以準确的判斷切換進度。
雲HBase高可用使用方式
如果您已經使用了雲HBase并且希望增加一個備庫,隻需如下步驟
1 購買一個BDS叢集用于管理主備
2 購買一個空的雲HBase叢集作為備庫
3 輸入主備兩個叢集的執行個體ID建立高可用通路位址
4 開始您的高可用之旅
如果您使用的是ECS自建叢集或者EMR HBase,希望增加一個備庫,隻需如下步驟
3 配置域名映射和安全組(會提供相關的服務一鍵解決)
4 輸入主備兩個叢集的位址資訊建立高可用通路位址
5 開始您的高可用之旅
具體的操作流程請參考手冊:
https://help.aliyun.com/document_detail/140940.html?spm=a2c4g.11186623.6.719.30954117Tg56BR