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