一種基于內(nèi)存數(shù)據(jù)庫和Hbase存取大數(shù)據(jù)的方法及系統(tǒng)的制作方法
【專利摘要】本發(fā)明公開了一種基于內(nèi)存數(shù)據(jù)庫和Hbase存取大數(shù)據(jù)的方法及系統(tǒng),其中,所述的方法包括:S1、讀取多個(gè)待處理的源文件,分別對(duì)每一個(gè)所述源文件進(jìn)行任務(wù)處理,其中,一個(gè)任務(wù)處理包括多個(gè)處理步驟;S2、每一個(gè)源文件進(jìn)行了每一個(gè)處理步驟后,以第一預(yù)設(shè)方式將每一個(gè)源文件的文件處理狀態(tài)存儲(chǔ)于內(nèi)存數(shù)據(jù)庫中;S3、將每一個(gè)源文件的每一個(gè)處理步驟后的文件數(shù)據(jù)以第二預(yù)設(shè)方式存儲(chǔ)于Hbase中。本發(fā)明將任務(wù)處理過程中的中間數(shù)據(jù)文件存放于Hbase中,而將每一個(gè)文件經(jīng)過每一個(gè)處理步驟后的文件處理狀態(tài)存放于內(nèi)存數(shù)據(jù)庫中,利用了Hbase可存放大數(shù)據(jù)以及內(nèi)存數(shù)據(jù)庫訪問速度快的優(yōu)勢,能夠?qū)崿F(xiàn)數(shù)據(jù)的快速存取和快速訪問。
【專利說明】
一種基于內(nèi)存數(shù)據(jù)庫和Hbase存取大數(shù)據(jù)的方法及系統(tǒng)
技術(shù)領(lǐng)域
[〇〇〇1]本發(fā)明涉及數(shù)據(jù)存取技術(shù)領(lǐng)域,具體涉及一種基于內(nèi)存數(shù)據(jù)庫和Hbase存取大數(shù)據(jù)的方法及系統(tǒng)?!颈尘凹夹g(shù)】
[0002]分布式內(nèi)存數(shù)據(jù)庫是個(gè)內(nèi)存數(shù)據(jù)庫,所有數(shù)據(jù)都存儲(chǔ)在內(nèi)存中,可以發(fā)揮出內(nèi)存訪問的超強(qiáng)速度優(yōu)勢。通過全量數(shù)據(jù)文件(checkpoint)和redo日志保證數(shù)據(jù)可靠性。支持 sql靈活訪問數(shù)據(jù)。同時(shí),分布式內(nèi)存數(shù)據(jù)庫是分布式的,部署在網(wǎng)絡(luò)的多個(gè)節(jié)點(diǎn)上,對(duì)外提供統(tǒng)一的訪問接口。
[0003]Hbase是一種N0SQL數(shù)據(jù)庫;Hbase中的數(shù)據(jù),可以很方便按照rowkey或者rowkey的范圍檢索出來,但是無法滿足不以rowkey為關(guān)鍵字的靈活查詢的需要。
【發(fā)明內(nèi)容】
[0004]本發(fā)明所要解決的技術(shù)問題是提供一種基于內(nèi)存數(shù)據(jù)庫和Hbase存取大數(shù)據(jù)的方法及系統(tǒng),能夠提高數(shù)據(jù)的存取速度。
[0005]本發(fā)明解決上述技術(shù)問題的技術(shù)方案如下:
[0006]—方面,本發(fā)明提供了一種基于內(nèi)存數(shù)據(jù)庫和Hbase存取大數(shù)據(jù)的方法,包括:
[0007]S1、讀取多個(gè)待處理的源文件,分別對(duì)每一個(gè)所述源文件進(jìn)行任務(wù)處理,其中,一個(gè)任務(wù)處理包括多個(gè)處理步驟;
[0008]S2、每一個(gè)源文件進(jìn)行了每一個(gè)處理步驟后,以第一預(yù)設(shè)方式將每一個(gè)源文件的文件處理狀態(tài)存儲(chǔ)于內(nèi)存數(shù)據(jù)庫中;
[0009]S3、將每一個(gè)源文件的每一個(gè)處理步驟后的文件數(shù)據(jù)以第二預(yù)設(shè)方式存儲(chǔ)于 Hbase 中。
[0010]另一方面,本發(fā)明提供了一種基于內(nèi)存數(shù)據(jù)庫和Hbase存取大數(shù)據(jù)的系統(tǒng),包括:
[0011]文件讀取模塊,用于讀取多個(gè)待處理的源文件;
[0012]任務(wù)處理模塊,用于對(duì)每一個(gè)所述源文件進(jìn)行任務(wù)處理,其中,一個(gè)任務(wù)處理包括多個(gè)處理步驟;
[0013]第一存儲(chǔ)模塊,用于當(dāng)每一個(gè)源文件進(jìn)行了每一個(gè)處理步驟后,以第一預(yù)設(shè)方式將每一個(gè)源文件的文件處理狀態(tài)存儲(chǔ)于內(nèi)存數(shù)據(jù)庫中;
[0014]第二存儲(chǔ)模塊,用于將每一個(gè)源文件的每一個(gè)處理步驟后的文件數(shù)據(jù)以第二預(yù)設(shè)方式存儲(chǔ)于Hbase中。[〇〇15]本發(fā)明提供的一種基于內(nèi)存數(shù)據(jù)庫和Hbase存取大數(shù)據(jù)的方法及系統(tǒng),將任務(wù)處理過程中的中間數(shù)據(jù)文件存放于Hbase中,而將每一個(gè)文件經(jīng)過每一個(gè)處理步驟后的文件處理狀態(tài)存放于內(nèi)存數(shù)據(jù)庫中,利用了 Hbase可存放大數(shù)據(jù)以及內(nèi)存數(shù)據(jù)庫訪問速度快的優(yōu)勢,能夠?qū)崿F(xiàn)數(shù)據(jù)的快速存取?!靖綀D說明】
[0016]圖1為本發(fā)明實(shí)施例1的一種基于內(nèi)存數(shù)據(jù)庫和Hbase存取大數(shù)據(jù)的方法流程圖; [〇〇17]圖2為實(shí)施例2的流程圖;[〇〇18]圖3為本發(fā)明實(shí)施例3的一種基于內(nèi)存數(shù)據(jù)庫和Hbase存取大數(shù)據(jù)的系統(tǒng)示意圖。 【具體實(shí)施方式】
[0019]以下結(jié)合附圖對(duì)本發(fā)明的原理和特征進(jìn)行描述,所舉實(shí)例只用于解釋本發(fā)明,并非用于限定本發(fā)明的范圍。
[0020]實(shí)施例1、一種基于內(nèi)存數(shù)據(jù)庫和Hbase存取大數(shù)據(jù)的方法。下面結(jié)合圖1對(duì)本實(shí)施例提供的方法進(jìn)行說明。
[0021]參見圖1,本實(shí)施例提供的方法包括:S1、讀取多個(gè)待處理的源文件,分別對(duì)每一個(gè)所述源文件進(jìn)行任務(wù)處理,其中,一個(gè)任務(wù)處理包括多個(gè)處理步驟;[〇〇22]S2、每一個(gè)源文件進(jìn)行了每一個(gè)處理步驟后,以第一預(yù)設(shè)方式將每一個(gè)源文件的文件處理狀態(tài)存儲(chǔ)于內(nèi)存數(shù)據(jù)庫中;[〇〇23]S3、將每一個(gè)源文件的每一個(gè)處理步驟后的文件數(shù)據(jù)以第二預(yù)設(shè)方式存儲(chǔ)于Hbase 中。[〇〇24]其中,本實(shí)施例為每一個(gè)任務(wù)處理配置一個(gè)進(jìn)程序號(hào),所述步驟S2具體包括:
[0025]對(duì)每一個(gè)源文件進(jìn)行了每一個(gè)處理步驟之后,以進(jìn)程序號(hào)加文件標(biāo)識(shí)為索引將每一個(gè)源文件的文件處理狀態(tài)以及該源文件的處理時(shí)間以數(shù)據(jù)表格的形式存儲(chǔ)于內(nèi)存數(shù)據(jù)庫中。[〇〇26]所述步驟S3具體包括:
[0027] 為每一個(gè)源文件的每一個(gè)處理步驟后的文件設(shè)計(jì)合理的Rowkey,以Rowkey為索引將文件數(shù)據(jù)以數(shù)據(jù)表格的形式存儲(chǔ)于Hbase中,其中,以進(jìn)程序號(hào)加文件標(biāo)識(shí)作為Rowkey。 [〇〇28]本實(shí)施例在將每一個(gè)處理步驟后的中間文件存儲(chǔ)于Hbase中以及將文件處理狀態(tài)存儲(chǔ)于內(nèi)存數(shù)據(jù)庫中時(shí),根據(jù)每一個(gè)源文件中的數(shù)據(jù)量按照第一預(yù)定時(shí)間間隔建立對(duì)應(yīng)的數(shù)據(jù)表格,并存儲(chǔ)于相應(yīng)的內(nèi)存數(shù)據(jù)庫或Hbase中,以及按照第二預(yù)定時(shí)間間隔定期清理相應(yīng)的數(shù)據(jù)表格。[〇〇29] 實(shí)施例2[〇〇3〇]為了加深對(duì)本發(fā)明提供的基于內(nèi)存數(shù)據(jù)庫和Hbase存取大數(shù)據(jù)的方法的進(jìn)一步理解,下面以一個(gè)具體的例子來說明。
[0031]參見圖2,首先,開發(fā)一個(gè)基于Hbase存儲(chǔ)的程序(為描述方便,以下稱為工單程序),來記錄和保存任務(wù)處理過程中每一個(gè)處理步驟之后的文件以及斷點(diǎn)文件記錄。比如, 以對(duì)源文件的預(yù)處理和剔重處理為例:對(duì)每個(gè)文件進(jìn)行了預(yù)處理之后,需要通過工單程序?qū)㈩A(yù)處理后的文件寫入Hbase中,同時(shí)在內(nèi)存數(shù)據(jù)庫中記錄下該文件的處理狀態(tài)(例如,預(yù)處理已完成,剔重處理未開始);工單程序再從Hbase中讀出預(yù)處理后的文件放入剔重處理入口,并在內(nèi)存數(shù)據(jù)庫中更改該文件的處理狀態(tài)(預(yù)處理已處理,剔重處理已開始);待剔重處理完后,工單程序從剔重處理出口將文件放入Hbase中,并在內(nèi)存數(shù)據(jù)庫中更改該文件的處理狀態(tài)(預(yù)處理已完成,剔重處理已完成)。
[0032]對(duì)每一個(gè)處理后的文件進(jìn)行了每一個(gè)處理步驟之后,以進(jìn)程序號(hào)加文件標(biāo)識(shí)為索引將每一個(gè)源文件的文件處理狀態(tài)以及該源文件的處理時(shí)間以數(shù)據(jù)表格的形式存儲(chǔ)于內(nèi)存數(shù)據(jù)庫中。[〇〇33]其中,內(nèi)存數(shù)據(jù)庫的表名為文件狀態(tài)表(FileStatusTable),按照進(jìn)程序號(hào)ProcID建索引,內(nèi)存數(shù)據(jù)庫的表結(jié)構(gòu):進(jìn)程序號(hào)ProcID,文件名FileName,文件處理狀態(tài)Status以及該文件處理時(shí)間deal_time。[〇〇34]文件處理狀態(tài)Status取值代表的含義如下:[〇〇35]0 1號(hào)程序已將這個(gè)文件放在出口;[〇〇36]1工單寫程序已將這個(gè)文件寫入hbase表;[〇〇37]2工單讀程序已將這個(gè)文件放在2號(hào)程序的入口;[〇〇38]3 2號(hào)程序已將這個(gè)文件處理;[〇〇39] -1,表示工單寫Hbase程序時(shí)讀的內(nèi)存庫表中給的文件名在文件系統(tǒng)上不存在; [〇〇4〇] -2,表示工單讀Hbase程序時(shí)讀的內(nèi)存庫表中給的文件名在hbase中不存在。[〇〇41]其中,同一組處理任務(wù)的進(jìn)程為同一個(gè)序號(hào)(比如,表示處理相同任務(wù)的1號(hào)程序、工單程序以及2號(hào)程序?qū)?yīng)的進(jìn)程序號(hào)均為001),進(jìn)程序號(hào)是進(jìn)行任務(wù)分配的依據(jù)。[〇〇42]內(nèi)存數(shù)據(jù)庫的表名為文件數(shù)據(jù)表FileDataOl,以進(jìn)程序號(hào)+文件名稱為Rowkey建索引,其中,Rowkey中加入進(jìn)程序號(hào)的原因,是將同一進(jìn)程需要處理的數(shù)據(jù)放在一起,使得讀寫操作在同一 Reg1n上,性能更優(yōu)。[〇〇43]另外,在將數(shù)據(jù)存儲(chǔ)于內(nèi)存數(shù)據(jù)庫或者Hbase中時(shí),可以根據(jù)數(shù)據(jù)量每天建立一張數(shù)據(jù)表格或者每月建立一張數(shù)據(jù)表格,并定期清理過期的數(shù)據(jù)表格。比如,按天建表,文件名稱依次為:FileData_20160310,F(xiàn)ileData_20160311,…,F(xiàn)ileData_20160318。
[0044]當(dāng)出現(xiàn)異常宕機(jī)或者磁盤故障后重啟時(shí),從內(nèi)存數(shù)據(jù)庫中找到每一個(gè)文件的最后處理狀態(tài),根據(jù)文件的最后處理狀態(tài),對(duì)異常宕機(jī)或者磁盤故障后為處理的步驟進(jìn)行處理, 即內(nèi)存數(shù)據(jù)庫能夠進(jìn)行斷點(diǎn)文件記錄,重啟后,只需要處理斷點(diǎn)以后的步驟即可,而不用從頭開始。
[0045]實(shí)施例3、一種基于內(nèi)存數(shù)據(jù)和Hbase存取大數(shù)據(jù)的系統(tǒng)。下面結(jié)合圖3對(duì)本實(shí)施例提供的系統(tǒng)進(jìn)行描述。
[0046]參見圖3,本實(shí)施例提供的系統(tǒng)包括文件讀取模塊31、配置模塊32、任務(wù)處理模塊 33、表格建立模塊34、第一存儲(chǔ)模塊35、第二存儲(chǔ)模塊36和表格清理模塊37。[〇〇47]具體的,文件讀取模塊31,用于讀取多個(gè)待處理的源文件。[〇〇48] 任務(wù)處理模塊33,用于對(duì)每一個(gè)所述源文件進(jìn)行任務(wù)處理,其中,一個(gè)任務(wù)處理包括多個(gè)處理步驟。[〇〇49]第一存儲(chǔ)模塊35,用于當(dāng)每一個(gè)源文件進(jìn)行了每一個(gè)處理步驟后,以第一預(yù)設(shè)方式將每一個(gè)源文件的文件處理狀態(tài)存儲(chǔ)于內(nèi)存數(shù)據(jù)庫中。
[0050]第二存儲(chǔ)模塊36,用于將每一個(gè)源文件的每一個(gè)處理步驟后的文件數(shù)據(jù)以第二預(yù)設(shè)方式存儲(chǔ)于Hbase中。
[0051]其中,本實(shí)施例提供的系統(tǒng)還包括配置模塊32,用于為每一個(gè)任務(wù)處理配置一個(gè)進(jìn)程序號(hào);所述第一存儲(chǔ)模塊35具體用于:對(duì)每一個(gè)源文件進(jìn)行了每一個(gè)處理步驟之后,以進(jìn)程序號(hào)加文件標(biāo)識(shí)為索引將每一個(gè)源文件的文件處理狀態(tài)以及該源文件的處理時(shí)間以數(shù)據(jù)表格的形式存儲(chǔ)于內(nèi)存數(shù)據(jù)庫中。
[0052]第二存儲(chǔ)模塊36,具體用于:為每一個(gè)源文件的每一個(gè)處理步驟后的文件設(shè)計(jì)合理的Rowkey,以Rowkey為索引將文件數(shù)據(jù)以數(shù)據(jù)表格的形式存儲(chǔ)于Hbase中,其中,以進(jìn)程序號(hào)加文件標(biāo)識(shí)作為Rowkey。[〇〇53]本實(shí)施例提供的系統(tǒng)還包括表格建立模塊34和表格清理模塊37,其中,表格建立模塊34,用于根據(jù)每一個(gè)源文件中的數(shù)據(jù)量按照第一預(yù)定時(shí)間間隔建立對(duì)應(yīng)的數(shù)據(jù)表格, 并存儲(chǔ)于相應(yīng)的內(nèi)存數(shù)據(jù)庫或Hbase中;表格清理模塊37,用于按照第二預(yù)定時(shí)間間隔定期清理相應(yīng)的數(shù)據(jù)表格。[〇〇54]本發(fā)明提供的一種基于內(nèi)存數(shù)據(jù)庫和Hbase存取大數(shù)據(jù)的方法及系統(tǒng),將任務(wù)處理過程中的中間數(shù)據(jù)文件存放于Hbase中,而將每一個(gè)文件經(jīng)過每一個(gè)處理步驟后的文件處理狀態(tài)存放于內(nèi)存數(shù)據(jù)庫中,利用了 Hbase可存放大數(shù)據(jù)以及內(nèi)存數(shù)據(jù)庫訪問速度快的優(yōu)勢,能夠?qū)崿F(xiàn)數(shù)據(jù)的快速存取。
[0055]在本說明書的描述中,參考術(shù)語“實(shí)施例一”、“示例”、“具體示例”、或“一些示例” 等的描述意指結(jié)合該實(shí)施例或示例描述的具體方法、裝置或者特點(diǎn)包含于本發(fā)明的至少一個(gè)實(shí)施例或示例中。在本說明書中,對(duì)上述術(shù)語的示意性表述不必須針對(duì)的是相同的實(shí)施例或示例。而且,描述的具體特征、方法、裝置或者特點(diǎn)可以在任一個(gè)或多個(gè)實(shí)施例或示例中以合適的方式結(jié)合。此外,在不相互矛盾的情況下,本領(lǐng)域的技術(shù)人員可以將本說明書中描述的不同實(shí)施例或示例以及不同實(shí)施例或示例的特征進(jìn)行結(jié)合和組合。
[0056]以上所述僅為本發(fā)明的較佳實(shí)施例,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
【主權(quán)項(xiàng)】
1.一種基于內(nèi)存數(shù)據(jù)庫和Hbase存取大數(shù)據(jù)的方法,其特征在于,包括:51、讀取多個(gè)待處理的源文件,分別對(duì)每一個(gè)所述源文件進(jìn)行任務(wù)處理,其中,一個(gè)任 務(wù)處理包括多個(gè)處理步驟;52、每一個(gè)源文件進(jìn)行了每一個(gè)處理步驟后,以第一預(yù)設(shè)方式將每一個(gè)源文件的文件 處理狀態(tài)存儲(chǔ)于內(nèi)存數(shù)據(jù)庫中;53、將每一個(gè)源文件的每一個(gè)處理步驟后的文件數(shù)據(jù)以第二預(yù)設(shè)方式存儲(chǔ)于Hbase中。2.如權(quán)利要求1所述的基于內(nèi)存數(shù)據(jù)庫和Hbase存取大數(shù)據(jù)的方法,其特征在于,為每 一個(gè)任務(wù)處理配置一個(gè)進(jìn)程序號(hào),所述步驟S2具體包括:對(duì)每一個(gè)源文件進(jìn)行了每一個(gè)處理步驟之后,以進(jìn)程序號(hào)加文件標(biāo)識(shí)為索引將每一個(gè) 源文件的文件處理狀態(tài)以及該源文件的處理時(shí)間以數(shù)據(jù)表格的形式存儲(chǔ)于內(nèi)存數(shù)據(jù)庫中。3.如權(quán)利要求2所述的基于內(nèi)存數(shù)據(jù)庫和Hbase大數(shù)據(jù)存取的方法,其特征在于,所述 步驟S3具體包括:為每一個(gè)源文件的每一個(gè)處理步驟后的文件設(shè)計(jì)合理的Rowkey,以Rowkey為索引將文 件數(shù)據(jù)以數(shù)據(jù)表格的形式存儲(chǔ)于Hbase中,其中,以進(jìn)程序號(hào)加文件標(biāo)識(shí)作為Rowkey。4.如權(quán)利要求3所述的基于內(nèi)存數(shù)據(jù)庫和Hbase大數(shù)據(jù)存取的方法,其特征在于,根據(jù) 每一個(gè)源文件中的數(shù)據(jù)量按照第一預(yù)定時(shí)間間隔建立對(duì)應(yīng)的數(shù)據(jù)表格,并存儲(chǔ)于相應(yīng)的內(nèi) 存數(shù)據(jù)庫或Hbase中。5.如權(quán)利要求4所述的基于內(nèi)存數(shù)據(jù)庫和Hbase大數(shù)據(jù)存取的方法,其特征在于,按照 第二預(yù)定時(shí)間間隔定期清理相應(yīng)的數(shù)據(jù)表格。6.如權(quán)利要求1-5任一項(xiàng)所述的基于內(nèi)存數(shù)據(jù)庫和Hbase大數(shù)據(jù)存取的方法,其特征在 于,當(dāng)出現(xiàn)異常宕機(jī)或者磁盤故障重啟時(shí),從內(nèi)存數(shù)據(jù)庫中讀取每一個(gè)源文件的文件處理 狀態(tài),根據(jù)文件處理狀態(tài)對(duì)文件數(shù)據(jù)執(zhí)行異常宕機(jī)或者磁盤故障后的處理步驟。7.—種基于內(nèi)存數(shù)據(jù)庫和Hbase存取大數(shù)據(jù)的系統(tǒng),其特征在于,包括:文件讀取模塊,用于讀取多個(gè)待處理的源文件;任務(wù)處理模塊,用于對(duì)每一個(gè)所述源文件進(jìn)行任務(wù)處理,其中,一個(gè)任務(wù)處理包括多個(gè) 處理步驟;第一存儲(chǔ)模塊,用于當(dāng)每一個(gè)源文件進(jìn)行了每一個(gè)處理步驟后,以第一預(yù)設(shè)方式將每 一個(gè)源文件的文件處理狀態(tài)存儲(chǔ)于內(nèi)存數(shù)據(jù)庫中;第二存儲(chǔ)模塊,用于將每一個(gè)源文件的每一個(gè)處理步驟后的文件數(shù)據(jù)以第二預(yù)設(shè)方式 存儲(chǔ)于Hbase中。8.如權(quán)利要求7所述的基于內(nèi)存數(shù)據(jù)庫和Hbase存取大數(shù)據(jù)的系統(tǒng),其特征在于,還包 括:配置模塊,用于為每一個(gè)任務(wù)處理配置一個(gè)進(jìn)程序號(hào);所述第一存儲(chǔ)模塊具體用于:對(duì)每一個(gè)源文件進(jìn)行了每一個(gè)處理步驟之后,以進(jìn)程序號(hào)加文件標(biāo)識(shí)為索引將每一個(gè) 源文件的文件處理狀態(tài)以及該源文件的處理時(shí)間以數(shù)據(jù)表格的形式存儲(chǔ)于內(nèi)存數(shù)據(jù)庫中。9.如權(quán)利要求8所述的基于內(nèi)存數(shù)據(jù)庫和Hbase存取大數(shù)據(jù)的系統(tǒng),其特征在于,所述 第二存儲(chǔ)模塊具體用于:為每一個(gè)源文件的每一個(gè)處理步驟后的文件設(shè)計(jì)合理的Rowkey,以Rowkey為索引將文件數(shù)據(jù)以數(shù)據(jù)表格的形式存儲(chǔ)于Hbase中,其中,以進(jìn)程序號(hào)加文件標(biāo)識(shí)作為Rowkey。10.如權(quán)利要求9所述的基于內(nèi)存數(shù)據(jù)庫和Hbase存取大數(shù)據(jù)的系統(tǒng),其特征在于,還包 括:表格建立模塊,用于根據(jù)每一個(gè)源文件中的數(shù)據(jù)量按照第一預(yù)定時(shí)間間隔建立對(duì)應(yīng)的 數(shù)據(jù)表格,并存儲(chǔ)于相應(yīng)的內(nèi)存數(shù)據(jù)庫或Hbase中;表格清理模塊,用于按照第二預(yù)定時(shí)間間隔定期清理相應(yīng)的數(shù)據(jù)表格。
【文檔編號(hào)】G06F17/30GK105956106SQ201610289753
【公開日】2016年9月21日
【申請日】2016年5月4日
【發(fā)明人】李曉靜
【申請人】北京思特奇信息技術(shù)股份有限公司