一種分布式系統(tǒng)的系統(tǒng)測試方法及裝置制造方法
【專利摘要】本發(fā)明提供了一種分布式系統(tǒng)的系統(tǒng)測試方法及裝置,其中所述方法包括:A.對線上的分布式系統(tǒng)進行監(jiān)控,以獲取在所述線上的分布式系統(tǒng)上執(zhí)行目標作業(yè)所依賴的第一標識文件;B.根據(jù)線下的分布式系統(tǒng)的集群規(guī)模對所述第一標識文件進行修改,以獲取在所述線下的分布式系統(tǒng)上執(zhí)行所述目標作業(yè)所依賴的第二標識文件,以及,根據(jù)所述第二標識文件獲取在所述線下的分布式系統(tǒng)上執(zhí)行所述目標作業(yè)所依賴的輸入數(shù)據(jù);C.在所述線下的分布式系統(tǒng)上根據(jù)所述第二標識文件及獲取的輸入數(shù)據(jù)執(zhí)行所述目標作業(yè),以對所述線下的分布式系統(tǒng)進行測試。通過上述方式,本發(fā)明能夠增加系統(tǒng)測試的有效性。
【專利說明】一種分布式系統(tǒng)的系統(tǒng)測試方法及裝置
【【技術(shù)領(lǐng)域】】
[0001]本發(fā)明涉及系統(tǒng)測試【技術(shù)領(lǐng)域】,特別涉及一種分布式系統(tǒng)的系統(tǒng)測試方法及裝置。
【【背景技術(shù)】】
[0002]系統(tǒng)測試是針對整個系統(tǒng)進行的測試,目的是驗證系統(tǒng)是否滿足了需求規(guī)格的定義,是系統(tǒng)發(fā)布前進行的非常重要的環(huán)節(jié)。
[0003]在系統(tǒng)測試中,測試用例包括用戶怎樣使用系統(tǒng)和在什么環(huán)境下使用系統(tǒng)兩方面,在現(xiàn)有技術(shù)中,測試用例是通過人工的方式得到的,例如測試人員對用戶怎樣使用系統(tǒng)和在什么環(huán)境下使用系統(tǒng)進行調(diào)查,并設(shè)計相應(yīng)的測試用例,由于要得知用戶怎樣使用系統(tǒng)和在什么環(huán)境下使用系統(tǒng)是非常困難的,因此,現(xiàn)有技術(shù)的這種方法得到的測試用例的質(zhì)量不高,數(shù)量也有限,從而影響了系統(tǒng)測試的有效性。
【
【發(fā)明內(nèi)容】
】
[0004]本發(fā)明所要解決的技術(shù)問題是提供一種分布式系統(tǒng)的系統(tǒng)測試方法及裝置,以增加系統(tǒng)測試的有效性。
[0005]本發(fā)明 為解決技術(shù)問題而采用的技術(shù)方案是提供一種分布式系統(tǒng)的系統(tǒng)測試方法,包括:A.對線上的分布式系統(tǒng)進行監(jiān)控,以獲取在所述線上的分布式系統(tǒng)上執(zhí)行目標作業(yè)所依賴的第一標識文件;B.根據(jù)線下的分布式系統(tǒng)的集群規(guī)模對所述第一標識文件進行修改,以獲取在所述線下的分布式系統(tǒng)上執(zhí)行所述目標作業(yè)所依賴的第二標識文件,以及,根據(jù)所述第二標識文件獲取在所述線下的分布式系統(tǒng)上執(zhí)行所述目標作業(yè)所依賴的輸入數(shù)據(jù);C.在所述線下的分布式系統(tǒng)上根據(jù)所述第二標識文件及獲取的輸入數(shù)據(jù)執(zhí)行所述目標作業(yè),以對所述線下的分布式系統(tǒng)進行測試。
[0006]根據(jù)本發(fā)明之一優(yōu)選實施例,所述步驟A包括:A1.從所述線上的分布式系統(tǒng)中提取當前作業(yè)所依賴的當前標識文件;A2.對所述線上的分布式系統(tǒng)進行輪詢,以獲取當前作業(yè)的狀態(tài);A3.當所述狀態(tài)為執(zhí)行失敗時,將所述步驟Al中提取的當前標識文件丟棄,否則將所述步驟Al中提取的當前標識文件作為所述第一標識文件。
[0007]根據(jù)本發(fā)明之一優(yōu)選實施例,所述分布式系統(tǒng)為Hadoop系統(tǒng)。
[0008]根據(jù)本發(fā)明之一優(yōu)選實施例,所述第一標識文件及所述第二標識文件均包含作業(yè)程序文件、作業(yè)分塊文件及作業(yè)配置文件。
[0009]根據(jù)本發(fā)明之一優(yōu)選實施例,所述步驟B包括:根據(jù)預(yù)設(shè)的配置修改條件對所述第一標識文件包含的作業(yè)配置文件中的配置項進行修改,以得到所述第二標識文件包含的作業(yè)配置文件,其中所述配置修改條件由所述線下系統(tǒng)的集群規(guī)模決定;從在所述線上的分布式系統(tǒng)上執(zhí)行所述目標作業(yè)所依賴的輸入數(shù)據(jù)中復制指定規(guī)模的輸入數(shù)據(jù)到所述線下的分布式系統(tǒng)中,以得到在所述線下的分布式系統(tǒng)上執(zhí)行所述目標作業(yè)所依賴的輸入數(shù)據(jù),其中所述指定規(guī)模是由所述第二標識文件包含的作業(yè)配置文件中的配置項確定的規(guī)模;利用所述第一標識文件包含的作業(yè)分塊文件確定輸入分塊的大小,按照所述大小對復制到所述線下的分布式系統(tǒng)中的輸入數(shù)據(jù)進行切分,并將切分結(jié)果覆蓋至所述第一標識文件包含的作業(yè)分塊文件中,以得到所述第二標識文件包含的作業(yè)分塊文件,以及,將所述第一標識文件包含的作業(yè)程序文件作為所述第二標識文件包含的作業(yè)程序文件。
[0010]本發(fā)明還提供了一種分布式系統(tǒng)的系統(tǒng)測試裝置,包括:監(jiān)控單元,用于對線上的分布式系統(tǒng)進行監(jiān)控,以獲取在所述線上的分布式系統(tǒng)上執(zhí)行目標作業(yè)所依賴的第一標識文件;轉(zhuǎn)換單元,用于根據(jù)所述第一標識文件獲取在線下的分布式系統(tǒng)上執(zhí)行目標作業(yè)所依賴的第二標識文件,以及,根據(jù)所述第二標識文件獲取在所述線下的分布式系統(tǒng)上執(zhí)行所述目標作業(yè)所依賴的輸入數(shù)據(jù);提交單元,用于在所述線下的分布式系統(tǒng)上根據(jù)所述第二標識文件及獲取的輸入數(shù)據(jù)執(zhí)行所述目標作業(yè),以對所述線下系統(tǒng)進行測試。
[0011]根據(jù)本發(fā)明之一優(yōu)選實施例,所述監(jiān)控單元包括:提取單元,用于從所述線上的分布式系統(tǒng)中提取當前作業(yè)所依賴的當前標識文件;輪詢單元,用于對所述線上的分布式系統(tǒng)進行輪詢,以獲取當前作業(yè)的狀態(tài);確定單元,用于當所述狀態(tài)為執(zhí)行失敗時,將所述提取單元提取的當前標識文件丟棄,否則將所述提取單元提取的當前標識文件作為所述第一標識文件。
[0012]根據(jù)本發(fā)明之一優(yōu)選實施例,所述分布式系統(tǒng)為Hadoop系統(tǒng)。
[0013]根據(jù)本發(fā)明之一優(yōu)選實施例,所述第一標識文件及所述第二標識文件均包含作業(yè)程序文件、作業(yè)分塊文件及作業(yè)配置文件。
[0014]根據(jù)本發(fā)明之一優(yōu)選實施例,所述轉(zhuǎn)換單元包括:修改單元,用于根據(jù)預(yù)設(shè)的配置修改條件對所述第一標識文件包含的作業(yè)配置文件中的配置項進行修改,以得到所述第二標識文件包含的作業(yè)配置文件,其中所述配置修改條件由所述線下系統(tǒng)的集群規(guī)模決定;復制單元,用于從在所述線上的分布式系統(tǒng)上執(zhí)行所述目標作業(yè)所依賴的輸入數(shù)據(jù)中復制指定規(guī)模的輸入數(shù)據(jù)到所述線下的分布式系統(tǒng)中,以得到在所述線下的分布式系統(tǒng)上執(zhí)行所述目標作業(yè)所依賴的輸入數(shù)據(jù),其中所述指定規(guī)模是由所述第二標識文件包含的作業(yè)配置文件中的配置項確定的規(guī)模;文件生成單元,用于利用所述第一標識文件包含的作業(yè)分塊文件確定輸入分塊的大小,按照所述大小對復制到所述線下的分布式系統(tǒng)中的輸入數(shù)據(jù)進行切分,并將切分結(jié)果覆蓋至所述第一標識文件包含的作業(yè)分塊文件中,以得到所述第二標識文件包含的作業(yè)分塊文件,以及,將所述第一標識文件包含的作業(yè)程序文件作為所述第二標識文件包含的作業(yè)程序文件。
[0015]由以上技術(shù)方案可以看出,本發(fā)明通過對線上的分布式系統(tǒng)進行監(jiān)控,可以獲取到目標作業(yè)對應(yīng)的第一標識文件,對該標識文件進行修改,可以得到與線下的分布式系統(tǒng)相適應(yīng)的第二標識文件,利用第二標識文件還可以得到與線下的分布式系統(tǒng)相適應(yīng)的的輸入數(shù)據(jù),從而可以在線下的分布式系統(tǒng)上執(zhí)行目標作業(yè),實現(xiàn)對線下的分布式系統(tǒng)進行系統(tǒng)測試的目的。通過這種方式,可以自動將線上用戶對系統(tǒng)的真實使用情況變?yōu)橄到y(tǒng)測試用例,以對線下系統(tǒng)進行測試,這樣,在線下系統(tǒng)的系統(tǒng)測試中,測試用例的數(shù)量和質(zhì)量都得到了提高,大大增加了系統(tǒng)測試的有效性。
【【專利附圖】
【附圖說明】】
[0016] 圖1為本發(fā)明中分布式系統(tǒng)的系統(tǒng)測試方法的實施例的流程示意圖;[0017]圖2為Hadoop系統(tǒng)的結(jié)構(gòu)圖;
[0018]圖3為用戶向Hadoop系統(tǒng)提交作業(yè)時的交互過程示意圖;
[0019]圖4為本發(fā)明中分布式系統(tǒng)的系統(tǒng)測試裝置的實施例的結(jié)構(gòu)示意框圖;
[0020]圖5為本發(fā)明中監(jiān)控單元201的一個實施例的結(jié)構(gòu)示意框圖;
[0021]圖6為本發(fā)明中轉(zhuǎn)換單元202的一個實施例的結(jié)構(gòu)示意框圖。
【【具體實施方式】】
[0022]為了使本發(fā)明的目的、技術(shù)方案和優(yōu)點更加清楚,下面結(jié)合附圖和具體實施例對本發(fā)明進行詳細描述。
[0023]請參考圖1,圖1為本發(fā)明中分布式系統(tǒng)的系統(tǒng)測試方法的實施例的流程示意圖。如圖1所示,該實施例包括:
[0024]步驟SlOl:對線上的分布式系統(tǒng)進行監(jiān)控,以獲取在線上的分布式系統(tǒng)上執(zhí)行目標作業(yè)所依賴的第一標識文件。
[0025]步驟S102:根據(jù)線下的分布式系統(tǒng)的集群規(guī)模對第一標識文件進行修改,以獲取在線下的分布式系統(tǒng)上執(zhí)行目標作業(yè)所依賴的第二標識文件,以及,根據(jù)第二標識文件獲取在線下的分布式系統(tǒng)上執(zhí)行目標作業(yè)所依賴的輸入數(shù)據(jù)。
[0026]步驟S103:在線下的分布式系統(tǒng)上根據(jù)第二標識文件及獲取的輸入數(shù)據(jù)執(zhí)行目標作業(yè),以對線下的分布式系統(tǒng)進行測試。
[0027]本發(fā)明中線上的分布式系統(tǒng)指的是正在線上運行的、向用戶提供服務(wù)的系統(tǒng),線下的分布式系統(tǒng)指的是待測試的系統(tǒng)。第一標識文件指的是在線上的分布式系統(tǒng)中執(zhí)行目標作業(yè)所依賴的標識文件,第二標識文件指的是在線下的分布式系統(tǒng)中執(zhí)行目標作業(yè)所依賴的標識文件。為了更好地理解本發(fā)明,下面先通過Hadoop系統(tǒng)對上述步驟進行詳細介紹,而后本領(lǐng)域技術(shù)人員可以看出,本發(fā)明也可以應(yīng)用于其他的分布式系統(tǒng)當中。
[0028]Hadoop系統(tǒng)由許多元素構(gòu)成,其最底部是Hadoop Distributed File System(HDFS),由DataNode和NameNode組成。HDFS的上一層是MapReduce引擎,該引擎由JobTracker和TaskTracker組成。請參考圖2,圖2為Hadoop系統(tǒng)的結(jié)構(gòu)圖。如圖2所示,當用戶通過客戶端向Hadoop提交作業(yè)之后,作業(yè)依賴的輸入數(shù)據(jù)被分塊存儲在DataNode節(jié)點上,NameNode節(jié)點則負責管理HDFS的命名空間和控制客戶機對各個DataNode的訪問。JobTracker負責將作業(yè)程序復制到存有輸入分塊(input split)的DataNode節(jié)點上以創(chuàng)建TaskTracker的任務(wù)。更為詳細的Hadoop系統(tǒng)的介紹可參考“http://hadoop.apache,org/”網(wǎng)站,這里不再贅述。
[0029]用戶向Hadoop系統(tǒng)提交作業(yè)的過程當中,會在Hadoop系統(tǒng)中產(chǎn)生三個文件,分別是job.xml > job.jar和job.split文件。其中,job.xml是作業(yè)配置文件,包含執(zhí)行該作業(yè)所需的各種配置信息。job.jar是作業(yè)程序文件,包含了執(zhí)行該作業(yè)所需要的各種類實現(xiàn)。job.split是作業(yè)分塊文件,包含了對該作業(yè)依賴的輸入數(shù)據(jù)進行分塊所需要的信息。這三個文件就是在hadoop系統(tǒng)上執(zhí)行對應(yīng)作業(yè)所依賴的標識文件。請參考圖3,圖3示出了用戶向Hadoop系統(tǒng)提交作業(yè)時的交互過程??梢?,在一個作業(yè)提交過程中,Hadoop系統(tǒng)中將產(chǎn)生與這個作業(yè)相關(guān)的三個文件,Hadoop系統(tǒng)后續(xù)將依賴這三個文件才能夠分布式地執(zhí)行對應(yīng)作業(yè)。[0030]具體地,步驟SlOl包括:
[0031]步驟SlOll:從線上的分布式系統(tǒng)中提取當前作業(yè)所依賴的當前標識文件。
[0032]步驟S1012:對線上的分布式系統(tǒng)進行輪詢,以獲取當前作業(yè)的狀態(tài)。
[0033]步驟S1013:當上述狀態(tài)為執(zhí)行失敗時,將步驟SlOl中提取的當前標識文件丟棄,否則將步驟SlOl中提取的當前標識文件作為第一標識文件。
[0034]當前作業(yè)指的是已提交并在Hadoop系統(tǒng)中正在執(zhí)行的作業(yè),當前作業(yè)所依賴的標識文件就是當前標識文件,例如當前作業(yè)為作業(yè)A,則執(zhí)行作業(yè)A所依賴的job.xml、job.jar和job.split就是當前標識文件。由于一個作業(yè)的標識文件只在提交和執(zhí)行過程中存在,因此步驟SlOll中先將當前標識文件提取出來,并通過步驟S1012和步驟S1013保證只將執(zhí)行成功的作業(yè)的標識文件提取出來。其中,執(zhí)行成功的作業(yè)就是目標作業(yè),在步驟SlOll中已經(jīng)提取的與目標作業(yè)相關(guān)的job.xml、job.jar和job.split就是第一標識文件。后續(xù)在步驟S102和步驟S103中,將通過第一標識文件實現(xiàn)對線下的分布式系統(tǒng)進行測試的目的。
[0035]對Hadoop系統(tǒng)而言,步驟S102具體包括:
[0036]步驟S1021:根據(jù)預(yù)設(shè)的配置修改條件對第一標識文件包含的作業(yè)配置文件中的配置項進行修改,以得到第二標識文件包含的作業(yè)配置文件,其中配置修改條件由線下系統(tǒng)的集群規(guī)模決定。
[0037]第一標識文件包含的作業(yè)配置文件,即從線上系統(tǒng)獲取到的job.xml文件中包含了與目標作業(yè)相關(guān)的各種配置信息,例如與目標作業(yè)相關(guān)的task的數(shù)目、map數(shù)目reduce數(shù)目,以及線上系統(tǒng)的集群規(guī)模等信息。由于線下的分布式系統(tǒng)是用于測試的系統(tǒng),集群規(guī)模遠小于線上系統(tǒng)的集群規(guī)模,因此,需要修改從線上系統(tǒng)獲取到的job.xml中的配置項,使得最終線下系統(tǒng)能夠依據(jù)修改后的job.xml執(zhí)行目標作業(yè)。由于線下系統(tǒng)是待測系統(tǒng),集群規(guī)模是預(yù)先已知的,因此,配置修改條件只需要預(yù)先根據(jù)線下系統(tǒng)的集群規(guī)模設(shè)置好即可,此外,配置修改條件中還定義了對集群基礎(chǔ)數(shù)據(jù)(例如各種文件的存放位置)進行修改的規(guī)則。
[0038]步驟S1022:從在線上的分布式系統(tǒng)上執(zhí)行目標作業(yè)所依賴的輸入數(shù)據(jù)中復制指定規(guī)模的輸入數(shù)據(jù)到線下的分布式系統(tǒng)中,以得到在線下的分布式系統(tǒng)上執(zhí)行目標作業(yè)所依賴的輸入數(shù)據(jù),其中指定規(guī)模是由第二標識文件包含的作業(yè)配置文件中的配置項確定的規(guī)模。
[0039]在線上系統(tǒng)執(zhí)行目標作業(yè)時所處理的輸入數(shù)據(jù)的數(shù)量可能非常龐大,由于線下系統(tǒng)的集群規(guī)??赡苓h小于線上系統(tǒng)的集群規(guī)模,因此在線下系統(tǒng)執(zhí)行目標作業(yè)時對如此巨量的輸入數(shù)據(jù)進行處理是不現(xiàn)實的。在本發(fā)明的步驟S1022中,只復制指定規(guī)模的輸入數(shù)據(jù)到線下系統(tǒng)中,這些復制到線下系統(tǒng)中的輸入數(shù)據(jù),就是在線下系統(tǒng)上執(zhí)行目標作業(yè)所依賴的輸入數(shù)據(jù)。這里的指定規(guī)模,是由修改后的job.xml,即第二標識文件包含的作業(yè)配置文件中的配置項確定的規(guī)模。通過前面的描述可以知道,job.xml中包含了多個配置項,其中有集群規(guī)模的配置項,在前面對job.xml進行修改時,可以設(shè)置線下集群與線上集群的比例,這樣,在步驟S1022中即可根據(jù)這個比例確定指定規(guī)模的輸入數(shù)據(jù)是多少。例如線上系統(tǒng)的集群數(shù)量為I萬臺機器,線下系統(tǒng)的集群數(shù)量為100臺機器,則在修改job.xml時,可以設(shè)置集群比例配置項為百分之一。假設(shè)線上系統(tǒng)處理的輸入數(shù)據(jù)數(shù)量為100T,則在步驟S1022中,可以確定指定規(guī)模的輸入數(shù)據(jù)就是1T,這樣在步驟S1022中,就會從線上系統(tǒng)復制IT的輸入數(shù)據(jù)到線下系統(tǒng)。
[0040]值得注意的是,在步驟S1022中,對輸入數(shù)據(jù)的復制是均勻進行的。例如輸入數(shù)據(jù)是100個文件,如果要復制百分之一的數(shù)據(jù),優(yōu)選的復制方式是從每個文件中復制百分之一的數(shù)據(jù),而不是復制數(shù)據(jù)量占比為百分之一的文件。也就是說,步驟S1022中,對線上的輸入數(shù)據(jù)進行了過濾,這種過濾是對輸入數(shù)據(jù)的每個文件中的數(shù)據(jù)進行過濾,而不是對輸入數(shù)據(jù)的文件數(shù)量進行過濾,如果線上的輸入數(shù)據(jù)為100個文件,在復制到線下時,仍然是100個文件,只是每個文件中的數(shù)據(jù)量變少了。
[0041]步驟S1023:利用第一標識文件包含的作業(yè)分塊文件確定輸入分塊的大小,按照所述大小對復制到線下的分布式系統(tǒng)中的輸入數(shù)據(jù)進行切分,并將切分結(jié)果覆蓋至第一標識文件包含的作業(yè)分塊文件中,以得到第二標識文件包含的作業(yè)分塊文件,以及,將第一標識文件包含的作業(yè)程序文件作為第二標識文件包含的作業(yè)程序文件。
[0042]下面是job.split文件的示意結(jié)構(gòu):[0043]split I:fi lename:startoffset, length/* 分塊 I 對應(yīng)的文件名,在該文件
[0044]split2:...中的偏移量、長度*/
[0045]split3:...[0046]從中可以看出,根據(jù)從線上獲取的job.split文件,可以得到在線上系統(tǒng)中的輸入分塊的大小,依據(jù)這個大小,可以對線下系統(tǒng)中的輸入數(shù)據(jù)重新進行切分,得到切分結(jié)果,切分結(jié)果也可以表示為上述splitl、split2、split3的形式,將這種形式的切分結(jié)果覆蓋到線上獲取的job.split文件,即可得到供線下系統(tǒng)執(zhí)行目標作業(yè)所使用的job.split文件,也就是第二標識文件包含的作業(yè)分塊文件。而job.jar文件是目標作業(yè)依賴的程序包,線上獲取到的job.jar不需要修改,可直接作為線下系統(tǒng)執(zhí)行目標作業(yè)時的job.jar文件。
[0047]至此,在線下的Hadoop系統(tǒng)執(zhí)行目標作業(yè)所依賴的job.xml、job.split和job.jar文件均得到了,在步驟S103中,利用這些文件組成的第二標識文件,即可在線下的Hadoop系統(tǒng)中執(zhí)行目標作業(yè),從而實現(xiàn)對線下的Hadoop系統(tǒng)進行測試的目的。具體地,步驟S103中,利用job.xml、job.split和job.jar文件執(zhí)行目標作業(yè)的過程,就是模擬客戶端向Hadoop提交作業(yè),以觸發(fā)線下系統(tǒng)執(zhí)行目標作業(yè)的過程,該過程的實現(xiàn)邏輯與現(xiàn)有的客戶端向Hadoop提交作業(yè)的邏輯是類似的,這里不再贅述。
[0048]通過前面的介紹,可以看出,本發(fā)明通過對線上的分布式系統(tǒng)進行監(jiān)控,可以獲取到多個目標作業(yè)的標識文件,又通過對每個目標作業(yè)的標識文件進行規(guī)模適應(yīng)性修改,以及對每個目標作業(yè)依賴的輸入數(shù)據(jù)進行規(guī)模適應(yīng)性復制,可以在線下的分布式系統(tǒng)中執(zhí)行與線上相同的目標作業(yè)。也就是說,對線下待測試的分布式系統(tǒng)而言,測試用例是自動獲取的,并且這樣獲取到的測試用例,真實地反映了用戶對系統(tǒng)的使用情況,用戶所有在線上對系統(tǒng)的使用情況,都可以自動變?yōu)榫€下系統(tǒng)的測試用例,從而實現(xiàn)對線下系統(tǒng)進行系統(tǒng)測試的目的。
[0049]通過以上介紹,本領(lǐng)域技術(shù)人員應(yīng)該理解,本發(fā)明的系統(tǒng)測試方法并不限于Hadoop系統(tǒng),實際上,任何的分布式系統(tǒng),在作業(yè)提交后都會產(chǎn)生與作業(yè)相關(guān)的標識文件,對該標識文件和作業(yè)依賴數(shù)據(jù)進行適應(yīng)性修改,均能夠?qū)崿F(xiàn)將線上系統(tǒng)執(zhí)行的作業(yè),移植到線下系統(tǒng)執(zhí)行,從而實現(xiàn)對線下系統(tǒng)進行測試的目的。
[0050]請參考圖4,圖4為本發(fā)明中分布式系統(tǒng)的系統(tǒng)測試裝置的實施例的結(jié)構(gòu)示意框圖。如圖4所示,該實施例包括:監(jiān)控單元201、轉(zhuǎn)換單元202及提交單元203。
[0051]其中監(jiān)控單元201,用于對線上的分布式系統(tǒng)進行監(jiān)控,以獲取在線上的分布式系統(tǒng)上執(zhí)行目標作業(yè)所依賴的第一標識文件。
[0052]轉(zhuǎn)換單元202,用于根據(jù)第一標識文件獲取在線下的分布式系統(tǒng)上執(zhí)行目標作業(yè)所依賴的第二標識文件,以及,在線下的分布式系統(tǒng)上執(zhí)行目標作業(yè)所依賴的輸入數(shù)據(jù)。
[0053]提交單元203,用于在線下的分布式系統(tǒng)上根據(jù)第二標識文件及轉(zhuǎn)換單元202獲取的輸入數(shù)據(jù)執(zhí)行目標作業(yè),以對線下系統(tǒng)進行測試。
[0054]根據(jù)一個實施例,本發(fā)明的分布式系統(tǒng)為Hadoop系統(tǒng),與之對應(yīng)的,上述的第一標識文件和第二標識文件均包含作業(yè)程序文件、作業(yè)分塊文件和作業(yè)配置文件。
[0055]請參考圖5,圖5為本發(fā)明中監(jiān)控單元201的一個實施例的結(jié)構(gòu)示意框圖。如圖5所示,監(jiān)控單元201包括提取單元2011、輪詢單元2012及確定單元2013。其中,提取單元2011,用于從線上的分布式系統(tǒng)中提取當前作業(yè)所依賴的當前標識文件。輪詢單元2012,用于對線上的分布式系統(tǒng)進行輪詢,以獲取當前作業(yè)的狀態(tài)。確定單元2013,用于當上述狀態(tài)為執(zhí)行失敗時,將提取單元2011提取的當前標識文件丟棄,否則將提取單元2011提取的當前標識文件作為第一標識文件。
[0056]請參考圖6,圖6為本發(fā)明中轉(zhuǎn)換單元202的一個實施例的結(jié)構(gòu)示意框圖。如圖6所示,轉(zhuǎn)換單元202包括修改單元2021、復制單元2022及文件生成單元2023。
[0057]其中,修改單元2021,用于根據(jù)預(yù)設(shè)的配置修改條件對第一標識文件包含的作業(yè)配置文件中的配置項進行修改,以得到第二標識文件包含的作業(yè)配置文件,其中配置修改條件由線下系統(tǒng)的集群規(guī)模決定。
[0058]復制單元2022,用于從在線上的分布式系統(tǒng)上執(zhí)行目標作業(yè)所依賴的輸入數(shù)據(jù)中復制指定規(guī)模的輸入數(shù)據(jù)到線下的分布式系統(tǒng)中,以得到所述線下的分布式系統(tǒng)上執(zhí)行目標作業(yè)所依賴的輸入數(shù)據(jù),其中指定規(guī)模是由第二標識文件包含的作業(yè)配置文件中的配置項確定的規(guī)模。
[0059]文件生成單元2023,用于利用第一標識文件包含的作業(yè)分塊文件確定輸入分塊的大小,按照所述大小對復制到線下的分布式系統(tǒng)中的輸入數(shù)據(jù)進行切分,并將切分結(jié)果覆蓋至第一標識文件包含的作業(yè)分塊文件中,以得到第二標識文件包含的作業(yè)分塊文件,以及,將第一標識文件包含的作業(yè)程序文件作為第二標識文件包含的作業(yè)程序文件。
[0060]以上所述僅為本發(fā)明的較佳實施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所做的任何修改、等同替換、改進等,均應(yīng)包含在本發(fā)明保護的范圍之內(nèi)。
【權(quán)利要求】
1.一種分布式系統(tǒng)的系統(tǒng)測試方法,包括: A.對線上的分布式系統(tǒng)進行監(jiān)控,以獲取在所述線上的分布式系統(tǒng)上執(zhí)行目標作業(yè)所依賴的第一標識文件; B.根據(jù)線下的分布式系統(tǒng)的集群規(guī)模對所述第一標識文件進行修改,以獲取在所述線下的分布式系統(tǒng)上執(zhí)行所述目標作業(yè)所依賴的第二標識文件,以及,根據(jù)所述第二標識文件獲取在所述線下的分布式系統(tǒng)上執(zhí)行所述目標作業(yè)所依賴的輸入數(shù)據(jù); C.在所述線下的分布式系統(tǒng)上根據(jù)所述第二標識文件及獲取的輸入數(shù)據(jù)執(zhí)行所述目標作業(yè),以對所述線下的分布式系統(tǒng)進行測試。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述步驟A包括: Al.從所述線上的分布式系統(tǒng)中提取當前作業(yè)所依賴的當前標識文件; A2.對所述線上的分布式系統(tǒng)進行輪詢,以獲取當前作業(yè)的狀態(tài); A3.當所述狀態(tài)為執(zhí)行失敗時將所述步驟Al中提取的當前標識文件丟棄,否則將所述步驟Al中提取的當前標識文件作為所述第一標識文件。
3.根據(jù)權(quán)利要求1或2所述的方法,其特征在于,所述分布式系統(tǒng)為Hadoop系統(tǒng)。
4.根據(jù)權(quán)利要求3所述的方法,其特征在于,所述第一標識文件及所述第二標識文件均包含作業(yè)程序文件、作業(yè)分塊文件及作業(yè)配置文件。
5.根據(jù)權(quán)利要求4所述的方法,其特征在于,所述步驟B包括: 根據(jù)預(yù)設(shè)的配置修改條件對所述第一標識文件包含的作業(yè)配置文件中的配置項進行修改,以得到所述第二標識文件包含的作業(yè)配置文件,其中所述配置修改條件由所述線下系統(tǒng)的集群規(guī)模決定; 從在所述線上的分布式系統(tǒng)上執(zhí)行所述目標作業(yè)所依賴的輸入數(shù)據(jù)中復制指定規(guī)模的輸入數(shù)據(jù)到所述線下的分布式系統(tǒng)中,以得到在所述線下的分布式系統(tǒng)上執(zhí)行所述目標作業(yè)所依賴的輸入數(shù)據(jù),其中所述指定規(guī)模是由所述第二標識文件包含的作業(yè)配置文件中的配置項確定的規(guī)模; 利用所述第一標識文件包含的作業(yè)分塊文件確定輸入分塊的大小,按照所述大小對復制到所述線下的分布式系統(tǒng)中的輸入數(shù)據(jù)進行切分,并將切分結(jié)果覆蓋至所述第一標識文件包含的作業(yè)分塊文件中,以得到所述第二標識文件包含的作業(yè)分塊文件,以及,將所述第一標識文件包含的作業(yè)程序文件作為所述第二標識文件包含的作業(yè)程序文件。
6.一種分布式系統(tǒng)的系統(tǒng)測試裝置,包括: 監(jiān)控單元,用于對線上的分布式系統(tǒng)進行監(jiān)控,以獲取在所述線上的分布式系統(tǒng)上執(zhí)行目標作業(yè)所依賴的第一標識文件; 轉(zhuǎn)換單元,用于根據(jù)所述第一標識文件獲取在線下的分布式系統(tǒng)上執(zhí)行目標作業(yè)所依賴的第二標識文件,以及,根據(jù)所述第二標識文件獲取在所述線下的分布式系統(tǒng)上執(zhí)行所述目標作業(yè)所依賴的輸入數(shù)據(jù); 提交單元,用于在所述線下的分布式系統(tǒng)上根據(jù)所述第二標識文件及獲取的輸入數(shù)據(jù)執(zhí)行所述目標作業(yè),以對所述線下系統(tǒng)進行測試。
7.根據(jù)權(quán)利要求6所述的裝置,其特征在于,所述監(jiān)控單元包括: 提取單元,用于從所述 線上的分布式系統(tǒng)中提取當前作業(yè)所依賴的當前標識文件; 輪詢單元,用于對所述線上的分布式系統(tǒng)進行輪詢,以獲取當前作業(yè)的狀態(tài);確定單元,用于當所述狀態(tài)為執(zhí)行失敗時,將所述提取單元提取的當前標識文件丟棄,否則將所述提取單元提取的當前標識文件作為所述第一標識文件。
8.根據(jù)權(quán)利要求6或7所述的裝置,其特征在于,所述分布式系統(tǒng)為Hadoop系統(tǒng)。
9.根據(jù)權(quán)利要求8所述的裝置,其特征在于,所述第一標識文件及所述第二標識文件均包含作業(yè)程序文件、作業(yè)分塊文件及作業(yè)配置文件。
10.根據(jù)權(quán)利要求9所述的裝 置,其特征在于,所述轉(zhuǎn)換單元包括: 修改單元,用于根據(jù)預(yù)設(shè)的配置修改條件對所述第一標識文件包含的作業(yè)配置文件中的配置項進行修改,以得到所述第二標識文件包含的作業(yè)配置文件,其中所述配置修改條件由所述線下系統(tǒng)的集群規(guī)模決定; 復制單元,用于從在所述線上的分布式系統(tǒng)上執(zhí)行所述目標作業(yè)所依賴的輸入數(shù)據(jù)中復制指定規(guī)模的輸入數(shù)據(jù)到所述線下的分布式系統(tǒng)中,以得到在所述線下的分布式系統(tǒng)上執(zhí)行所述目標作業(yè)所依賴的輸入數(shù)據(jù),其中所述指定規(guī)模是由所述第二標識文件包含的作業(yè)配置文件中的配置項確定的規(guī)模; 文件生成單元,用于利用所述第一標識文件包含的作業(yè)分塊文件確定輸入分塊的大小,按照所述大小對復制到所述線下的分布式系統(tǒng)中的輸入數(shù)據(jù)進行切分,并將切分結(jié)果覆蓋至所述第一標識文件包含的作業(yè)分塊文件中,以得到所述第二標識文件包含的作業(yè)分塊文件,以及,將所述第一標識文件包含的作業(yè)程序文件作為所述第二標識文件包含的作業(yè)程序文件。
【文檔編號】G06F11/30GK103902447SQ201210581715
【公開日】2014年7月2日 申請日期:2012年12月27日 優(yōu)先權(quán)日:2012年12月27日
【發(fā)明者】楊斐 申請人:百度在線網(wǎng)絡(luò)技術(shù)(北京)有限公司