本次分享會(huì)給大家系統(tǒng)地介紹10P+金融數(shù)據(jù)遷移的整個(gè)過(guò)程。下面是對(duì)這次線(xiàn)上分享的文字總結(jié),希望對(duì)想了解HBase跨機(jī)房遷移技術(shù)的網(wǎng)友有幫助。
一、HBase知識(shí)介紹
考慮到來(lái)聽(tīng)分享的大部分都是MySQL DBA,因此這里做了個(gè)簡(jiǎn)單的HBase相關(guān)介紹,主要介紹了如下三個(gè)方面的內(nèi)容:
1、HBase簡(jiǎn)介
HBase是基于google bigtable的開(kāi)源實(shí)現(xiàn),又稱(chēng)為hadoop database,具有高性能、高可用、易伸縮等特點(diǎn),是一個(gè)面向列的分布式存儲(chǔ)系統(tǒng),可以在廉價(jià)PC Server的機(jī)器上搭建海量存儲(chǔ)服務(wù)。
隨著數(shù)據(jù)量的不斷增大,查詢(xún)和寫(xiě)入的性能并不會(huì)出現(xiàn)明顯的下降,可以說(shuō)是目前各大企業(yè)構(gòu)建數(shù)據(jù)中心很好的選擇。
2、HBase的優(yōu)缺點(diǎn)
HBase的優(yōu)點(diǎn)
總結(jié)了HBase的幾個(gè)優(yōu)點(diǎn)如下:
列可以動(dòng)態(tài)增加
其實(shí)更準(zhǔn)確的說(shuō),HBase是面向列族的數(shù)據(jù)庫(kù),一個(gè)表可以有多個(gè)列族,而每個(gè)列族下面可以有非常多的列,也就是說(shuō)列族下面的列可以動(dòng)態(tài)增加或者減少。
卓越的寫(xiě)入性能
HBase采用的是LSM類(lèi)型系統(tǒng)結(jié)構(gòu),寫(xiě)入都是先寫(xiě)內(nèi)存,后面再異步批量刷新到磁盤(pán),因此寫(xiě)入性能非常好。并且這種寫(xiě)入性能很容易通過(guò)擴(kuò)容機(jī)器提升。
海量存儲(chǔ)
HBase就是為海量存儲(chǔ)而生的,由于其優(yōu)秀的架構(gòu)設(shè)計(jì),使得數(shù)據(jù)量的不斷增長(zhǎng),在查詢(xún)時(shí)延方面并不會(huì)下降特別多。因此HBase在海量數(shù)據(jù)的場(chǎng)景下,優(yōu)勢(shì)非常明顯。
極易擴(kuò)展
HBase由于其架構(gòu)的特性(后端采用HDFS存儲(chǔ),借助ZK的相關(guān)特性),HBase極易擴(kuò)展,通過(guò)添加節(jié)點(diǎn),來(lái)增加存儲(chǔ)量和提升寫(xiě)入性能,使得HBase極具伸縮性。
HBase的缺點(diǎn)
總結(jié)了HBase的缺點(diǎn)如下:
HBase原生不支持SQL
HBase原生并不支持SQL,業(yè)務(wù)接入HBase需要通過(guò)接口做一些改造,這在一定程度上還是不太友好。雖然目前有一些組件也為HBase提供一些接口支持,比如phoenix。但是就我們的測(cè)試來(lái)看,穩(wěn)定性仍然是一個(gè)很大的問(wèn)題。
查詢(xún)延遲比DB大
HBase比較多的應(yīng)用是通過(guò)廉價(jià)的PC Sever構(gòu)建海量存儲(chǔ)服務(wù),而目前DB的標(biāo)配基本都是SSD盤(pán),DB的延遲可以做到0.x個(gè)毫秒,而基于廉價(jià)PC Server構(gòu)建的海量存儲(chǔ)服務(wù)的延遲一般在幾十毫秒到上百毫秒之間。
當(dāng)然HBase也可以采用SSD盤(pán)來(lái)構(gòu)建海量存儲(chǔ),但這種成本就比較高。目前HBase已經(jīng)支持了異構(gòu)存儲(chǔ)功能,可以將熱數(shù)據(jù)存儲(chǔ)到SSD,冷數(shù)據(jù)存儲(chǔ)到SATA,這是一個(gè)很好的方案。
RegionServer單點(diǎn)
運(yùn)維過(guò)RegionServer的同學(xué)都可能深有體會(huì),表的某一個(gè)region只能分配到某一臺(tái)RegionSever的機(jī)器上,因此,當(dāng)某一臺(tái)RegionServer異常的時(shí)候,上面的Region肯定會(huì)有影響,尤其是當(dāng)一個(gè)RegionServer上有超過(guò)1000個(gè)region的時(shí)候,影響可能會(huì)達(dá)到幾分鐘。這個(gè)單點(diǎn)的問(wèn)題還是一個(gè)比較大的硬傷。
目前HBase2.0版本已經(jīng)引入了Region Replica的支持,但是由于需要更多的資源和強(qiáng)讀一致性的問(wèn)題,業(yè)界真正在生產(chǎn)環(huán)境使用這個(gè)功能的非常少。比較多的是采用集群容災(zāi)方式,在業(yè)務(wù)層做切換,目前我們就是采用這種方式,以減少單個(gè)RegionServer異常對(duì)業(yè)務(wù)造成影響。
3、HBase架構(gòu)
HBase的架構(gòu)圖如下:
上面是比較經(jīng)典的HBase架構(gòu)圖,偷個(gè)懶,直接借來(lái)用一下,從圖中我們可以看出HBase的架構(gòu)層次還是很清晰的。可以把這個(gè)架構(gòu)分成三層來(lái)看(暫時(shí)把Zookeeper和Master忽略):
第一層:客戶(hù)端層
客戶(hù)端層主要是業(yè)務(wù)發(fā)起的地方,可以是寫(xiě)入發(fā)起端,也可以是業(yè)務(wù)查詢(xún)端,這個(gè)比較好理解,就是HBase的調(diào)用方。
第二層:RegionServer層
RegionServer提供所有訪(fǎng)問(wèn)層的功能,你可以簡(jiǎn)單地理解為那一層是路由層、緩存層、引擎層等。所有對(duì)HBase的讀寫(xiě)請(qǐng)求都需要經(jīng)過(guò)RegionServer層。
第三層:存儲(chǔ)層
HBase底層采用HDFS作為存儲(chǔ)層,所有的數(shù)據(jù)都存儲(chǔ)在HDFS,前面說(shuō)的HBase極具伸縮性,很大程度上得益于底層采用的HDFS存儲(chǔ)。
4、一個(gè)DBA都能理解的HBase使用場(chǎng)景
上面講了那么多,那么HBase到底是怎么使用的?
其實(shí)HBase可以用在很多的場(chǎng)景中,比較消息訂單、時(shí)序DB、對(duì)象存儲(chǔ)、推薦畫(huà)像等。這里講一個(gè)DB最能理解的使用場(chǎng)景,那就是存儲(chǔ)需要長(zhǎng)久保存的海量歷史數(shù)據(jù)。
比如:對(duì)于金融數(shù)據(jù),由于監(jiān)管的要求,至少需要保留5年,對(duì)于支付的訂單、支持流水等數(shù)據(jù),本身數(shù)據(jù)量非常大,并且歷史數(shù)據(jù)還有查詢(xún)需求。
這種數(shù)據(jù)如果保留在關(guān)系型的DB中,歷史DB的擴(kuò)容、遷移、維護(hù),還有訪(fǎng)問(wèn)將會(huì)是DBA的噩夢(mèng)。但是如果這種數(shù)據(jù)保留在HBase中,就會(huì)非常的方便。
二、HBase跨機(jī)房遷移
1、背景及挑戰(zhàn)
背景
這次HBase跨機(jī)房遷移的背景是機(jī)房裁撤,必須在規(guī)定的時(shí)間內(nèi)把HBase集群從裁撤機(jī)房遷移到新機(jī)房。
挑戰(zhàn)
針對(duì)這次HBase跨機(jī)房遷移,我們主要面臨如下幾個(gè)挑戰(zhàn):
經(jīng)驗(yàn)缺乏