一種Hbase數(shù)據(jù)庫的通用高性能數(shù)據(jù)寫入方法【
技術(shù)領(lǐng)域:
】[0001]本發(fā)明涉及計算機數(shù)據(jù)處理的
技術(shù)領(lǐng)域:
,具體地涉及一種Hbase數(shù)據(jù)庫的通用高性能數(shù)據(jù)寫入方法,主要用于大數(shù)據(jù)寫入Hbase數(shù)據(jù)庫。【
背景技術(shù):
】[0002]HBase是一個分布式的、面向列的開源數(shù)據(jù)庫,利用HBase技術(shù)可在廉價PCServer上搭建起大規(guī)模結(jié)構(gòu)化存儲集群。HBase是GoogleBigtable的開源實現(xiàn),類似GoogleBigtable利用GFS作為其文件存儲系統(tǒng),HBase利用HadoopHDFS作為其文件存儲系統(tǒng);Google運行MapReduce來處理Bigtable中的海量數(shù)據(jù),HBase同樣利用HadoopMapReduce來處理HBase中的海量數(shù)據(jù);GoogleBigtable利用Chubby作為協(xié)同服務(wù),HBase利用Zookeeper作為對應(yīng)。[0003]在數(shù)據(jù)寫入Hbase數(shù)據(jù)庫方面,現(xiàn)有技術(shù)大多采用常見的生產(chǎn)者消費者模式,因生產(chǎn)消費線程之間搶奪同步鎖,尤其在多線程下更為明顯,這就嚴(yán)重影響了入庫效率。還有的現(xiàn)有技術(shù)是使用Hbase數(shù)據(jù)庫自帶工具import功能進行數(shù)據(jù)導(dǎo)入,這樣效率較低。并且現(xiàn)有技術(shù)在大量數(shù)據(jù)入庫的情況下會阻塞Hbase的reg1nserver客戶端,造成reg1nserver宕機或者zookeeper超時?!?br/>發(fā)明內(nèi)容】[0004]本發(fā)明的技術(shù)解決問題是:克服現(xiàn)有技術(shù)的不足,提供一種Hbase數(shù)據(jù)庫的通用高性能數(shù)據(jù)寫入方法,其能夠避免了數(shù)據(jù)干擾和并發(fā)安全隱患,避免了因HTable數(shù)據(jù)寫入速率慢的原因?qū)е玛犃袛?shù)據(jù)阻塞,保證了隊列的數(shù)據(jù)可以持續(xù)不斷的輸出。[0005]本發(fā)明的技術(shù)解決方案是:這種Hbase數(shù)據(jù)庫的通用高性能數(shù)據(jù)寫入方法,使用數(shù)據(jù)分發(fā)機制,平均分發(fā)多份數(shù)據(jù),不同表的數(shù)據(jù)有不同的數(shù)據(jù)處理對象,HTable對象數(shù)組均為此對象的局部變量;每份數(shù)據(jù)一一對應(yīng)一個HTable對象數(shù)組;每份數(shù)據(jù)寫入一個緩沖區(qū)中,然后HTable對象數(shù)組讀取已經(jīng)寫好的緩沖區(qū)來進行入庫操作;HTable對象數(shù)組寫入數(shù)據(jù)的過程中對使用的緩沖區(qū)加上線程鎖,未寫入緩沖區(qū)的數(shù)據(jù)繞開加上線程鎖的緩沖區(qū)而寫一個新的緩沖區(qū)。[0006]本發(fā)明使用數(shù)據(jù)分發(fā)機制,平均分發(fā)多份數(shù)據(jù),不同表的數(shù)據(jù)有不同的數(shù)據(jù)處理對象,分發(fā)的多份數(shù)據(jù)的接受端(HTable對象數(shù)組)均為此對象的局部變量,這樣保證了表級別的獨立性,并且隊列之間相互不干擾,保證了隊列之間的獨立性,避免了數(shù)據(jù)干擾和并發(fā)安全隱患;每份數(shù)據(jù)都--對應(yīng)一個HTable對象數(shù)組,通過這些HTable對象數(shù)組來完成數(shù)據(jù)的寫入,每份數(shù)據(jù)會寫入一個緩沖區(qū)中,然后HTable對象數(shù)組去讀取已經(jīng)寫好的緩沖區(qū)去進行入庫操作,HTable寫入數(shù)據(jù)的過程中會對使用的緩沖區(qū)加上線程鎖,那么未寫入緩沖區(qū)的數(shù)據(jù)就會繞開加鎖的緩沖區(qū),去寫一個新的緩沖區(qū),這樣就避免了因HTable數(shù)據(jù)寫入速率慢的原因?qū)е玛犃袛?shù)據(jù)阻塞,保證了隊列的數(shù)據(jù)可以持續(xù)不斷的輸出?!靖綀D說明】[0007]圖1為根據(jù)本發(fā)明的Hbase數(shù)據(jù)庫的通用高性能數(shù)據(jù)寫入方法的一個優(yōu)選實施例的示意圖。[0008]圖2為根據(jù)本發(fā)明的Hbase數(shù)據(jù)庫的通用高性能數(shù)據(jù)寫入方法的流程圖?!揪唧w實施方式】[0009]這種Hbase數(shù)據(jù)庫的通用高性能數(shù)據(jù)寫入方法,使用數(shù)據(jù)分發(fā)機制,平均分發(fā)多份數(shù)據(jù),不同表的數(shù)據(jù)有不同的數(shù)據(jù)處理對象,HTable對象數(shù)組均為此對象的局部變量;每份數(shù)據(jù)--對應(yīng)一個HTable對象數(shù)組;每份數(shù)據(jù)寫入一個緩沖區(qū)中,然后HTable對象數(shù)組讀取已經(jīng)寫好的緩沖區(qū)來進行入庫操作;HTable對象數(shù)組寫入數(shù)據(jù)的過程中對使用的緩沖區(qū)加上線程鎖,未寫入緩沖區(qū)的數(shù)據(jù)繞開加上線程鎖的緩沖區(qū)而寫一個新的緩沖區(qū)。[0010]本發(fā)明使用數(shù)據(jù)分發(fā)機制,平均分發(fā)多份數(shù)據(jù),不同表的數(shù)據(jù)有不同的數(shù)據(jù)處理對象,分發(fā)的多份數(shù)據(jù)的接受端(HTable對象數(shù)組)均為此對象的局部變量,這樣保證了表級別的獨立性,并且隊列之間相互不干擾,保證了隊列之間的獨立性,避免了數(shù)據(jù)干擾和并發(fā)安全隱患;每份數(shù)據(jù)都--對應(yīng)一個HTable對象數(shù)組,通過這些HTable對象數(shù)組來完成數(shù)據(jù)的寫入,每份數(shù)據(jù)會寫入一個緩沖區(qū)中,然后HTable對象數(shù)組去讀取已經(jīng)寫好的緩沖區(qū)去進行入庫操作,HTable寫入數(shù)據(jù)的過程中會對使用的緩沖區(qū)加上線程鎖,那么未寫入緩沖區(qū)的數(shù)據(jù)就會繞開加鎖的緩沖區(qū),去寫一個新的緩沖區(qū),這樣就避免了因HTable數(shù)據(jù)寫入速率慢的原因?qū)е玛犃袛?shù)據(jù)阻塞,保證了隊列的數(shù)據(jù)可以持續(xù)不斷的輸出。[0011]另外,每個HTable對象數(shù)組有——對應(yīng)的緩沖區(qū)池,HTable對象數(shù)組從緩沖區(qū)池中獲取緩沖區(qū)對象,如果緩沖區(qū)用完則進行等待。這樣能夠有效地避免因緩沖區(qū)無限創(chuàng)建而造成的內(nèi)存溢出。同時隊列和緩沖區(qū)池是一一對應(yīng)的,而不是所有隊列共用一個總的緩沖區(qū)池,這樣每個HTable對象數(shù)組之間的緩沖區(qū)池就獨立的起來,減少了隊列之間數(shù)據(jù)的并發(fā)和干擾。因為緩沖區(qū)的機制,這里如果數(shù)據(jù)量超大導(dǎo)致緩沖區(qū)用完,此時數(shù)據(jù)堵塞在本地,而不是阻塞在服務(wù)器上,本機阻塞數(shù)據(jù)均勻向服務(wù)器數(shù)據(jù),保證服務(wù)器的負(fù)荷,避免reg1nserver出現(xiàn)宕機zookeeper超時等。[0012]另外,緩沖區(qū)池內(nèi)緩沖區(qū)的個數(shù)以及大小由配置文件控制。[0013]另外,在DAO層的base類關(guān)聯(lián)對應(yīng)每個HTabIe對象數(shù)組,通過表名不同對應(yīng)不同的HTable對象數(shù)組,DAO層的這個base類從對象池中獲取,針對數(shù)據(jù)不同得到不同的base類,此類為依照表不同的單例模式.同表同對象,不同表得到不同的.因和HTable數(shù)組一一對應(yīng),即是同表數(shù)據(jù)進入相同的一組HTable數(shù)組,不同表數(shù)據(jù)進入不同的一組HTable數(shù)組。[0014]另外,每一行數(shù)據(jù)具有頂層接口,定義每一行數(shù)據(jù)的類型。這樣不論是什么數(shù)據(jù)來源的數(shù)據(jù)(如文件讀取,代碼生成,其他技術(shù)如redis分發(fā)而來的數(shù)據(jù)),只要將每行數(shù)據(jù)實現(xiàn)頂層接口成為一個對象就可調(diào)用后續(xù)數(shù)據(jù)寫入程序,增加了通用性。[0015]另外,如圖1-2所示,提供了具體的步驟:[0016](I)每一行數(shù)據(jù)序列化成HBaseObject對象;[001當(dāng)前第1頁1 2