一種面向HBase的性能測試系統(tǒng)的制作方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及分布式數(shù)據(jù)庫的測試領(lǐng)域,尤其涉及一種面向HBase的性能測試系統(tǒng)。
【背景技術(shù)】
[0002]隨著信息技術(shù)的飛速發(fā)展,信息時代產(chǎn)生的數(shù)據(jù)日益在膨脹,Hadoop作為解決大數(shù)據(jù)領(lǐng)域的重要技術(shù)手段,目前被廣泛應(yīng)用著。而HBase作為Hadoop技術(shù)棧中的分布式數(shù)據(jù)庫,負(fù)責(zé)大數(shù)據(jù)解決方案中的海量結(jié)構(gòu)化數(shù)據(jù)存儲服務(wù)這一重要職責(zé)。在實際的生產(chǎn)運行過程中,時常伴隨著突發(fā)故障定位、持續(xù)性能優(yōu)化等工作,這些工作需要借助性能測試工具得以開展。市面上已有針對于nosql數(shù)據(jù)庫的通用性能測試工具,如雅虎ycsb、英特爾big data benchmark,這些測試工具依托HBase的公開api,模擬HBase客戶端或應(yīng)用的行為,根據(jù)測試者的需求,來完成簡單通用的并發(fā)讀寫性能測試,并生成測試報告。
[0003]但是現(xiàn)有的性能測試方案存在諸多的不足:
[0004]1、上述市面上已存在的nosql數(shù)據(jù)庫通用測試工具,僅提供了基本、常見、通用的測試方式。用于測試HBase時,只能通過其發(fā)掘常見問題,無法針對HBase的產(chǎn)品特性,提供基于其特性的定制測試,難以支持?jǐn)?shù)據(jù)庫產(chǎn)品的新特性應(yīng)用與調(diào)優(yōu)工作。
[0005]2、上述測試工具在測試方案和測試數(shù)據(jù)制作的定制能力較為薄弱,無法一次執(zhí)行多個測試案例,或?qū)Σ樵?、寫入動作進(jìn)行細(xì)節(jié)定制。
[0006]3、上述測試工具均由國外企業(yè)開發(fā),使用文檔與資料匱乏,難以完全掌握其使用方法和技巧,測試結(jié)果的正確性存在隱患。
[0007]針對目前市場上采用的測試工具的諸多不足,因此需要提出一套新的測試方案。
【發(fā)明內(nèi)容】
[0008]本發(fā)明要解決的技術(shù)問題,在于提供一種針對HBase的可配置測試系統(tǒng),提供了與HBase自身特性相關(guān)聯(lián)的測試方案,促進(jìn)HBase在生產(chǎn)運維階段的性能調(diào)整優(yōu)化工作,相較于其他性能測試工具,更易于使用,便于擴(kuò)展。
[0009]本發(fā)明是這樣實現(xiàn)的:一種面向HBase的性能測試系統(tǒng),包括:
[0010]任務(wù)解析器,導(dǎo)入測試任務(wù)并解析,并將解析好的測試任務(wù)傳遞給任務(wù)組織器,所述測試任務(wù)包括性能測試任務(wù)及并發(fā)測試任務(wù);
[0011 ] 任務(wù)組織器,通過獲取測試任務(wù)創(chuàng)建任務(wù)線程池以及至少一個任務(wù)線程,所述任務(wù)組織器執(zhí)行完一個測試任務(wù)自動執(zhí)行下一個測試任務(wù),直至所有測試任務(wù)執(zhí)行完畢;
[0012]任務(wù)線程池,所述任務(wù)線程池管理任務(wù)線程,負(fù)責(zé)啟動、監(jiān)控所有任務(wù)線程;
[0013]任務(wù)線程,在性能測試工作中任務(wù)線程根據(jù)性能測試任務(wù)中配置的線程數(shù),由任務(wù)組織器創(chuàng)建對應(yīng)數(shù)量的任務(wù)線程,交由任務(wù)線程池管理,每個任務(wù)線程依次執(zhí)行讀取、掃描測試任務(wù);在并發(fā)測試工作中由任務(wù)組織器創(chuàng)建對應(yīng)的請求到任務(wù)線程中,并發(fā)執(zhí)行并發(fā)請求測試任務(wù);每個任務(wù)線程通過HBase適配模塊與HBase數(shù)據(jù)庫交互;
[0014]HBase適配模塊,與HBase數(shù)據(jù)庫進(jìn)行交互;
[0015]日志與測試報告生成器,獲得每個測試任務(wù)的執(zhí)行結(jié)果,將測試報告寫入日志中。
[0016]所述任務(wù)解析器包括:
[0017]配置文件解析器,導(dǎo)入已配置好的性能測試任務(wù)并解析,并將其傳遞給任務(wù)組織器;方案組件解析器,導(dǎo)入已配置好的并發(fā)測試任務(wù)并解析,并將其傳遞給任務(wù)組織器。
[0018]所述性能測試任務(wù)、并發(fā)測試任務(wù)的配置步驟包括:
[0019]分析HBase集群剩余容量與測試所需的數(shù)據(jù)量確定數(shù)據(jù)規(guī)模及測試需求;
[0020]根據(jù)測試目的以及HBase集群的承載能力,確定寫入操作的分布情況以及HFile的數(shù)量,制定每批次導(dǎo)入的kv數(shù)以及是否立即持久化為HFile ;
[0021]建立BloomFilter策略,確定建表方式的配置;
[0022]根據(jù)kerberos的開啟情況,配置安全校驗參數(shù);
[0023]生成配置文件并導(dǎo)入所述配置文件解析器、方案組件解析器。
[0024]其中,如導(dǎo)入單位時間負(fù)載大于HBase集群的承載能力則終止導(dǎo)入,降低批次導(dǎo)入的kv數(shù)并重新執(zhí)行導(dǎo)入工作;若導(dǎo)入異常終止則生成進(jìn)度點,依據(jù)進(jìn)度點實現(xiàn)斷點續(xù)傳。
[0025]其中,所述的導(dǎo)入包括按行導(dǎo)入或按列導(dǎo)入。
[0026]其中,所述數(shù)據(jù)規(guī)模包括:rowkey長度、value長度、kv總數(shù)。
[0027]其中,所述任務(wù)線程順序、同時或亂序啟動任務(wù)線程。
[0028]本發(fā)明的優(yōu)點在于:
[0029]其一、本發(fā)明提供了更為貼近HBase自身特性的測試數(shù)據(jù)導(dǎo)入方案及測試方案,得以支持現(xiàn)階段HBase的一些主要特性;針對HFile數(shù)量控制需求,市面上已有的測試工具幾乎無法在測試數(shù)據(jù)導(dǎo)入階段加以控制,本發(fā)明通過定制導(dǎo)入批次數(shù)據(jù)的數(shù)據(jù)量、持久化時機(jī)的能力,實現(xiàn)了較為精確的HFile總量控制,與HFile數(shù)量有關(guān)的特性測試將變得更加方便;本發(fā)明支持對HBase的方向掃描測試、BloomFilter策略性能測試、單位時間壓力流量測試、請求響應(yīng)順序測試,這些功能是目前市面上已有的測試工具所不具備的。
[0030]其二、本發(fā)明采用配置好的測試任務(wù),實現(xiàn)了測試數(shù)據(jù)結(jié)構(gòu)的定制、總體數(shù)據(jù)規(guī)模較為精確的控制;本發(fā)明可一次執(zhí)行多個測試任務(wù),降低了測試過程對測試員的依賴。
[0031]其三、具備詳實的使用文檔與資料,以具備更多的特性測試功能,操作簡易。
【附圖說明】
[0032]圖1為本發(fā)明的面向HBase的性能測試系統(tǒng)的結(jié)構(gòu)框圖。
[0033]標(biāo)號說明:
[0034]配置文件解析器-001方案組件解析器-002任務(wù)組織器-003
[0035]任務(wù)線程池-004 HBase適配模塊-005 HBase數(shù)據(jù)庫-006
[0036]日志與測試報告生成器-007
【具體實施方式】
[0037]為詳細(xì)說明本發(fā)明的技術(shù)內(nèi)容、構(gòu)造特征、所實現(xiàn)目的及效果,以下結(jié)合實施方式并配合附圖詳予說明。
[0038]HBase是一個分布式、面向列的開源數(shù)據(jù)庫,它不同于一般的關(guān)系型數(shù)據(jù)庫,它是一個適合于結(jié)構(gòu)化/非結(jié)構(gòu)化數(shù)據(jù)存儲的數(shù)據(jù)庫,基于列而非基于行,適宜處理海量數(shù)據(jù),大批量操作響應(yīng)速度很快。
[0039]HFile是HBase中的KeyValue數(shù)據(jù)的存儲格式,HFile是Hadoop的二進(jìn)制格式文件,實際上StoreFile做了輕量級包裝,即StoreFile底層就是HFile。HFile文件是不定長的,長度固定的只有其中的兩塊。HFile里面的每個KeyValue對就是簡單的byte數(shù)組,但是這個byte數(shù)組里面包含了很多項,并且有固定的結(jié)構(gòu),其結(jié)構(gòu)具體如下:開始是兩個固定長度的數(shù)值,分別表示key的長度和Value的長度,緊接著是Key,開始是固定長度的數(shù)值,表示RowKey的長度,緊接著是RowKey,然后是固定長度的數(shù)值,表示Family的長度,然后是Family,接著是Qualifier,然后是兩個固定長度的數(shù)值,表示Time Stamp和KeyType。Value部分沒有這么復(fù)雜的結(jié)構(gòu),就是純粹的二進(jìn)制數(shù)據(jù)。
[0040]以下結(jié)合附圖1說明本發(fā)明提供一種面向HBase的性能測試系統(tǒng),包括:
[0041]任務(wù)解析器,導(dǎo)入已配置的測試任務(wù)并解析,并將解析好的測試任務(wù)傳遞給任務(wù)組織器003,所述測試任務(wù)包括性能測試任務(wù)及并發(fā)測試任務(wù);所述測試任務(wù)依據(jù)測試需求由人工進(jìn)行編制,并將其導(dǎo)入所述的任務(wù)解析器進(jìn)行測試任務(wù)的解析,所述解析的目的是將人工編制的測試作業(yè)配置文件如XML文件交由配置文件解析器001來讀取,獲取測試工作所需的配置參數(shù),將此參數(shù)交給任務(wù)組織器003,由任務(wù)組織器003依據(jù)此參數(shù)配置來組織測試作業(yè)。所述的導(dǎo)入可采用常規(guī)的有線或者無線方式實現(xiàn)數(shù)據(jù)的傳輸,如可采用遠(yuǎn)程或者近程導(dǎo)入,導(dǎo)入可采用按行導(dǎo)入的方式或者按列導(dǎo)入的方式。在所述測試任務(wù)進(jìn)行導(dǎo)入的過程中,若導(dǎo)入單位時間負(fù)載大于HBase集群的承載能力則終止導(dǎo)入,降低批次導(dǎo)入的KV數(shù)并重新執(zhí)行導(dǎo)入工作;若導(dǎo)入異常終止則生成進(jìn)度點,依據(jù)進(jìn)度點實現(xiàn)斷點續(xù)傳。所述異常終止的情況包括集群網(wǎng)絡(luò)故障、硬件故障、人為關(guān)閉Hdfs或人為關(guān)閉HBase服務(wù)等情況。
[0042]任務(wù)組織器003,通過獲取測試任務(wù)創(chuàng)建任務(wù)線程池004以及至少一個任務(wù)線程,所述任務(wù)組織器003執(zhí)行完一個測試任務(wù)自動執(zhí)行下一個測試任務(wù),直至所有測試任務(wù)執(zhí)行完畢;在性能測試任務(wù)中,任務(wù)組織器003依據(jù)所配置的測試任務(wù),制定讀取/掃描測試操作的目標(biāo)表、CoIumnFamiIy、Column,確認(rèn)讀取/掃描的次數(shù)、起止rowkey、或起始rowkey與掃描行數(shù),制定測試的線程數(shù)。在并發(fā)測試任務(wù)中,根據(jù)測試任務(wù)所定制的需求,確定各類請求的種類,如:讀取、掃描、寫入或批量寫入,確定請求細(xì)節(jié)、請求順序、執(zhí)行順序,所述的執(zhí)行順序可以為順序執(zhí)行、同時執(zhí)行、亂序執(zhí)行任務(wù)線程。
[0043]任務(wù)線程池004,所述任務(wù)線程池004管理任務(wù)線程,負(fù)責(zé)啟動、監(jiān)控所有任務(wù)線程;
[0044]任務(wù)線程,在性能測試工作中任務(wù)線程根據(jù)性能測試任務(wù)中配置的線程數(shù),由任務(wù)組織器003創(chuàng)建對應(yīng)數(shù)量的任務(wù)線程,交由任務(wù)線程池004管理,每個任務(wù)線程依據(jù)測試任務(wù)依次執(zhí)行讀取、掃描測試任務(wù);在并發(fā)測試工作中由任務(wù)組織器003創(chuàng)建對應(yīng)的請求到任務(wù)線程中,并發(fā)執(zhí)行并發(fā)請求測試任務(wù);每個任務(wù)線程通過HBase適配模塊005與HBase數(shù)據(jù)庫006交互;所述任務(wù)線程執(zhí)行任務(wù)時各個任務(wù)線程可亂序、順序或者同時執(zhí)行任務(wù)。在性能測試任務(wù)中,如若用戶需要測試BloomFilter的三個策略各自的性能,那么性能測試作業(yè)配置將呈現(xiàn)出依次執(zhí)行的三次掃描測試作業(yè)的配置方法;而當(dāng)用戶需要收集單位時間內(nèi)N個任務(wù)線程同時發(fā)起掃描時的HBase承載能力、數(shù)據(jù)吞吐量、每秒處理的操作數(shù),那么測試作業(yè)配置將采用并發(fā)執(zhí)行測試任務(wù)的方式,呈現(xiàn)出同一時間多個任務(wù)線程同時執(zhí)行掃描作業(yè)的配置方法。
[0045]待所有任務(wù)線程完成任務(wù),則將所有子任務(wù)執(zhí)行結(jié)果提交給測試報告生成器。如圖所示,所述任務(wù)線程控制著任務(wù)線程1、任務(wù)線程2、任務(wù)線程3、任務(wù)線程4、任務(wù)線程5。
[0046]HBase適配模塊005,與HBase數(shù)據(jù)庫006進(jìn)行交互;所述HBase適配模塊005使用HBaseJava API與HBase數(shù)據(jù)庫006進(jìn)行交互,對任務(wù)線程提供查詢、掃描、寫入、建表、持久化等服務(wù),依據(jù)任務(wù)線程的請求執(zhí)行工作。
[0047]日志與測試報告生成