HBase二級(jí)索引構(gòu)建裝置和方法
【專利說(shuō)明】HBase 二級(jí)索引構(gòu)建裝置和方法
[0001]
技術(shù)領(lǐng)域
[0002]本發(fā)明涉及計(jì)算機(jī)技術(shù)領(lǐng)域,具體地,涉及一種HBase 二級(jí)索引構(gòu)建裝置和一種HBase 二級(jí)索引構(gòu)建方法。
[0003]
【背景技術(shù)】
[0004]HBase是一個(gè)列存數(shù)據(jù)庫(kù),每行數(shù)據(jù)只有一個(gè)主鍵-RowKey,無(wú)法依據(jù)指定列的數(shù)據(jù)進(jìn)行檢索。查詢時(shí)需要通過(guò)RowKey進(jìn)行檢索,然后查看指定列的數(shù)據(jù)是什么,效率低下。在實(shí)際應(yīng)用中,我們經(jīng)常需要根據(jù)指定列進(jìn)行檢索,或者幾個(gè)列進(jìn)行組合檢索,這就提出了建立HBase 二級(jí)索引的需求。
[0005]目前的HBase二級(jí)索引構(gòu)建方案主要有兩種。第一種方案是將索引數(shù)據(jù)單獨(dú)存儲(chǔ)為一張表,通過(guò)HBase Coprocessor生成并訪問(wèn)索引數(shù)據(jù)。第二種方案是將索引數(shù)據(jù)與源數(shù)據(jù)存儲(chǔ)在相同的Reg1n里,索引數(shù)據(jù)定義為一個(gè)單獨(dú)的列族,也是利用Coprocessor來(lái)生成并訪問(wèn)索引數(shù)據(jù)。對(duì)于第一種方案,源數(shù)據(jù)表與索引表的數(shù)據(jù)一致性很難保證,訪問(wèn)兩張不同的表也會(huì)增加10開(kāi)銷和遠(yuǎn)程調(diào)用的次數(shù)。對(duì)于第二種方案,單表的數(shù)據(jù)容量會(huì)急劇增加,對(duì)同一 Reg1n里的多個(gè)列族進(jìn)行Split或Merge等操作時(shí)可能會(huì)造成數(shù)據(jù)丟失或不一致。
[0006]因此,需要一種新的索引構(gòu)建技術(shù),可以在現(xiàn)有的索引構(gòu)建方式基礎(chǔ)上,充分利用單對(duì)象類型完成多對(duì)象類型的索引構(gòu)建,建立多對(duì)象類型元數(shù)據(jù)參與的面向復(fù)雜類型索引構(gòu)建的通用、統(tǒng)一構(gòu)建思路。
[0007]
【發(fā)明內(nèi)容】
[0008]本發(fā)明正是基于上述問(wèn)題,提出了一種新的索引構(gòu)建技術(shù),可以在現(xiàn)有的索引構(gòu)建方式基礎(chǔ)上,充分利用單對(duì)象類型完成多對(duì)象類型的索引構(gòu)建,建立多對(duì)象類型元數(shù)據(jù)參與的面向復(fù)雜類型索引構(gòu)建的通用、統(tǒng)一構(gòu)建思路。
[0009]有鑒于此,本發(fā)明提出了一種HBase 二級(jí)索引構(gòu)建裝置,包括:數(shù)據(jù)復(fù)制單元,用于通過(guò)主從集群的架構(gòu),將寫(xiě)入主集群的數(shù)據(jù),以異步方式復(fù)制到從集群;數(shù)據(jù)更新單元,用于獲取從集群中復(fù)制得到的數(shù)據(jù),對(duì)相應(yīng)的索引數(shù)據(jù)進(jìn)行更新處理;索引文件生成單元,用于基于更新處理后的索引數(shù)據(jù),部署批處理服務(wù),生成索引文件。在該技術(shù)方案中,將索引文件與HBase數(shù)據(jù)文件分開(kāi)存儲(chǔ),提高了系統(tǒng)的10性能,充分結(jié)合了批處理和實(shí)時(shí)處理兩種流程,解決了數(shù)據(jù)一致性問(wèn)題,減少了索引中的冗余數(shù)據(jù)。
[0010]在上述技術(shù)方案中,優(yōu)選地,所述數(shù)據(jù)復(fù)制單元,具體包括:主集群中數(shù)據(jù)寫(xiě)入模塊,用于將待構(gòu)建二級(jí)索引的數(shù)據(jù),寫(xiě)入至主集群;主從集群間數(shù)據(jù)復(fù)制模塊,用于將寫(xiě)入主集群的數(shù)據(jù),通過(guò)主從集群間的響應(yīng)機(jī)制,以異步方式復(fù)制到從集群。在該技術(shù)方案中,通過(guò)主從集群的架構(gòu)設(shè)計(jì)避免了 HBase的高速讀寫(xiě)與索引服務(wù)之間的資源競(jìng)爭(zhēng)。
[0011 ] 在上述技術(shù)方案中,優(yōu)選地,所述數(shù)據(jù)更新單元,具體包括:索引數(shù)據(jù)更新模塊,用于將從集群接收到的數(shù)據(jù)寫(xiě)入?yún)^(qū)域服務(wù)器和部署在從集群上的實(shí)時(shí)索引創(chuàng)建服務(wù)中,并更新索引數(shù)據(jù)至查詢服務(wù)器;索引數(shù)據(jù)增量更新模塊,用于將索引數(shù)據(jù)更新至查詢服務(wù)器后,對(duì)索引數(shù)據(jù)進(jìn)行增量更新,增量更新后的索引文件存儲(chǔ)在分布式文件系統(tǒng)中。在該技術(shù)方案中,由于系統(tǒng)是部署在Hadoop集群上的,系統(tǒng)的處理能力和存儲(chǔ)容量可以很方便的進(jìn)行擴(kuò)展,系統(tǒng)的安全性也得到了保障。
[0012]在上述技術(shù)方案中,優(yōu)選地,所述索引文件生成單元,具體包括:批處理服務(wù)部署模塊,用于在從集群上部署在批處理服務(wù)中,運(yùn)行批處理服務(wù),對(duì)增量更新后的索引數(shù)據(jù)進(jìn)行全量更新,讀取全量更新得到的所有數(shù)據(jù),生成索引文件并發(fā)布到查詢服務(wù)器;索引數(shù)據(jù)緩存模塊,用于將索引文件中的索引數(shù)據(jù)緩存在查詢服務(wù)器中。在該技術(shù)方案中,批處理服務(wù)通常是定期運(yùn)行的,索引數(shù)據(jù)的全量更新保證了索引數(shù)據(jù)的準(zhǔn)確性,減少了索引文件中的垃圾數(shù)據(jù),同時(shí)也會(huì)大幅提升檢索速度。
[0013]在上述技術(shù)方案中,優(yōu)選地,所述索引文件生成單元,具體還包括:索引數(shù)據(jù)讀取模塊,用于通過(guò)輔助處理器上的插件,訪問(wèn)查詢服務(wù)器,讀取索引數(shù)據(jù);進(jìn)一步地,所述索引文件生成單元,用于基于更新處理后的索引數(shù)據(jù),部署批處理服務(wù),生成索引文件,并對(duì)索引文件中的索引數(shù)據(jù)進(jìn)行處理。在該技術(shù)方案中,批處理與實(shí)時(shí)處理的有機(jī)結(jié)合,極大的提高了索引數(shù)據(jù)的準(zhǔn)確度。
[0014]根據(jù)本發(fā)明的又一個(gè)方面,還提出了一種HBase 二級(jí)索引構(gòu)建方法,包括:步驟202:通過(guò)主從集群的架構(gòu),將寫(xiě)入主集群的數(shù)據(jù),以異步方式復(fù)制到從集群;步驟204:獲取從集群中復(fù)制得到的數(shù)據(jù),對(duì)相應(yīng)的索引數(shù)據(jù)進(jìn)行更新處理;步驟206:基于更新處理后的索引數(shù)據(jù),部署批處理服務(wù),生成索引文件。在該技術(shù)方案中,將索引文件與HBase數(shù)據(jù)文件分開(kāi)存儲(chǔ),提高了系統(tǒng)的1性能,充分結(jié)合了批處理和實(shí)時(shí)處理兩種流程,解決了數(shù)據(jù)一致性問(wèn)題,減少了索引中的冗余數(shù)據(jù)。
[0015]在上述技術(shù)方案中,優(yōu)選地,所述步驟202,具體包括:步驟302:將待構(gòu)建二級(jí)索引的數(shù)據(jù),寫(xiě)入至主集群;步驟304:將寫(xiě)入主集群的數(shù)據(jù),通過(guò)主從集群間的響應(yīng)機(jī)制,以異步方式復(fù)制到從集群。在該技術(shù)方案中,通過(guò)主從集群的架構(gòu)設(shè)計(jì)避免了 HBase的高速讀寫(xiě)與索引服務(wù)之間的資源競(jìng)爭(zhēng)。
[0016]在上述技術(shù)方案中,優(yōu)選地,所述步驟204,具體包括:步驟402:將從集群接收到的數(shù)據(jù)寫(xiě)入?yún)^(qū)域服務(wù)器和部署在從集群上的實(shí)時(shí)索引創(chuàng)建服務(wù)中,并更新索引數(shù)據(jù)至查詢服務(wù)器;步驟404:將索引數(shù)據(jù)更新至查詢服務(wù)器后,對(duì)索引數(shù)據(jù)進(jìn)行增量更新,增量更新后的索引文件存儲(chǔ)在分布式文件系統(tǒng)中。在該技術(shù)方案中,由于系統(tǒng)是部署在Hadoop集群上的,系統(tǒng)的處理能力和存儲(chǔ)容量可以很方便的進(jìn)行擴(kuò)展,系統(tǒng)的安全性也得到了保障。
[0017]在上述技術(shù)方案中,優(yōu)選地,所述步驟206,具體包括:步驟502:在從集群上部署在批處理服務(wù)中,運(yùn)行批處理服務(wù),對(duì)增量更新后的索引數(shù)據(jù)進(jìn)行全量更新,讀取全量更新得到的所有數(shù)據(jù),生成索引文件并發(fā)布到查詢服務(wù)器;步驟504:將索引文件中的索引數(shù)據(jù)緩存在查詢服務(wù)器中。在該技術(shù)方案中,批處理服務(wù)通常是定期運(yùn)行的,索引數(shù)據(jù)的全量更新保證了索引數(shù)據(jù)的準(zhǔn)確性,減少了索引文件中的垃圾數(shù)據(jù),同時(shí)也會(huì)大幅提升檢索速度。
[0018]在上述技術(shù)方案中,優(yōu)選地,所述步驟206,具體還包括:步驟506:通過(guò)輔助處理器上的插件,訪問(wèn)查詢服務(wù)器,讀取索引數(shù)據(jù);所述步驟206,進(jìn)一步地用于基于更新處理后的索引數(shù)據(jù),部署批處理服務(wù),生成索引文件,并對(duì)索引文件中的索引數(shù)據(jù)進(jìn)行處理。在該技術(shù)方案中,批處理與實(shí)時(shí)處理的有機(jī)結(jié)合,極大的提高了索引數(shù)據(jù)的準(zhǔn)確度。
[0019]通過(guò)以上技術(shù)方案,可以在現(xiàn)有的索引構(gòu)建方式基礎(chǔ)上,充分利用單對(duì)象類型完成多對(duì)象類型的索引構(gòu)建,建立多對(duì)象類型元數(shù)據(jù)參與的面向復(fù)雜類型索引構(gòu)建的通用、統(tǒng)一構(gòu)建思路。
[0020]
【附圖說(shuō)明】
[0021]圖1示出了根據(jù)本發(fā)明的實(shí)施例的HBase 二級(jí)索引構(gòu)建裝置的框圖;
圖2示出了根據(jù)本發(fā)明的實(shí)施例的HBase 二級(jí)索引構(gòu)建方法的流程圖;
圖3示出了根據(jù)本發(fā)明的實(shí)施例的數(shù)據(jù)復(fù)制單元的流程圖;
圖4示出了根據(jù)本發(fā)明的實(shí)施例的數(shù)據(jù)更新單元的流程圖;
圖5示出了根據(jù)本發(fā)明的實(shí)施例的索引文件生成單元的流程圖;
圖6示出了根據(jù)本發(fā)明的實(shí)施例的HBase 二級(jí)索引構(gòu)建裝置的總體架構(gòu)圖。
[0022]
【具體實(shí)施方式】
[0023]為了能夠更清楚地理解本發(fā)明的上述目的、特征和優(yōu)點(diǎn),下面結(jié)合附圖和【具體實(shí)施方式】對(duì)本發(fā)明進(jìn)行進(jìn)一步的詳細(xì)描述。需要說(shuō)明的是,在不沖突的情況下,本申請(qǐng)的實(shí)施例及實(shí)施例中的特征可以相互組合。
[0024]在下面的描述中闡述了很多具體細(xì)節(jié)以便于充分理解本發(fā)明,但是,本發(fā)明還可以采用其他不同于在此描述的其他方式來(lái)實(shí)施,因此,本發(fā)明的保護(hù)范圍并不受下面公開(kāi)的具體實(shí)施例的限制。
[0025]圖1示出了根據(jù)本發(fā)明的實(shí)施例的HBase 二級(jí)索引構(gòu)建裝置的框圖。
[0026]如圖1所示,根據(jù)本發(fā)明的實(shí)施例的HBase 二級(jí)索引構(gòu)建裝置100,包括:數(shù)據(jù)復(fù)制單元102,用于通過(guò)主從集群的架構(gòu),將寫(xiě)入主集群的數(shù)據(jù),以異步方式復(fù)制到從集群;數(shù)據(jù)更新單元104,用于獲取從集群中復(fù)制得到的數(shù)據(jù),對(duì)相應(yīng)的索引數(shù)據(jù)進(jìn)行更新處理;索引文件生成