阿里肖冰:如何實現分鐘級別的HBase宕機恢復
原創Apache HBase是一個面向線上服務的數據庫,其原生支持Hadoop的特性,使其成為那些基于Hadoop的擴展性和靈活性進行數據處理的應用顯而易見的選擇,近幾年在全球得到了快速發展。
對任何一款數據存儲產品進行評價時,高可用性(HA)都是一個核心的考量指標,也是核心業務應用的先決條件。然而硬件故障、斷網斷電以及諸多不可預料的故障時刻都在挑戰著HBase的高可用性。從2011年開始,阿里就開始了在HBase上的應用研究和探索之路,目前已擁有上萬臺HBase集群規模。經歷過近五年時間的大量業務錘煉,阿里HBase在性能優化、功能完善、高可用性改進等方面,都積累了大量經驗。
在WOT2016互聯網運維與開發者大會現場,51CTO記者獨家專訪到阿里巴巴集團技術保障部系統工程師肖冰,探尋阿里HBase高可用性改善方面的技術細節。
嘉賓簡介
肖冰,阿里巴巴集團技術保障部系統工程師,入職以來一直從事阿里HBase集群的一線運維工作,負責保障整個阿里集團HBase集群的穩定性和高可用。承擔HBase大促核心業務單元化改造、MTTR落地、混合存儲落地等重要工作。
肖冰介紹,阿里HBase團隊的職責分工主要為兩個方向,一是運維團隊,主要幫助阿里內部的各業務方制訂存儲方案,并負責后期的穩定護航;另外是HBase源碼開發團隊,主要是做代碼層的HBase優化,提升HBase整體性能。這兩支隊伍緊密合作,基于阿里巴巴自身業務場景和特點,對社區HBase進行深度定制與改進,從解決方案、穩定護航、發展支撐方面為集團內部的各業務部門提供一整套完善NoSQL服務。
阿里HBase主要用于存放大量線上關鍵業務的數據,比如我們常用的支付寶錢包中用戶帳單、消費記錄、通訊錄聯系人、在淘寶購物時賣家向買家發送的物流詳情等數據。總的來說,Hbase面向的都是大數據量、大吞吐,并且存儲和讀取相對簡單的業務。它的優勢在于服務能力能夠快速水平擴展,并且單集群就可以支撐上百萬甚至上千萬的TPS、QPS。
阿里HBase集群高可用之路
阿里Hbase的運維監控集中在兩個層面。一是監控報警系統,主要用來監控網絡、CPU損耗等集群本身進程的健康狀態。另外是對業務層面的監控,也就是根據業務需求在代碼里面設置許多信息采集的錨點,來統計某一集群在一段時間的TPS、QPS、網絡IO是多少。通過這兩個層面監控的配合,來精準定位問題,解決問題。
為了使集群可用率達到四個九的標準,阿里HBase主要通過單機故障的快速恢復機制、跨機房跨地域的集群部署以及快速透明的主備切換方式將這些問題攻破。
縮短節點宕機恢復速度
節點宕機、大請求等情況都會直接影響讀寫請求,威脅集群的可用率。肖冰講到,他們主要是通過并發的數據恢復,來將整個集群的宕機速度從最初需要一個小時左右的時間,縮短至15、6分鐘內,就可以完成200臺以上集群從宕機到拉起的動作。
作何一個技術方案從設計到真正落地,都需要進行不斷的試錯和調優,肖冰他們也是如此。“我們這個業務剛上線的時候,理論上來講恢復速度應該要比之前的方式要快。但是很多情況下,數據恢復的速度比我們預想的要慢很多,甚至在某些場景下的速度還不如以前。我們需要基于實際情況不斷做優化。”
比如說在進行并發數據恢復時,如果對正常的用戶請求和恢復數據都執行了寫入操作,這兩個寫入請求就會互相爭搶資源,從而導致整個集群的恢復速度被大大拖慢。為了解決這個問題,阿里HBase針對許多細節進行優化,比如設置限定開關,考慮到應該側重恢復業務數據,所以先恢復寫的部分。通過設置開關,外部流量就無法進入集群,從而避免資源爭搶對數據恢復的影響;再如針對red buffer設置的優化。寫red buffer時,如果red buffer設置過大也可能影響恢復速度。
調度優化解決大請求
大請求是指對系統資源消耗特別大的請求,典型的例子就是帶有Filter的Scan,這個Filter過濾掉了大量的數據,導致一個Next操作會訪問成百上千個Block。當Block大部分都在內存時,這種Scan就會消耗大量CPU資源。在解決大請求方面,肖冰也給出了兩點優化建議:
- 限制大請求的資源消耗,讓正常的請求可以獲取資源。通過sleep達到目的;
- 中斷掉對客戶端來說已經超時的請求,這種請求繼續運行沒有意義。中斷請求釋放資源。
災備部署
Hbase現在的集群容災主要通過兩種方式。第一是同城的主備切換的容災。客戶端通過配置ZK集群地址以及Parent Znode訪問HBase,為了實現客戶端在主備集群之間的無縫切換使用了虛擬Parent Znode(VZnode)代替了物理Parent Znode,VZnode存儲的內容就是實際指向的物理Parent Znode,通過VZnode指向不同的物理Node實現客戶端在主備集群之間的無縫切換。
第二是異地的容災。通過多地的集群部署,多地同時完成數據同步去提供存儲服務。
未來的優化方向
采訪最后,肖冰與記者分享了未來阿里HBase的優化方向,主要會集中在推動運維自動化及虛擬化部署兩個方面。
具體來說,一是將運維變更、資源申請、性能評估等這些日常的運維工作實現完全的自動化動化,提高運維效率。另一方面是把HBase現在由物理機的部署改成虛擬節點的部署,通過虛擬化更好地提高資源利用率,提高資源調動速度。