HBase熱點(diǎn)消除方法及系統(tǒng)的制作方法【
技術(shù)領(lǐng)域:
】[0001]本發(fā)明涉及互聯(lián)網(wǎng)大數(shù)據(jù)領(lǐng)域,尤其涉及一種HBase(—種分布式的、面向列的開源數(shù)據(jù)庫(kù))熱點(diǎn)消除方法及系統(tǒng)?!?br>背景技術(shù):
】[0002]HBase表中包括有多個(gè)Reg1n,每個(gè)Reg1n中都存儲(chǔ)一定的數(shù)據(jù)。集群中的Reg1nServer可能分配到一個(gè)或多個(gè)Reg1n。由于每個(gè)Reg1n上的數(shù)據(jù)請(qǐng)求量的不同,可能會(huì)出現(xiàn)一個(gè)或多個(gè)Reg1n熱點(diǎn),所謂Reg1n熱點(diǎn)是指請(qǐng)求量超過一第一請(qǐng)求量閾值的Reg1n。這些Reg1n熱點(diǎn)的出現(xiàn),會(huì)使得數(shù)據(jù)的請(qǐng)求時(shí)間變長(zhǎng),大大影響整個(gè)集群的穩(wěn)定性和可用性,嚴(yán)重時(shí)甚至可能造成系統(tǒng)癱瘓。[0003]目前,HBase并沒有Reg1n熱點(diǎn)發(fā)現(xiàn)及自動(dòng)消除工具,只能利用自帶的split(Java中一種語句)方法將指定的Reg1n進(jìn)行拆分,但是這種方法需要技術(shù)人員手動(dòng)地設(shè)定要拆分的Reg1n,十分麻煩,效率也不高?!?br/>發(fā)明內(nèi)容】[0004]本發(fā)明要解決的技術(shù)問題是如何克服現(xiàn)有技術(shù)中難以消除HBase中的熱點(diǎn)的缺陷,提供一種能夠自動(dòng)消除熱點(diǎn)的HBase熱點(diǎn)消除方法及系統(tǒng)。[0005]本發(fā)明是通過下述技術(shù)方案解決上述技術(shù)問題的:[0006]本發(fā)明提供一種HBase熱點(diǎn)消除方法,其特點(diǎn)是,包括:[0007]S1、設(shè)定集群的HBase表中的每一Reg1n的被交換次數(shù)的初始值為O;[0008]S2、檢測(cè)集群,將集群中的Reg1n熱點(diǎn)加入至一熱點(diǎn)機(jī)器列表,Reg1n熱點(diǎn)為請(qǐng)求量超過一第一請(qǐng)求量閾值的Reg1n;[0009]S3、判斷該熱點(diǎn)機(jī)器列表包括的Reg1n熱點(diǎn)的數(shù)量是否為0,若是,則結(jié)束流程,若否,則執(zhí)行S4;[0010]S4、從該熱點(diǎn)機(jī)器列表中選擇一個(gè)Reg1n熱點(diǎn)作為待消除Reg1n熱點(diǎn);[0011]S5、判斷該待消除Reg1n熱點(diǎn)的被交換次數(shù)是否超過一交換閾值,若超過,則執(zhí)行S6,若未超過,則執(zhí)行S7;[0012]S6、將該待消除Reg1n熱點(diǎn)拆分成兩個(gè)Reg1n,然后執(zhí)行S8;[0013]S7、從該集群中選擇一不具有Reg1n熱點(diǎn)的Reg1nServer,并將該待消除Reg1n熱點(diǎn)與被選擇的Reg1nServer的Reg1n交換,并更新該待消除Reg1n熱點(diǎn)的被交換次數(shù);[0014]S8、將該待消除Regi0n熱點(diǎn)從該熱點(diǎn)機(jī)器列表中移除,然后執(zhí)行S3。[0015]其中,步驟S2可以使用統(tǒng)計(jì)學(xué)的方法對(duì)集群的HBase表進(jìn)行統(tǒng)計(jì)分析,獲得數(shù)據(jù)分布及方差,根據(jù)集群的平均負(fù)載確定該第一請(qǐng)求量閾值,進(jìn)而確定集群中的Reg1n熱點(diǎn)。通過步驟S7,Reg1n熱點(diǎn)被交換到了其它的Reg1nServer上。由此,便將負(fù)載從一臺(tái)機(jī)器,轉(zhuǎn)移到了另一臺(tái)機(jī)器。,而有一些Reg1n熱點(diǎn)因?yàn)樽陨碚?qǐng)求量過大,即使經(jīng)過了多次交換,不能成為非Reg1n熱點(diǎn),此時(shí),只能對(duì)這類Reg1n熱點(diǎn)進(jìn)行拆分,才能轉(zhuǎn)換成非Reg1n熱點(diǎn)。該HBase熱點(diǎn)消除方法不僅能夠自動(dòng)檢測(cè)Reg1n熱點(diǎn),還能自動(dòng)消除熱點(diǎn),縮短數(shù)據(jù)的請(qǐng)求時(shí)間,具有快速、高效地優(yōu)點(diǎn)。[0016]較佳地,S1還包括:[0017]S11、設(shè)定集群的被檢測(cè)次數(shù)的初始值為O;[0018]S12、判斷集群的被檢測(cè)次數(shù)是否達(dá)到一檢測(cè)閾值,若達(dá)到,則結(jié)束流程,若未達(dá)到,貝IJ執(zhí)行S2;[0019]S2還包括更新該被檢測(cè)次數(shù);[0020]S3替換為:S3’、判斷該熱點(diǎn)機(jī)器列表包括的Reg1n熱點(diǎn)的數(shù)量是否為0,若是,則執(zhí)行S12,若否,則執(zhí)行s4。[0021]其中,若已經(jīng)達(dá)到了被檢測(cè)次數(shù),則不允許再操作集群,要限定這個(gè)工具的操作時(shí)間,將其他的時(shí)間返回給HBase自身,讓HBase自身的一些機(jī)制來進(jìn)行處理,不需要再持續(xù)地進(jìn)行Reg1n熱點(diǎn)的檢測(cè)與消除。所述被檢測(cè)次數(shù)限定了流程的結(jié)束時(shí)間點(diǎn),防止HBase熱點(diǎn)消除方法不斷地運(yùn)行,以給整個(gè)系統(tǒng)帶來負(fù)擔(dān)。[0022]較佳地,S7還包括:[0023]S71、從該集群中請(qǐng)求量最小的Reg1nServer中選取請(qǐng)求量最小的Reg1n,并將該待消除Reg1n熱點(diǎn)與被選取的Reg1n交換。[0024]較佳地,S7還包括:判斷該集群中的不具有Reg1n熱點(diǎn)的Reg1nServer中是否包括與該待消除Reg1n熱點(diǎn)同一table的Reg1n,若是,則執(zhí)行S72,若否,則執(zhí)行S71;[0025]S72、將該待消除Reg1n熱點(diǎn)與該同一table的Reg1n交換。[0026]較佳地,S72包括:從與該待消除Reg1n熱點(diǎn)同一table的Reg1n中選取訪問量最低的Reg1n,將該待消除Reg1n熱點(diǎn)與選取的訪問量最低的Reg1n交換。[0027]較佳地,32還包括將該熱點(diǎn)機(jī)器列表中的Reg1n熱點(diǎn)按照訪問量由高到低排序;S4還包括從該熱點(diǎn)機(jī)器列表中選擇訪問量最高的Reg1n熱點(diǎn)作為待消除Reg1n熱點(diǎn)。[0028]較佳地,還包括:[0029]T1、獲取集群的HBase表的Reg1nServer熱點(diǎn),Reg1nServer熱點(diǎn)為請(qǐng)求量超過一第二請(qǐng)求量閾值的Reg1nServer;[0030]T2、計(jì)算該Reg1nServer熱點(diǎn)的訪問量最高的N個(gè)Reg1n的方差,N為正整數(shù);[0031]T3、判斷該方差是否小于一方差閾值,若是,則執(zhí)行T4,若否,則執(zhí)行T5;[0032]T4、從該集群中選擇一請(qǐng)求量未超過該第二請(qǐng)求量閾值的Reg1nServer,并將該Reg1nServer熱點(diǎn)的訪問量最高的M1AReg1n與被選擇的Reg1nServer的Reg1n交換,M1為小于或等于N的正整數(shù);[0033]T5、將訪問量最高的M2AReg1n作為Reg1n熱點(diǎn)加入至該熱點(diǎn)機(jī)器列表,然后執(zhí)行S3,M2為小于或等于N的正整數(shù)。[0034]其中,步驟T1可以使用統(tǒng)計(jì)學(xué)的方法對(duì)集群的HBase表進(jìn)行統(tǒng)計(jì)分析,獲得數(shù)據(jù)分布及方差,根據(jù)集群的平均負(fù)載確定該第二請(qǐng)求量閾值,進(jìn)而確定集群中的Reg1nServer熱點(diǎn)。考慮到在HBase中,有一些Reg1nServer雖然不包含Reg1n熱點(diǎn),但是其包含的Reg1n的負(fù)載總和過大,也會(huì)造成Reg1nServer過熱,成為Reg1nServer熱點(diǎn)。上述步驟中,若方差小于該方差閾值,則說明Reg1nServer熱點(diǎn)上的Reg1n的請(qǐng)求量比較平均,通過將請(qǐng)求量最高的Reg1n交換到其它的Reg1nServer上,改變集群上Reg1n的分布,就能使得Reg1nServer熱點(diǎn)轉(zhuǎn)換成為非Reg1nServer熱點(diǎn);若方差不小于該方差閾值,則說明Reg1nServer熱點(diǎn)上的Reg1n的請(qǐng)求量十分不平均,有個(gè)別Reg1n的請(qǐng)求量可能較大,那么就可以將這類Reg1n作為Reg1n熱點(diǎn)來進(jìn)行處理。該HBase熱點(diǎn)消除方法不僅能夠自動(dòng)檢測(cè)Reg1nServer熱點(diǎn),還能自動(dòng)消除熱點(diǎn),并且使得整個(gè)HBase的熱點(diǎn)檢測(cè)更全面。[0035]本發(fā)明還提供一種HBase熱點(diǎn)消除系統(tǒng),其特點(diǎn)是,包括:[0036]—設(shè)定單元,用于設(shè)定集群的HBase表中的每一Reg1n的被交換次數(shù)的初始值為O;[0037]一檢測(cè)單元,用于檢測(cè)集群,將集群中的Reg1n熱點(diǎn)加入至一熱點(diǎn)機(jī)器列表,Reg1n熱點(diǎn)為請(qǐng)求量超過一第一請(qǐng)求量閾值的Reg1n;[0038]—第一判斷單元,用于判斷該熱點(diǎn)機(jī)器列表包括的Reg1n熱點(diǎn)的數(shù)量是否為0,若是,則結(jié)束調(diào)用,若否,則調(diào)用一選擇單元;[0039]該選擇單元,用于從該熱點(diǎn)機(jī)器列表中選擇一個(gè)Reg1n熱點(diǎn)作為待消除Reg1n執(zhí)占.^w,[0040]—第二判斷單元,用于判斷該待消除Reg1n熱點(diǎn)的被交換次數(shù)是否超過一交換閾值,若超過,則調(diào)用一拆分單元,若未超過,則調(diào)用一交換單元;[0041]該拆分單元,用于將該待消除Reg1n熱點(diǎn)拆分成兩個(gè)Reg1n,然后調(diào)用一移除單元;[0042]該交換單元,用于從該集群中選擇一不具有Reg1n熱點(diǎn)的Reg1nServer,并將該待消除Reg1n熱點(diǎn)與被選當(dāng)前第1頁1 2 3 4