云時代的大數(shù)據(jù)存儲-云HBase
縱觀數(shù)據(jù)庫發(fā)展的幾十年,從網(wǎng)狀數(shù)據(jù)庫、層次數(shù)據(jù)庫到RDBMS數(shù)據(jù)庫,在最近幾年的NewSQL的興起,加上開源的運動,再加上云的特性,可以說是日新月異。在20世紀(jì)80年代后,大部分的業(yè)務(wù)確定了使用RDBMS數(shù)據(jù)為存儲基礎(chǔ)。新世紀(jì)開始,隨著互聯(lián)網(wǎng)的發(fā)展,數(shù)據(jù)量的增大,慢慢RDBMS數(shù)據(jù)庫撐不住了,就出現(xiàn)了讀寫分離策略。隨著壓力增加,Master撐不住了,這時就要分庫了,把關(guān)聯(lián)不大的數(shù)據(jù)分開部署,一些join查詢不能用了,需要借助中間層。隨著數(shù)據(jù)量的進(jìn)一步增加,一個表的記錄越來越大,查詢就變得很慢,于是又得搞分表,比如按ID取模分成多個表以減少單個表的記錄數(shù)。經(jīng)歷過這些事的人都知道過程是多么的折騰。在不同的場景下,就出現(xiàn)各自優(yōu)秀的分布式數(shù)據(jù)庫,比如在文檔型存儲下的MongoDB,KV類型的Redis,再比如今天講的列族類型的HBase。
大數(shù)據(jù)時代數(shù)據(jù)存儲的特點為:基礎(chǔ)量大、增長快、計算與存儲的實時性要求迫切、支持時效性短、易發(fā)散、易產(chǎn)生臟數(shù)據(jù),這些HBase自出生起,就滿足這些需求。在大數(shù)據(jù)時代,我們認(rèn)為HBase是公認(rèn)的大數(shù)據(jù)存儲。HBase的原型出自Google的BigTable,這個跟大數(shù)據(jù)的GFS及MapReduce齊名的三篇論文,由此開創(chuàng)了大數(shù)據(jù)時代。目前在阿里,已經(jīng)有上萬臺的HBase集群,在各個場景下有廣泛的應(yīng)用。
為什么要上云,需要了解到HBase本身比較復(fù)雜,這涉及到分布式、數(shù)據(jù)存儲、響應(yīng)延遲,索引等一些分布式、數(shù)據(jù)庫的知識,對于運維好這個復(fù)雜系統(tǒng)還是有一定的難度;要有很好的使用姿勢,雖然API比較簡單,但是各種組合情況下,暢玩好HBase還是需要一定的功力; 上云是趨勢,自己去基于ECS建設(shè)又不太了解云環(huán)境下,怎么正確部署HBase,怎么跟OSS等云上組件配合。
為此,我們提供云HBase加上專家服務(wù) 解決以上3個問題
最后,HBase在阿里集團(tuán)使用了6年之久,已經(jīng)在HBase的性能、運維等積累了大量的經(jīng)驗,我們希望把這些回饋給客戶,例如:我們僅僅單條低字節(jié)高頻寫入情況就比社區(qū)版本高出30%+的性能。
目前提供的價值點有,以下幾點:
- 高可靠: 數(shù)據(jù)備份,數(shù)據(jù)可靠性9個9
- 高可用:Master節(jié)點強(qiáng)制HA機(jī)制,出現(xiàn)問題后直接切換
- 易運維:一鍵構(gòu)建、配置修改、一鍵擴(kuò)容、自動備份、數(shù)據(jù)流入
- 高性能:比如開源性能大幅度提升30%+
- 低成本:后續(xù)本地盤、云盤、OSS分級別存儲
技術(shù)架構(gòu)
從技術(shù)架構(gòu)層面看,大致如下:
基礎(chǔ)資源層:我們底層使用了ECS及本地磁盤的架構(gòu),保證在低成本的同時又具備高性能
基礎(chǔ)軟件層,我們使用了ALi-JDK及ALi-Liunx,這兩個都有專門的團(tuán)隊在維護(hù),對云HBase的貢獻(xiàn),比如:改進(jìn)gc算法減少毛刺,改進(jìn)linux中斷提升性能。
HBase內(nèi)核層,目前使用是跟阿里集團(tuán)內(nèi)部一致的版本,也就是說內(nèi)部所有的性能優(yōu)化、功能增強(qiáng)在公有云的客戶都可以享受到。這些包括但不限于:提升讀寫性能、增強(qiáng)穩(wěn)定性、降低磁盤、網(wǎng)絡(luò)抖動引起的毛刺等等。 -另外就是運維平臺,逐步完善,后續(xù)會包括 監(jiān)控報警、配置管理、健康診斷等等 易于運維的功能。
目前支持兩種訪問網(wǎng)絡(luò)類型,第一種是經(jīng)典網(wǎng)絡(luò)、第二種是VPC網(wǎng)絡(luò)。區(qū)別就是VPC再加了一層網(wǎng)絡(luò)隔離。
經(jīng)典網(wǎng)絡(luò):
VPC網(wǎng)絡(luò):
使用場景
HBase作為默認(rèn)的大數(shù)據(jù)時代的存儲,基本解決以下三大類的場景:
平臺類,基本存放是平臺的產(chǎn)品,就是其它軟件的存儲,比如 目前很就行的kylin,阿里內(nèi)部的日志同步工具TT,圖組件Titan等。此類存放的往往平臺的數(shù)據(jù),有時候往往是無業(yè)務(wù)含義的。作為平臺的底層存儲使用。
用戶行為類,此類主要是面向各個業(yè)務(wù)系統(tǒng)。這里的用戶不僅僅指的人,也包括物,比如物聯(lián)網(wǎng)。在阿里主要還是人產(chǎn)生的數(shù)據(jù),比如:淘寶收藏夾、交易數(shù)據(jù)、旺旺聊天記錄等等。這里使用比較直接,就直接存放HBase,再讀取。難度就是需要支持千萬級別的并發(fā)寫訪問及讀取,需要解決服務(wù)質(zhì)量的問題,比如GC了,就出現(xiàn)大量的毛刺。
報表類的需求,比如報表、大屏等,最出名的就是阿里巴巴的天貓雙十一大屏。
基本上:Mysql支持小數(shù)據(jù)量,查詢較為復(fù)雜的數(shù)據(jù)應(yīng)用;HBase支持大數(shù)據(jù),查詢較為簡單的數(shù)據(jù)應(yīng)用。
后續(xù)計劃
一些功能,比如同步等,產(chǎn)品化,直接從rds及離線系統(tǒng)導(dǎo)入數(shù)據(jù)到云HBase系統(tǒng)中
完善云HBase功能,不斷做精細(xì)化
提供HBase on OSS的能力,降低數(shù)據(jù)存儲的成本
提供雙集群多寫多度的能力,做多區(qū)多地域容災(zāi)