HBase在京東的完善與創新

隨着大數據處理時代的到來,NoSQL風生水起。京東作爲國內最大的綜合網絡零售商,隨着業務數據量爆發式增長,傳統的關係數據庫在海量數據面前開始顯得捉襟見肘,於是京東雲平臺在Hadoop生態集羣經驗積累的基礎上,引入了HBase作爲海量數據存儲的基礎設施。雖然引入時間不長,但京東數十個業務系統已經使用了HBase,包括實時在線業務、離線批量計算業務、批量導入兼在線訪問等業務類型。爲了提高資源利用率,多個業務系統可能複用一個HBase集羣。而開源的HBase處於發展期,業務之間的存儲和訪問產生了一些干擾和衝突。於是,爲了應用到生產環境尤其是在線業務系統中,京東第一階段對HBase進行了完善,並根據京東需求做出了自己的創新。這些完善和創新包括:

1.實現了權限管理模塊。多個業務系統之間存在的數據安全隱患,且業務系統可以隨意進行創建表等DDL操作,因此京東開發了權限管理模塊,對DDL權限控制。在此基礎上,在表級別對數據進行了訪問權限康,隔離了數據等敏感信息的訪問,業務系統不用擔心數據泄密、數據不一致等安全問題,因爲沒有權限的系統是不會接觸到其他任何業務系統的數據的。值得一提的是,這個模塊引入的時間開銷最大不超過0.3毫秒,能很好的支持線上業務的開展,而業界還沒有如此優異的性能數據。

2.實現了流量控制模塊。在關係數據庫中,因爲是單節點部署,可以通過連接數等控制訪問的併發,其流量也侷限於一個節點。而對於HBase這樣的分佈式系統,流量分佈於數個服務器節點,多個應用系統造成的訪問壓力不是單臺節點可以承受的。通常情況下,業務訪問均衡到多臺節點上,壓力可以分散。但某些情況下,尤其對於在線業務,訪問由用戶行爲決定的情況下,可能出現平常幾臺甚至數十臺的壓力突然壓在一臺節點上,非常容易造成某個節點宕機。爲避免這種情況,保證系統的可用性,京東通過限流機制來控制一臺節點上承受的流量和併發連接數。在實現流量控制的同時,保證了客戶端不會超時、阻塞的請求不會佔用大量HBase堆內存(從而避免了內存溢出)、用戶無需對其應用做出改變。其中有一個很重要的特徵,就是控制會根據業務不同的SLA進行控制,有效的保證了關鍵業務的服務級別。

3.開發了目前業界最完備的管控中心。HBase與傳統的關係數據庫相比,其管理和運維工具非常缺乏。業內一些友商開發了自己的管理和監控系統以滿足其特定的需求,但京東很難使用。京東數個集羣,成百上千的服務器,維護成本非常高,信息收集與跟蹤也影響了故障的發現和恢復時間。爲了支持HBase之上的各類關鍵業務系統,需要及時獲知故障,儘快恢復集羣使用,一個統一的監控和管理中心應運而生。管控中心將所有集羣管理放在一箇中心,真正做到了快速高效運維,比如:

(1)實時監控多個各服務節點運行狀況、服務狀況、集羣讀寫響應時間,及時掌握集羣性能波動;實時掌握各節點(Region Server)負載情況及請求數,並根據負載情況排序,重點關注高負載節點;

(2)實時統計大量信息並具有預警和報警機制,比如:給節點JVM堆內存使用情況、總體的MemStore、託管的數據文件綜述及數據大小;每個節點下,各數據分區的讀寫請求情況,並根據請求數對分區排序;各數據分區的MemStore、數據文件個數、數據文件大小等信息;統計了每張表的請求數、該表的分區及分區的請求數,並根據請求數排序,對熱點數據瞭如指掌;

(3)將所有管理操作,無論是創建表、刪除表、使能表等表操作,還是分區管理、分區均衡等分區操作等,都統一集成到管控中心,由統一入口進行管理。

(4)另外一個具有創新意義的是,京東將HBase本身的HBCK工具經過改造,放在了管控中心,將該工具的運維效率提升了數十倍。

圖:監管中心示例

值得一提的是,京東在HBase上所做的創新,全部避免代碼浸入性,所有開發都不會更改原有HBase的代碼,這樣就能以最快的速度將社區最新成果進行合併,節約開發和維護成本,同時也能與社區保持最近的交流,逐步爲HBase社區做出貢獻。目前京東HBase組所做的創新,剛剛是個開始,京東將在未來做出更多具有生產價值的創新和完善,並在穩定和適當的時候逐步開源。

ps: 公司已經發布到各新聞網站。這都是我們團隊、京東雲平臺、京東研發部的成績,請支持我們!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章