HBase在騰訊大數據的應用實踐
為什么會選擇HBase?
高可靠性。HBase是運行在Hadoop上的NoSQL數據庫,它的數據由HDFS做了數據冗余,具有高可靠性。同時TDW(騰訊分布式數據倉庫)五年的穩定運行,8800臺的集群規模,證明了其服務于海量數據的能力。
高并發讀寫。使用日志文件(HLOG)和內存存儲來將隨機寫轉換成順序寫,保證穩定的數據插入速率;讀寫獨立,這兩種操作沒有沖突。
優雅的伸縮性。HBase服務能力可以隨服務器的增長而線性增長;HBase中表的數據表按Key 值范圍自動分片,散布于不同的機器上,實現自動負載均衡;支持百億行×百萬列×上萬個版本。
低延遲。數據按列存儲,數據即索引。
低成本。歷史數據不能輕易刪除,數據量變得越來越多,尤其是對于日志類存儲,寫多讀少。而HBase可構建在廉價的PC上,此外,HBase支持較多的壓縮算法。
本篇文章將對HBase在騰訊大數據的應用情況做一個介紹。
HBase易用性建設
數據接入-方便、靈活
接入前臺化、可配置化。只需在前臺配置入庫任務,按配置約定規范上報數據,即可實現將數據入庫HBase,方便、簡潔、快速。
與騰訊大數據的各平臺(TDBank、TDW、TRC)打通,數據流轉方便。
接入方式多樣靈活。業務也可根據HBase提供的API自己編寫代碼,實現數據寫入HBase。在寫入量較大的情況下,業務側還需要維護一批寫入客戶端,維護成本較高。一般不推薦使用這種方式。
數據查詢-接口簡單、易用
避免用戶重復編碼、方便業務查詢HBase中的數據,我們封裝并提供了兩種查詢接口:HTTP查詢接口和TCP查詢接口。同時支持點查詢和范圍查詢兩種查詢方式。
HTTP查詢接口:
通過發送HTTP POST請求方式查詢數據。適用于輕量查詢需求,例如客服業務受理查詢,客戶只要開發一個自己的界面就可以使用。返回的數據格式支持json、xml、text、idip(游戲業務定制的數據格式)四種。
TCP查詢接口:
通過發送TCP請求建立長連接來查詢數據。適用于大并發查詢需求,例如營銷活動、用戶畫像類數據查詢需求等。返回的數據格式只提供protobuf格式。
安全建設
權限控制。每個接入業務均分配一個用戶ID、IP白名單機制,只有在開通了白名單的服務器上,使用用戶ID才可以訪問歸屬業務的HBase表,當多 個業務共用一個HBase的情況下,權限控制尤其必要。針對敏感數據(如用戶畫像數據),權限進一步控制到列級別。即只有在開通了白名單的服務器上,使用 用戶ID才可以訪問開通了權限的HBase表中的某些列。
流量控制。控制單筆查詢的數據量大小以及查詢返回行數限制,同時監控大查詢。在多個小業務公用一個HBase情況,可有效控制非必要場景下大量get數據業務間查詢相互影響的問題。
業務應用情況
1. 游戲營銷活動新渠道
數據的實時性對于營銷活動的效果有著十分明顯的影響,由于數據延遲而帶來的不良用戶體驗會導致玩家喪失繼續參與活動的耐心從而使活動效果大打折扣。 HBase在近幾次營銷活動(如炫舞拉新活動、天天酷跑新版預熱活動、英雄聯盟3周年活動、天天酷跑周年活動、英雄聯盟拉新活動)中,從幾十億甚至百億條 數據中實時拉取數據的毫秒級響應,成為營銷活動的一個新渠道。
2. 廣告日志處理
廣告成為互聯網公司的一個主要收入來源。我們現在每天通過HBase處理百億級廣告的請求和曝光日志,訪問HBase的延遲,80%在20ms之 內,保證了數據的秒級實時回流,實現檢索、曝光、點擊和效果日志百億數據的實時關聯,提供完整豐富的用戶特征數據。精細的特征數據會帶來更好的模型,產生 更好的廣告效果,進而提升廣告收入。
3. 業務受理查詢
業務受理系統受限于MySQL數據庫容量與性能,僅能查詢最近一段時間的日志,使游戲在核實客戶投訴上較為被動。游戲業務受理系統由MySQL遷移到HBase后,用業務的評價來總結下MySQL遷移HBase的效果:“業務受理對客服的查詢需求服務提升了一個檔次”。
4. 此外,HBase在其他點擊交互日志或監控日志系統上也有較多應用,如網絡會話數據、秒級監控平臺日志、微信支付日志等。
結束語
隨著業務的發展以及HBase在騰訊的較多的成功應用案例與推廣,HBase的應用還將繼續增多以及向核心應用靠近的趨勢。總的來說,我們的目標,降低接入使用門檻以及使用成本,使HBase能穩定地部署到更多的應用中去, 以助力業務更快發展。