一種應(yīng)用于hbase數(shù)據(jù)庫的數(shù)據(jù)寫入方法及系統(tǒng)的制作方法
【專利摘要】本發(fā)明提供了一種應(yīng)用于HBASE數(shù)據(jù)庫的數(shù)據(jù)寫入方法及系統(tǒng);所述方法包括:當檢測到需要對第一分區(qū)的緩存Memstore進行緩存寫入磁盤Flush操作時,查找數(shù)據(jù)量小于預(yù)定閾值的Memstore數(shù)據(jù);將查找到的Memstore數(shù)據(jù)寫入固態(tài)硬盤上與所述第一分區(qū)對應(yīng)的分區(qū)緩存中,形成磁盤文件;定期對所述固態(tài)硬盤上的所述磁盤文件進行壓縮;當檢測到所述第一分區(qū)空閑時,將所述固態(tài)硬盤上相應(yīng)的分區(qū)緩存中的所述磁盤文件轉(zhuǎn)移到所述第一分區(qū)中。本發(fā)明能夠提高HBASE數(shù)據(jù)庫的寫入效率。
【專利說明】一種應(yīng)用于HBASE數(shù)據(jù)庫的數(shù)據(jù)寫入方法及系統(tǒng)
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及數(shù)據(jù)處理領(lǐng)域,尤其涉及一種應(yīng)用于HBASE數(shù)據(jù)庫的數(shù)據(jù)寫入方法及數(shù)據(jù)庫系統(tǒng)。
【背景技術(shù)】
[0002]HBASE是基于HADOOP (—種分布式系統(tǒng)基礎(chǔ)架構(gòu))分布式存儲系統(tǒng)HDFS建立起的大數(shù)據(jù)存儲系統(tǒng),其主要特點是采用稀疏的多維映射表形式進行存儲。對于TB級以上的大數(shù)據(jù),較傳統(tǒng)的關(guān)系型數(shù)據(jù)庫,在查詢和分析效率上有很大的提升。HBASE體系中兩個重要組成部分是Region(分區(qū))和RegionServer(分區(qū)服務(wù)器)。其中Region是HBASE中一張表格HTABLE的邏輯單元,即一張HTABLE表按照rowkey (行標識)的順序劃分成多個Region,分別由不同的RegionServer進行管理。RegionServer維護其下管理的Regions,并處理對這些Region的10(輸入輸出)請求。具體邏輯關(guān)系如圖1所示,分布式服務(wù)框架Zookeeper及其連接的Master (主節(jié)點)和Client (從節(jié)點)通過RegionServer Cluster (分區(qū)服務(wù)器族)對HDFS中的文件HFile進行訪問;所述RegionServer Cluster中的各RegionServer均包含一個Hlog對象,每個RegionServer管理不同的Region (內(nèi)部結(jié)構(gòu)將在后文介紹)。不同RegionServer下的不同Region組成HTABLE表。HBASE數(shù)據(jù)庫中包含多張HTABLE表。
[0003]如圖2所示,Region內(nèi)部由一個或多個Store (存儲單元)組成,每個family (列族)對應(yīng)一個Store。每個Store又由一個Memstore (緩存)和O至多個Storef ile (磁盤)組成。Storefile以HFile的格式保存在HADOOP分布式存儲系統(tǒng)HDFS上。Memstore位于內(nèi)存當中。
[0004]HBASE表米用稀疏的表結(jié)構(gòu),其組成方式如表一所不:
[0005]表一、HTABLE表結(jié)構(gòu)
[0006]
【權(quán)利要求】
1.一種應(yīng)用于HBASE數(shù)據(jù)庫的數(shù)據(jù)寫入方法,包括: 當檢測到需要對第一分區(qū)的緩存Memstore進行緩存寫入磁盤Flush操作時,查找數(shù)據(jù)量小于預(yù)定閾值的Memstore數(shù)據(jù);將查找到的Memstore數(shù)據(jù)寫入固態(tài)硬盤上與所述第一分區(qū)對應(yīng)的分區(qū)緩存中,形成磁盤文件; 定期對所述固態(tài)硬盤上的所述磁盤文件進行壓縮;當檢測到所述第一分區(qū)空閑時,將所述固態(tài)硬盤上相應(yīng)的分區(qū)緩存中的所述磁盤文件轉(zhuǎn)移到所述第一分區(qū)中。
2.如權(quán)利要求1所述的方法,其特征在于: 所述預(yù)定閾值為Memstore-size的1/3,其中Memstore-size為所述磁盤文件的最大值。
3.如權(quán)利要求1所述的方法,其特征在于,還包括: 當檢測到所述第一分區(qū)的內(nèi)存大小超過上限引發(fā)對HBASE的阻塞寫入操作時,將所述第一分區(qū)的Flush隊列中的Memstore數(shù)據(jù)寫入所述固態(tài)硬盤上對應(yīng)于所述第一分區(qū)的分區(qū)緩存中,形成磁盤文件。
4.如權(quán)利要求1到3中任一項所述的方法,其特征在于,還包括: 分別根據(jù)各分區(qū)包含的行標識設(shè)置該分區(qū)在所述固態(tài)硬盤中所對應(yīng)的分區(qū)緩存的起始行標識Startkey和結(jié)束行標識Stopkey,其中Stopkey大于Startkey ; 所述將查找到的Memstore數(shù)據(jù)寫入固態(tài)硬盤上所述第一分區(qū)對應(yīng)的分區(qū)緩存中,形成磁盤文件的步驟包括:` 當向所述固態(tài)硬盤寫入Memstore數(shù)據(jù)時,對所寫入的Memstore數(shù)據(jù)按照行標識進行排序,并獲取所寫入的Memstore數(shù)據(jù)中行標識的最大值和最小值; 查找所述固態(tài)硬盤中是否存在Startkey小于所述行標識的最小值且Stopkey大于所述行標識的最大值的分區(qū)緩存; 如果存在,則確定所查找到的所述固態(tài)硬盤中的分區(qū)緩存為所述第一分區(qū)對應(yīng)的分區(qū)緩存; 如果不存在,則將所寫入的Memstore數(shù)據(jù)的所有行標識分別和所述固態(tài)硬盤中各分區(qū)緩存包含的行標識進行比較,確定相同行標識個數(shù)最多的分區(qū)緩存作為所述第一分區(qū)對應(yīng)的分區(qū)緩存;根據(jù)所寫入的Memstore數(shù)據(jù)的行標識更新所確定的分區(qū)緩存的Startkey和 Stopkey ; 將按照行標識排序后的Memstore數(shù)據(jù)寫入所確定的分區(qū)緩存,形成磁盤文件。
5.如權(quán)利要求4所述的方法,其特征在于,所述對固態(tài)硬盤上的磁盤文件進行壓縮的步驟包括: 21、在所述固態(tài)硬盤上的所述磁盤文件中,選出相鄰且文件大小之和最小的兩個磁盤文件; 22、合并選出的兩個磁盤文件,返回步驟21。
6.一種應(yīng)用于HBASE數(shù)據(jù)庫的數(shù)據(jù)寫入系統(tǒng),其特征在于,包括: 緩存寫入磁盤控制模塊,用于當檢測到需要對第一分區(qū)的緩存Memstore進行緩存寫入磁盤Flush操作時,查找數(shù)據(jù)量小于預(yù)定閾值的Memstore數(shù)據(jù);將查找到的Memstore數(shù)據(jù)寫入固態(tài)硬盤上與所述第一分區(qū)對應(yīng)的分區(qū)緩存中,形成磁盤文件; 分區(qū)緩存控制模塊,用于定期對所述固態(tài)硬盤上的所述磁盤文件進行壓縮;當檢測到所述第一分區(qū)空閑時,調(diào)用所述緩存寫入磁盤控制模塊將所述固態(tài)硬盤上相應(yīng)的分區(qū)緩存中的所述磁盤文件轉(zhuǎn)移到所述第一分區(qū)中。
7.如權(quán)利要求6所述的系統(tǒng),其特征在于: 所述預(yù)定閾值為Memstore-size的1/3,其中Memstore-size為所述磁盤文件的最大值。
8.如權(quán)利要求6所述的系統(tǒng),其特征在于: 所述緩存寫入磁盤控制模塊還用于當檢測到所述第一分區(qū)的內(nèi)存大小超過上限引發(fā)對HBASE的阻塞寫入操作時,將所述第一分區(qū)的Flush隊列中的Memstore數(shù)據(jù)寫入所述固態(tài)硬盤上對應(yīng)于所述第一分區(qū)的分區(qū)緩存中,形成磁盤文件。
9.如權(quán)利要求6到8中任一項所述的方法,其特征在于: 所述分區(qū)緩存控制模塊還用于分別根據(jù)各分區(qū)包含的行標識設(shè)置該分區(qū)在所述固態(tài)硬盤中所對應(yīng)的分區(qū)緩存的起始行標識Startkey和結(jié)束行標識Stopkey,其中Stopkey大于Startkey ;還用于當向所述固態(tài)硬盤寫入Memstore數(shù)據(jù)時,對所寫入的Memstore數(shù)據(jù)按照行標識進行排序,并獲取所寫入的Memstore數(shù)據(jù)中行標識的最大值和最小值;查找所述固態(tài)硬盤中是否存在Startkey小于所述行標識的最小值且Stopkey大于所述行標識的最大值的分區(qū)緩存;如果存在,則確定所查找到的所述固態(tài)硬盤中的分區(qū)緩存為所述第一分區(qū)對應(yīng)的分區(qū)緩存;如果不存在,則將所寫入的Memstore數(shù)據(jù)的所有行標識分別和所述固態(tài)硬盤中各分區(qū)緩存包含的行標識進行比較,確定相同行標識個數(shù)最多的分區(qū)緩存作為所述第一分區(qū)對應(yīng)的分區(qū)緩存,根據(jù)所寫入的Memstore數(shù)據(jù)的行標識更新所確定的分區(qū)緩存的 Startkey 和 Stopkey。`
10.如權(quán)利要求9所述的系統(tǒng),其特征在于,所述分區(qū)緩存控制模塊對固態(tài)硬盤上的磁盤文件進行壓縮是指: 所述分區(qū)緩存控制模塊在所述固態(tài)硬盤上的所述磁盤文件中,選出相鄰且文件大小之和最小的兩個磁盤文件;合并選出的兩個磁盤文件;重復(fù)進行選出兩個磁盤文件及合并的操作。
【文檔編號】G06F12/08GK103631940SQ201310664539
【公開日】2014年3月12日 申請日期:2013年12月9日 優(yōu)先權(quán)日:2013年12月9日
【發(fā)明者】李 浩, 羅云彬, 賈卷群, 王志軍 申請人:中國聯(lián)合網(wǎng)絡(luò)通信集團有限公司