基于HBase表實(shí)現(xiàn)聚合計(jì)算的方法和裝置制造方法
【專利摘要】本發(fā)明提供了一種基于HBase表實(shí)現(xiàn)聚合計(jì)算的方法和裝置,包括:使用HBase協(xié)處理器的終端編寫聚合計(jì)算;對(duì)HBase中的配置文件進(jìn)行協(xié)處理器的聚合類配置,或者,對(duì)HBase中特定表的參數(shù)進(jìn)行協(xié)處理器的聚合類配置;HBase協(xié)處理器加載客戶端實(shí)現(xiàn)聚合計(jì)算。本發(fā)明通過HBase中協(xié)處理器的終端類型接口來實(shí)現(xiàn)聚合計(jì)算,通過簡單的聚合計(jì)算得出最終的計(jì)算結(jié)果,從而減少了網(wǎng)絡(luò)開銷,提高了性能。
【專利說明】基于HBase表實(shí)現(xiàn)聚合計(jì)算的方法和裝置
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及數(shù)據(jù)處理【技術(shù)領(lǐng)域】,尤其涉及一種基于HBase表實(shí)現(xiàn)聚合計(jì)算的方法和裝置。
【背景技術(shù)】
[0002]數(shù)據(jù)時(shí)代已經(jīng)來臨,分布式集群、分布式數(shù)據(jù)庫、分布式文件系統(tǒng)等技術(shù)都是人們關(guān)注的焦點(diǎn)。分布式集群Hadoop是大數(shù)據(jù)時(shí)代的產(chǎn)品,能夠解決大數(shù)據(jù)時(shí)代的海量數(shù)據(jù)的處理問題。HBase是在Hadoop之上的一個(gè)面向列的分布式數(shù)據(jù)庫,它很受到人們的關(guān)注。
[0003]HBase提供了很好的易用性及鍵值對(duì)的靈活處理,同時(shí)能夠快速讀取表中數(shù)據(jù)等優(yōu)勢(shì),但HBase中不能很好的處理聚合計(jì)算如求和、計(jì)數(shù)、排序等操作,它只會(huì)利用編寫MapReduce程序進(jìn)行執(zhí)行,例如執(zhí)行一次表的總行數(shù)的計(jì)數(shù),是需要執(zhí)行一次MapReducce程序才可以實(shí)現(xiàn),這需要花費(fèi)很長時(shí)間?,F(xiàn)有的HBase不能提供簡單的聚合計(jì)算,這將導(dǎo)致了網(wǎng)絡(luò)開銷增加、性能差。
【發(fā)明內(nèi)容】
[0004]為了解決上述技術(shù)問題,本發(fā)明提供了一種基于HBase表實(shí)現(xiàn)聚合計(jì)算的方法和裝置,能夠提供方便的聚合計(jì)算。
[0005]為了達(dá)到本發(fā)明目的,本發(fā)明提供了一種基于HBase表實(shí)現(xiàn)聚合計(jì)算的方法,包括:使用HBase協(xié)處理器的終端編寫聚合計(jì)算JfHBase中的配置文件進(jìn)行協(xié)處理器的聚合類配置,或者,對(duì)HBase中特定表的參數(shù)進(jìn)行協(xié)處理器的聚合類配置;HBase協(xié)處理器加載客戶端實(shí)現(xiàn)聚合計(jì)算。
[0006]進(jìn)一步地,使用HBase協(xié)處理器的終端編寫聚合計(jì)算,包括:定義一個(gè)協(xié)議protocol接口,所述協(xié)議接口繼承協(xié)處理器協(xié)議CoprocessorProtocol ;實(shí)現(xiàn)終端接口,所述實(shí)現(xiàn)繼承基礎(chǔ)終端協(xié)處理器BaseEndpointCoprocessor ;客戶端使用應(yīng)用程序編程接口API調(diào)用終端。
[0007]進(jìn)一步地,聚合計(jì)算包括求和、平均、最大計(jì)算、最小計(jì)算、計(jì)數(shù)和排序。
[0008]進(jìn)一步地,對(duì)HBase中的配置文件進(jìn)行協(xié)處理器的聚合類配置,包括:將hbase-site.xml 中的 hbase.coprocessor, reg1n, classes 設(shè)置成協(xié)處理器的聚合類;對(duì)HBase特定表中進(jìn)行協(xié)處理器的聚合類配置,包括:在hbase shell中對(duì)HBase中特定表的參數(shù)進(jìn)行協(xié)處理器的聚合類配置。
[0009]進(jìn)一步地,協(xié)處理器加載客戶端實(shí)現(xiàn)聚合計(jì)算,包括:在客戶端實(shí)現(xiàn)終端,協(xié)處理器加載客戶端,通過HBase RPC調(diào)用,客戶端提供聚合計(jì)算。
[0010]一種基于HBase表實(shí)現(xiàn)聚合計(jì)算的裝置,包括:編寫模塊,用于使用HBase協(xié)處理器的終端編寫聚合計(jì)算;配置模塊,用于對(duì)HBase中的配置文件進(jìn)行協(xié)處理器的聚合類配置,或者,對(duì)HBase中特定表的參數(shù)進(jìn)行協(xié)處理器的聚合類配置;實(shí)現(xiàn)模塊,用于協(xié)處理器加載客戶端實(shí)現(xiàn)的聚合計(jì)算。
[0011]進(jìn)一步地,編寫模塊,具體用于定義一個(gè)協(xié)議protocol接口,所述協(xié)議接口繼承協(xié)處理器協(xié)議CoprocessorP1tocol ;實(shí)現(xiàn)終端接口,所述實(shí)現(xiàn)繼承基礎(chǔ)終端協(xié)處理器BaseEndpointCoprocessor ;客戶端使用應(yīng)用程序編程接口 API調(diào)用終端。
[0012]進(jìn)一步地,配置模塊,具體用于將hbase-site.xml中的hbase.coprocessor,reg1n, classes設(shè)置成協(xié)處理器的聚合類,或者,在hbase shell中對(duì)HBase中特定表的參數(shù)進(jìn)行協(xié)處理器的聚合類配置。
[0013]進(jìn)一步地,實(shí)現(xiàn)模塊,具體用于在客戶端實(shí)現(xiàn)終端,協(xié)處理器加載客戶端,通過HBase RPC調(diào)用,客戶端提供聚合計(jì)算。
[0014]與現(xiàn)有技術(shù)相比,本發(fā)明包括:使用HBase協(xié)處理器的終端編寫聚合計(jì)算;對(duì)HBase中的配置文件進(jìn)行協(xié)處理器的聚合類配置,或者,對(duì)HBase中特定表的參數(shù)進(jìn)行協(xié)處理器的聚合類配置;HBase協(xié)處理器加載客戶端實(shí)現(xiàn)聚合計(jì)算。本發(fā)明通過HBase中協(xié)處理器的終端類型接口來實(shí)現(xiàn)聚合計(jì)算,通過簡單的聚合計(jì)算得出最終的計(jì)算結(jié)果,從而減少了網(wǎng)絡(luò)開銷,提高了性能。
【專利附圖】
【附圖說明】
[0015]圖1是本發(fā)明基于HBase表實(shí)現(xiàn)聚合計(jì)算的方法的流程示意圖。
[0016]圖2是本發(fā)明使用HBase協(xié)處理器的終端編寫聚合計(jì)算的方法的流程示意圖。
[0017]圖3是本發(fā)明基于HBase表實(shí)現(xiàn)聚合計(jì)算的裝置的結(jié)構(gòu)示意圖。
【具體實(shí)施方式】
[0018]下面結(jié)合附圖對(duì)本發(fā)明進(jìn)行進(jìn)一步的詳細(xì)說明。通過足夠詳細(xì)的描述這些實(shí)施示例,使得本領(lǐng)域技術(shù)人員能夠?qū)嵺`本發(fā)明。在不脫離本發(fā)明的主旨和范圍的情況下,可以對(duì)實(shí)施做出邏輯的、實(shí)現(xiàn)的和其他的改變。
[0019]在本發(fā)明中,需要部署分布式集群環(huán)境,例如,在centos6.3操作系統(tǒng)上安裝好jdkl.6,并部署分布式集群環(huán)境,該集群中包含HDFS、MapReduce> HBase> Zookeeper組件,該分布式集群環(huán)境可以是有5個(gè)節(jié)點(diǎn),每個(gè)節(jié)點(diǎn)的配置是96G內(nèi)存,12個(gè)core,硬盤是12*1T。
[0020]HBase協(xié)處理器(Coprocessor)是HBase中的一個(gè)框架,提供了一個(gè)靈活的、可用于建立分布式服務(wù)的數(shù)據(jù)模型,能夠自動(dòng)化擴(kuò)展、負(fù)載均衡,每個(gè)表的服務(wù)器可以運(yùn)行代碼,客戶端可以調(diào)用接口等優(yōu)點(diǎn)。它為用戶提供類庫和運(yùn)行時(shí)環(huán)境,使得他們的代碼能夠在HBase Reg1nserver 和 Master 上處理。
[0021]協(xié)處理器分為兩種類型,提供了兩個(gè)不同方向的插件,一個(gè)是觀察者(observer),該類型類似于關(guān)系數(shù)據(jù)庫的觸發(fā)器,另一個(gè)是終端(endpoint),動(dòng)態(tài)的終端像個(gè)存儲(chǔ)過程。在hbase表的聚合工具中使用的是終端類型的插件方式,終端是動(dòng)態(tài)遠(yuǎn)程過程調(diào)用協(xié)議(RPC, Remote Procedure Call Protocol)插件的接口,它的實(shí)現(xiàn)代碼被安裝在服務(wù)器端,從而能夠通過HBase RPC喚醒。客戶端類庫提供了非常方便的方法來調(diào)用這些動(dòng)態(tài)接口,可以在任意時(shí)候調(diào)用一個(gè)終端,實(shí)現(xiàn)代碼會(huì)被目標(biāo)reg1n遠(yuǎn)程執(zhí)行,最終返回結(jié)果到終端。用戶可以結(jié)合使用的插件接口,為HBase添加全新的特性。
[0022]圖1是本發(fā)明基于HBase表實(shí)現(xiàn)聚合計(jì)算的方法的流程示意圖。如圖1所示,具體可以包括:
[0023]步驟11,使用HBase協(xié)處理器(Coprocessor)的終端(endpoint)編寫聚合計(jì)算。
[0024]在本發(fā)明中,使用的是Coprocessor中的終端類型來進(jìn)行實(shí)現(xiàn)聚合計(jì)算。終端是可以在任何時(shí)候被客戶端觸發(fā),終端類型的實(shí)現(xiàn)是在遠(yuǎn)程的reg1n上執(zhí)行的,然后將結(jié)果返回給客戶端。因此,實(shí)現(xiàn)聚合計(jì)算需要對(duì)終端接口進(jìn)行編程操作。由于終端是動(dòng)態(tài)的遠(yuǎn)程過程調(diào)用協(xié)議(RPC,Remote Procedure Call Protocol)的一個(gè)擴(kuò)展,終端的實(shí)現(xiàn)被安裝在客戶端,通過HBase RPC調(diào)用,客戶端提供聚合計(jì)算。
[0025]在本步驟中,聚合計(jì)算可以包括求和、平均、最大計(jì)算、最小計(jì)算、計(jì)數(shù)、排序等。
[0026]在本步驟中,使用HBase協(xié)處理器的終端編寫聚合計(jì)算,具體可以參考圖2所示,包括:
[0027]步驟111,定義一個(gè)協(xié)議(protocol)接口,該協(xié)議接口繼承協(xié)處理器協(xié)議(CoprocessorProtocol);
[0028]步驟112,實(shí)現(xiàn)終端接口,該實(shí)現(xiàn)繼承基礎(chǔ)終端協(xié)處理器(BaseEndpointCoprocessor);
[0029]步驟113,客戶端使用應(yīng)用程序編程接口(API, Applicat1n ProgrammingInterface)調(diào)用終端。
[0030]步驟12,對(duì)HBase中的配置文件進(jìn)行協(xié)處理器的聚合類配置,或者,對(duì)HBase中特定表的參數(shù)進(jìn)行協(xié)處理器的聚合類配置。
[0031]在本步驟中,對(duì)HBase中的配置文件進(jìn)行協(xié)處理器的聚合類配置,具體為將hbase-site.xml 中的 hbase.coprocessor, reg1n, classes 設(shè)置成協(xié)處理器的聚合類。
[0032]對(duì)HBase特定表中進(jìn)行協(xié)處理器的聚合類配置,具體為在hbase shell中對(duì)HBase中特定表的參數(shù)進(jìn)行協(xié)處理器的聚合類配置。
[0033]步驟13,協(xié)處理器加載客戶端實(shí)現(xiàn)聚合計(jì)算。
[0034]在本步驟中,在客戶端實(shí)現(xiàn)終端,協(xié)處理器加載客戶端,通過HBase RPC調(diào)用,客戶端提供聚合計(jì)算。
[0035]本發(fā)明通過HBase中協(xié)處理器的終端類型接口來實(shí)現(xiàn)聚合計(jì)算,它可以通過簡單的聚合計(jì)算得出最終的計(jì)算結(jié)果,不需要MapReduce程序執(zhí)行計(jì)算得出,從而減少了網(wǎng)絡(luò)開銷,提高了性能。
[0036]圖3是本發(fā)明基于HBase表實(shí)現(xiàn)聚合計(jì)算的裝置,如圖3所示,具體可以包括:
[0037]編寫模塊,用于使用HBase協(xié)處理器的終端編寫聚合計(jì)算;
[0038]具體地,編寫模塊用于定義一個(gè)協(xié)議protocol接口,該協(xié)議接口繼承協(xié)處理器協(xié)議CoprocessorProtocol ;實(shí)現(xiàn)終端接口,該實(shí)現(xiàn)繼承基礎(chǔ)終端協(xié)處理器BaseEndpointCoprocessor ;客戶端使用應(yīng)用程序編程接口 API調(diào)用終端。
[0039]配置模塊,用于對(duì)HBase中的配置文件進(jìn)行協(xié)處理器的聚合類配置,或者,對(duì)HBase中特定表的參數(shù)進(jìn)行協(xié)處理器的聚合類配置;
[0040]具體地,配置模塊用于將hbase-site.xml 中的 hbase.coprocessor, reg1n,classes設(shè)置成協(xié)處理器的聚合類,或者,在hbase shell中對(duì)HBase中特定表的參數(shù)進(jìn)行協(xié)處理器的聚合類配置。
[0041]實(shí)現(xiàn)模塊,用于協(xié)處理器加載客戶端實(shí)現(xiàn)的聚合計(jì)算;
[0042]具體地,實(shí)現(xiàn)模塊用于在客戶端實(shí)現(xiàn)終端,協(xié)處理器加載客戶端,通過HBase RPC調(diào)用,客戶端提供聚合計(jì)算。
[0043]基于HBase表實(shí)現(xiàn)聚合計(jì)算的裝置是和基于HBase表實(shí)現(xiàn)聚合計(jì)算的方法對(duì)應(yīng)的,因此,基于HBase表實(shí)現(xiàn)聚合計(jì)算的裝置具體的實(shí)現(xiàn)細(xì)節(jié)可參看基于HBase表實(shí)現(xiàn)聚合計(jì)算的方法,在此不贅述。
[0044]本發(fā)明通過HBase中協(xié)處理器的終端類型接口來實(shí)現(xiàn)聚合計(jì)算,它可以通過簡單的聚合計(jì)算得出最終的計(jì)算結(jié)果,不需要MapReduce程序執(zhí)行計(jì)算得出,從而減少了網(wǎng)絡(luò)開銷,提聞了性能。
[0045]應(yīng)當(dāng)理解,雖然本說明書根據(jù)實(shí)施方式加以描述,但并非每個(gè)實(shí)施方式僅包含一個(gè)獨(dú)立的技術(shù)方案,說明書的這種敘述方式僅僅是為清楚起見,本領(lǐng)域技術(shù)人員應(yīng)當(dāng)將說明書作為一個(gè)整體,各實(shí)施方式中的技術(shù)方案也可以經(jīng)適當(dāng)組合,形成本領(lǐng)域技術(shù)人員可以理解的其他實(shí)施方式,它們并非用于限制本發(fā)明的保護(hù)范圍,凡未脫離本發(fā)明技藝精神所作的等效實(shí)施方式或變更均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
【權(quán)利要求】
1.一種基于HBase表實(shí)現(xiàn)聚合計(jì)算的方法,其特征在于,包括: 使用HBase協(xié)處理器的終端編寫聚合計(jì)算; 對(duì)HBase中的配置文件進(jìn)行協(xié)處理器的聚合類配置,或者,對(duì)HBase中特定表的參數(shù)進(jìn)行協(xié)處理器的聚合類配置; HBase協(xié)處理器加載客戶端實(shí)現(xiàn)聚合計(jì)算。
2.根據(jù)權(quán)利要求1所述的基于HBase表實(shí)現(xiàn)聚合計(jì)算的方法,其特征在于,所述使用HBase協(xié)處理器的終端編寫聚合計(jì)算,包括: 定義一個(gè)協(xié)議protocol接口,所述協(xié)議接口繼承協(xié)處理器協(xié)議CoprocessorProtocol ; 實(shí)現(xiàn)終端接口,所述實(shí)現(xiàn)繼承基礎(chǔ)終端協(xié)處理器BaseEndpointCoprocessor ; 客戶端使用應(yīng)用程序編程接口 API調(diào)用終端。
3.根據(jù)權(quán)利要求1所述的基于HBase表實(shí)現(xiàn)聚合計(jì)算的方法,其特征在于,所述聚合計(jì)算包括求和、平均、最大計(jì)算、最小計(jì)算、計(jì)數(shù)和排序。
4.根據(jù)權(quán)利要求1所述的基于HBase表實(shí)現(xiàn)聚合計(jì)算的方法,其特征在于,所述對(duì)HBase中的配置文件進(jìn)行協(xié)處理器的聚合類配置,包括:將hbase_site.xml中的hbase.coprocessor, reg1n, classes設(shè)置成協(xié)處理器的聚合類; 所述對(duì)HBase特定表中進(jìn)行協(xié)處理器的聚合類配置,包括:在hbase shell中對(duì)HBase中特定表的參數(shù)進(jìn)行協(xié)處理器的聚合類配置。
5.根據(jù)權(quán)利要求1所述的基于HBase表實(shí)現(xiàn)聚合計(jì)算的方法,其特征在于,所述協(xié)處理器加載客戶端實(shí)現(xiàn)聚合計(jì)算,包括:在客戶端實(shí)現(xiàn)終端,協(xié)處理器加載客戶端,通過HBaseRPC調(diào)用,客戶端提供聚合計(jì)算。
6.一種基于HBase表實(shí)現(xiàn)聚合計(jì)算的裝置,其特征在于,包括: 編寫模塊,用于使用HBase協(xié)處理器的終端編寫聚合計(jì)算; 配置模塊,用于對(duì)HBase中的配置文件進(jìn)行協(xié)處理器的聚合類配置,或者,對(duì)HBase中特定表的參數(shù)進(jìn)行協(xié)處理器的聚合類配置; 實(shí)現(xiàn)模塊,用于協(xié)處理器加載客戶端實(shí)現(xiàn)的聚合計(jì)算。
7.根據(jù)權(quán)利要求6所述的基于HBase表實(shí)現(xiàn)聚合計(jì)算的裝置,其特征在于,所述編寫模塊,具體用于定義一個(gè)協(xié)議protocol接口,所述協(xié)議接口繼承協(xié)處理器協(xié)議CoprocessorProtocol ;實(shí)現(xiàn)終端接口,所述實(shí)現(xiàn)繼承基礎(chǔ)終端協(xié)處理器BaseEndpointCoprocessor ;客戶端使用應(yīng)用程序編程接口 API調(diào)用終端。
8.根據(jù)權(quán)利要求6所述的基于HBase表實(shí)現(xiàn)聚合計(jì)算的裝置,其特征在于,所述配置模塊,具體用于將 hbase-site.xml 中的 hbase.coprocessor, reg1n, classes 設(shè)置成協(xié)處理器的聚合類,或者,在hbase shell中對(duì)HBase中特定表的參數(shù)進(jìn)行協(xié)處理器的聚合類配置。
9.根據(jù)權(quán)利要求8所述的基于HBase表實(shí)現(xiàn)聚合計(jì)算的裝置,其特征在于,所述實(shí)現(xiàn)模塊,具體用于在客戶端實(shí)現(xiàn)終端,協(xié)處理器加載客戶端,通過HBase RPC調(diào)用,客戶端提供聚合計(jì)算。
【文檔編號(hào)】G06F17/30GK104268257SQ201410527986
【公開日】2015年1月7日 申請(qǐng)日期:2014年10月9日 優(yōu)先權(quán)日:2014年10月9日
【發(fā)明者】孫志云, 郭美思, 吳楠 申請(qǐng)人:浪潮(北京)電子信息產(chǎn)業(yè)有限公司