文獻(xiàn)標(biāo)識碼: A
DOI:10.16157/j.issn.0258-7998.2015.07.039
中文引用格式: 劉有耀,,李彬. 基于Hadoop的測試數(shù)據(jù)處理系統(tǒng)設(shè)計與實現(xiàn)[J].電子技術(shù)應(yīng)用,2015,,41(7):140-143.
英文引用格式: Liu Youyao,,Li Bin. The design and implementation of test data processing system based on Hadoop[J].Application of Electronic Technique,2015,,41(7):140-143
0 引言
在半導(dǎo)體業(yè)日漸成熟的今天,,半導(dǎo)體測試已逐漸成為整條產(chǎn)業(yè)鏈中必不可少的重要環(huán)節(jié)。與此同時,,計算機(jī)科學(xué)與技術(shù)的不斷發(fā)展同樣為半導(dǎo)體測試提供了全方位的支持,。集成電路規(guī)模的不斷增大,使得所要測試的項目隨之增多,,同時,,測試數(shù)據(jù)量也在不斷增加。如何對海量的測試數(shù)據(jù)進(jìn)行有效的存儲以及處理成為集成電路測試數(shù)據(jù)研究領(lǐng)域里的熱門問題,。
本文首先介紹了現(xiàn)階段主流的大數(shù)據(jù)解決方案Hadoop的相關(guān)技術(shù),,詳細(xì)研究Hadoop相關(guān)組件的功能和架構(gòu)。在此基礎(chǔ)上,,設(shè)計并且實現(xiàn)了基于Hadoop的測試數(shù)據(jù)分布式處理系統(tǒng),。最后搭建實際的測試環(huán)境,對整個系統(tǒng)進(jìn)行測試,,驗證了平臺的有效性和穩(wěn)定性,,并對結(jié)果進(jìn)行了分析。
1 分布式系統(tǒng)相關(guān)技術(shù)研究
1.1 Hadoop
Hadoop[1]的整體構(gòu)架如圖1所示,圖中每個最底層的長方形代表一臺物理服務(wù)器,,每臺物理服務(wù)器或稱物理節(jié)點,,通過網(wǎng)線連接到交換機(jī),交換機(jī)再連接到中心交換機(jī),,客戶端通過互聯(lián)網(wǎng)來訪問,。NameNode(名稱節(jié)點)[2]、Secondary NameNode(輔助名稱節(jié)點)[3],、DataNode(數(shù)據(jù)節(jié)點)組成了Hadoop內(nèi)整個分布式文件系統(tǒng)的體系,。
1.2 HDFS
HDFS[4]的分布式文件系統(tǒng)架構(gòu)如圖2所示。其中,,NameNode的工作是管理文件系統(tǒng)的命名空間,,它是整個系統(tǒng)的總控節(jié)點,會記錄每個文件的數(shù)據(jù)塊在各個DataNode里的位置以及副本的信息,,除此之外,,它還需要記錄每個文件具體所在的集群節(jié)點。另外,,NameNode還要協(xié)調(diào)客戶端對文件的訪問,,當(dāng)有節(jié)點需要訪問某個文件時,它會先去訪問NameNode來獲取此文件的位置信息,,獲取信息后,,它就可以與DataNode直接通信,來獲取數(shù)據(jù)塊[5],。
在HDFS中,另外一種節(jié)點的角色是DataNode,,主要是用來管理所在的物理節(jié)點,。DataNode的讀寫方式一般是文件一次性寫入,不能修改,,可以刪除,,并且可以多次讀取。由于其有此特性,,就不需要考慮一致性,。在DataNode中,文件是由數(shù)據(jù)塊組成,,從Linux的角度來看,,每個數(shù)據(jù)塊就是一個Block文件,一般缺省的數(shù)據(jù)塊最大可以達(dá)到64 MB,。在調(diào)度時,,Hadoop系統(tǒng)會盡量讓數(shù)據(jù)塊散布在集群里的各個節(jié)點中,來實現(xiàn)冗余的效果。
1.3 MapReduce
MapReduce的主要思想是“分而治之”[6-7],。這個思想在MapReduce模型中被反映得淋漓盡致,,其中,mapper用來做“分”的工作,,把一個很龐大的工作任務(wù),,在數(shù)據(jù)上分配到每個節(jié)點上,然后在程序計算上進(jìn)行分割,,mapper一般會跟它處理的數(shù)據(jù)被存放在同一個節(jié)點中,,而不需要網(wǎng)絡(luò)再傳輸數(shù)據(jù),這樣可以減少很多在網(wǎng)絡(luò)中I/O的時間,;reducer的任務(wù)是對map進(jìn)程中的處理結(jié)果進(jìn)行集中,。MapReduce工作原理如圖3所示。
2 測試數(shù)據(jù)處理系統(tǒng)設(shè)計
本文所研究的測試數(shù)據(jù)是基于泰瑞達(dá)公司的J750自動測試機(jī),,通過對集成電路測試得到標(biāo)準(zhǔn)測試數(shù)據(jù)格式文件(Standard Test Data Format,,STDF)[8]。STDF是一種由泰瑞達(dá)公司開發(fā)的通過自動測試機(jī)來收集測試數(shù)據(jù)的文件格式,,它具有簡單,、靈活、便捷的特點,,為了最小化地占用存儲空間,,它被設(shè)計為二進(jìn)制文件格式,由于很容易被快速且穩(wěn)定地進(jìn)行數(shù)據(jù)格式轉(zhuǎn)換,,因此逐漸被很多自動測試機(jī)供應(yīng)商所接受,。
隨著芯片制造工廠的不斷涌現(xiàn)及自動測試機(jī)數(shù)量的不斷增加,產(chǎn)生的測試數(shù)據(jù)量將是海量的,。因此,,對測試數(shù)據(jù)處理時產(chǎn)生的時間損耗及運(yùn)算資源的需求量會不斷增大。
本文基于MapReduce設(shè)計并實現(xiàn)一個測試數(shù)據(jù)分布式處理系統(tǒng),,該系統(tǒng)通過對可擴(kuò)展運(yùn)算資源的集中使用,,達(dá)到高處理性能。此系統(tǒng)實現(xiàn)了測試數(shù)據(jù)的分布式存儲,,同時使用了基于MapReduce的程序?qū)崿F(xiàn)了分布式的格式轉(zhuǎn)換功能,,將STDF格式文件轉(zhuǎn)換為CSV格式文件,系統(tǒng)顯著提高了格式轉(zhuǎn)換的性能,。
系統(tǒng)總體架構(gòu)圖如圖4所示,。系統(tǒng)主要由測試數(shù)據(jù)的分布式存儲與分布式格式轉(zhuǎn)換兩個部分組成。系統(tǒng)使用HDFS作為分布式并行處理的存儲平臺,,從FTP收集到的海量測試數(shù)據(jù)會被自動分布到HDFS的數(shù)據(jù)節(jié)點中,,然后,,系統(tǒng)會利用Hadoop MapReduce對數(shù)據(jù)進(jìn)行分布式并行處理。
系統(tǒng)執(zhí)行的具體步驟如下:
(1)數(shù)據(jù)采集,。ATE收集的測試數(shù)據(jù)存儲在本地硬盤上,,系統(tǒng)將會采集FTP上的所有STDF文件,并通過DFSClient程序?qū)⑽募蟼鞯紿DFS中,,實現(xiàn)測試數(shù)據(jù)的分布式存儲,。
(2)數(shù)據(jù)處理。系統(tǒng)將HDFS中的數(shù)據(jù)傳遞給Map-Reduce框架,,實現(xiàn)數(shù)據(jù)的分布式處理,。這是本系統(tǒng)的主要工作。
(3)數(shù)據(jù)返回,。格式轉(zhuǎn)換完成后,,數(shù)據(jù)將自動上傳到HDFS中。
步驟(2)中的數(shù)據(jù)格式轉(zhuǎn)換為本系統(tǒng)的主要工作部分,。首先,,通過程序?qū)y試數(shù)據(jù)文件的目錄路徑作為MapReduce程序的輸入,傳遞給MapReduce框架,,也就是將HDFS中的測試數(shù)據(jù)分發(fā)到集群中的各個節(jié)點,;然后,系統(tǒng)將會利用Hadoop提供給MapReduce框架的文件緩存工具DistributedCache,,在運(yùn)行任務(wù)之前,,該軟件將會自動被分發(fā)到每臺機(jī)器上的某個目錄中,這樣就無需預(yù)先在各個節(jié)點上放置格式轉(zhuǎn)換軟件,,減少了工作量的同時提高了工作效率,;最后,在map()函數(shù)中調(diào)用第三方軟件“StdfToCsv.exe”進(jìn)行格式轉(zhuǎn)換,。由于考慮到數(shù)據(jù)實際并不需要在reduce階段進(jìn)行合并處理過程,,因此,系統(tǒng)僅實現(xiàn)map階段,,這樣不僅能夠避免在reduce階段對數(shù)據(jù)進(jìn)行合并,,而且提升了系統(tǒng)的工作效率,。
3 測試數(shù)據(jù)處理系統(tǒng)實現(xiàn)
3.1 測試數(shù)據(jù)在HDFS上的存儲實現(xiàn)
測試數(shù)據(jù)文件將已“測試時間_LotID_WaferID”的格式進(jìn)行命名,,DFS Client把測試數(shù)據(jù)上傳到HDFS中。
圖5為DFS Client將STDF文件上傳到HDFS的流程圖,。首先,,打開本地文件的輸入流與HDFS的輸出流;然后,,將STDF文件全部上傳的HDFS中,,直到所有數(shù)據(jù)上傳完畢,;最后,關(guān)閉輸入,、輸出流,。為了實現(xiàn)測試數(shù)據(jù)實時上傳到HDFS中,需要采用定時刷新檢測機(jī)制,,將測試數(shù)據(jù)定時上傳到HDFS中,。
3.2 測試數(shù)據(jù)格式轉(zhuǎn)換實現(xiàn)
應(yīng)用程序在JobConf中通過url(hdfs://)指定需要被緩存的文件,即“StdfToCsv.exe”文件,。此時該文件已經(jīng)被存放在HDFS上,。MapReduce會在任務(wù)開始之前,將該文件分發(fā)到Slave節(jié)點上,,而且僅會為沒有該文件的Slave節(jié)點緩存文件,,這樣可以節(jié)約網(wǎng)絡(luò)帶寬,提高系統(tǒng)的運(yùn)行效率,。測試數(shù)據(jù)格式轉(zhuǎn)換實現(xiàn)過程如下:
(1)數(shù)據(jù)格式轉(zhuǎn)換模塊使用InputFormat類中的Record-Reader方法從HDFS中讀取STDF文件,。在該系統(tǒng)中,InputFormat主要承擔(dān)兩項工作,,第一是預(yù)先向MapReduce框架提供map任務(wù)的數(shù)量信息,,從而使MapReduce框架預(yù)先安排所有的map任務(wù);第二是讀取從原始測試數(shù)據(jù)集傳遞到map類中map()函數(shù)的記錄,,這個函數(shù)通過RecordReader來執(zhí)行,,RecordReader是由FileInputFormat提供,用來讀取原始文件,,并將它傳遞給map(),。
(2)InputFormat將Key-Value對傳遞給mapper。mapper將會使用格式轉(zhuǎn)換軟件以完全分布式方式將STDF文件轉(zhuǎn)換為CSV文件,,在mapper完成測試數(shù)據(jù)的格式轉(zhuǎn)換后,,將結(jié)果傳遞給OutputFormat作為Key(文件名)和Value(文件內(nèi)容)。
(3)mapper將Key-Value對傳遞給OutputFormat,。也就是說,,OutputFormat會將Key-Value對重新生成一個HDFS中的文件。
本文設(shè)計了一個StdfInputFormat類來讀取STDF文件,,另外還設(shè)計了StdfRecordReader類從StdfInputFormat讀出數(shù)據(jù)并且傳遞給mapper函數(shù),。
MapReduce的輸入是存儲在HDFS中的STDF文件,一個STDF文件作為一個單獨的map輸入,,也就是說,,每個STDF文件為一個單獨的邏輯分割,不需要再進(jìn)行分割,,即保證了每個STDF文件的獨立性與完整性,。要實現(xiàn)此設(shè)計,,只需重寫FileInputFormat子類中的isSplitable()方法,將返回值設(shè)為False,,就可以達(dá)到將每個STDF文件作為一個邏輯分割的目的,。
當(dāng)數(shù)據(jù)從HDFS被傳遞到mapper函數(shù)時,由數(shù)據(jù)文件名和數(shù)據(jù)內(nèi)容作為Key-Value對,。在整個MapReduce程序中,,通過繼承mapper這個類來實現(xiàn)map,本文重寫map()方法,,使得map()每次接收一個Key-Value對,,然后系統(tǒng)就對這個Key-Value對進(jìn)行處理,再分發(fā)出處理后的數(shù)據(jù),。
mapper有setup(),、map()、cleanup()和run()四個方法,,其中setup()一般是用來進(jìn)行一些map()前的準(zhǔn)備工作,,map()則一般承擔(dān)主要的處理工作,cleanup()則負(fù)責(zé)收尾工作,,如關(guān)閉文件或者執(zhí)行map()后的Key-Value分發(fā)等,。在本系統(tǒng)中,setup()方法用來執(zhí)行DistributedCache,,將第三方軟件分發(fā)到各個節(jié)點后,,執(zhí)行軟件,對STDF文件進(jìn)行轉(zhuǎn)換,。執(zhí)行命令如下:
StdfToCsv.exe-stdf xxx.stdf-csv-o xxx
“xxx”就是待轉(zhuǎn)換文件的名字,,也就是Key值,因此,,只需要將執(zhí)行命令放入map()函數(shù)即可,。程序啟動后,數(shù)據(jù)會以Key-Value對的形式傳輸?shù)健癝tdfToCsv.exe”軟件中進(jìn)行格式轉(zhuǎn)換,。對于FileOutputFormat而言,,與FileInputFormat情況一樣,本文同樣設(shè)計了StdfOutputFormat和StdfRecordWriter類來接收Key-Value對作為mapper的結(jié)果,,結(jié)果將被輸出到HDFS中,,最終實現(xiàn)海量測試數(shù)據(jù)的分布式格式轉(zhuǎn)換。
4 系統(tǒng)的測試與分析
首先對測試數(shù)據(jù)格式轉(zhuǎn)換系統(tǒng)的正確性進(jìn)行驗證,,將20個STDF文件上傳到Hadoop集群中進(jìn)行格式轉(zhuǎn)換,,將得到的CSV格式文件從HDFS中下載到本地,,與在本地進(jìn)行格式轉(zhuǎn)換得到的CSV格式文件進(jìn)行對比,,結(jié)果表明兩種方法得到的CSV格式文件完全一致,。
其次,為了驗證格式轉(zhuǎn)換系統(tǒng)的性能,,使用6組不同規(guī)模的數(shù)據(jù)集,,如表1所示,每個原始STDF文件為100 MB左右,。
測試在不同集群規(guī)模下格式轉(zhuǎn)換所用時間,,包括集群中有2節(jié)點、3節(jié)點和4節(jié)點的情況,,以及單臺機(jī)器在本地的格式轉(zhuǎn)換所用時間,,如表2所示,時間曲線如圖6所示,。
表2及圖6顯示了各組數(shù)據(jù)集在格式轉(zhuǎn)換系統(tǒng)中的測試結(jié)果,。從表及圖中可以看出,基于Hadoop的分布式格式轉(zhuǎn)換系統(tǒng)對于大量測試數(shù)據(jù)的格式轉(zhuǎn)換展現(xiàn)了非常出色的性能,。當(dāng)數(shù)據(jù)集大小為1 GB,,同時采用4個節(jié)點進(jìn)行格式轉(zhuǎn)換時,效率比本地單機(jī)轉(zhuǎn)換提高了大約70%左右,;而當(dāng)數(shù)據(jù)集的大小增加到30 GB,,仍然采用4個節(jié)點進(jìn)行格式轉(zhuǎn)換時,效率比單機(jī)轉(zhuǎn)換更是提高了75%之多,。通過對比可以看出,,在處理相同數(shù)據(jù)集時,隨著集群內(nèi)節(jié)點數(shù)目的增長,,時間會不斷減少,,因此,在Hadoop集群上,,采用MapReduce編程框架對數(shù)據(jù)進(jìn)行處理,,在系統(tǒng)系能上會得到極大的提升。
5 結(jié)束語
隨著集成電路測試領(lǐng)域的飛速發(fā)展,,每天都會產(chǎn)生數(shù)以萬計的芯片測試數(shù)據(jù),,在未來對測試數(shù)據(jù)進(jìn)行存儲與處理方面將會面臨很多困難。本文以此為背景,,圍繞HDFS分布式文件系統(tǒng)與MapReduce分布式編程框架展開討論,,重點研究了基于Hadoop的測試數(shù)據(jù)存儲與格式轉(zhuǎn)換系統(tǒng)的設(shè)計與實現(xiàn)。
隨著云計算與云存儲技術(shù)的不斷發(fā)展,,測試數(shù)據(jù)在基于云平臺上的相關(guān)技術(shù)與研究也會越來越深入,,同時為越來越多的用戶提供便利。
參考文獻(xiàn)
[1] GHEMAWAT S,,GOBIOFF H,,LEUNG S.The google file system[C].Proceedings of the Nineteenth ACM Symposium on Operating Systems Principles,,2003.
[2] 李寬.基于HDFS的分布式Namenode節(jié)點模型的研究[D].廣州:華南理工大學(xué),2011.
[3] 鮑彤,,陳維鋒,,盧磊.基于Hadoop的分布式集群平臺構(gòu)建方法研究[J].信息通信,2013(8):21-22.
[4] BORTHAKUR D.Hadoop distributed file system[EB/OL].(2007)[2015].http://www.hadoop.org.cn/resource.
[5] 郝向濤.基于Hadoop的分布式文件系統(tǒng)技術(shù)分析及應(yīng)用[D].武漢:武漢理工大學(xué),,2013.
[6] BHANDARKAR M.MapReduce programming with apache Hadoop[C].Parallel & Distributed Processing(IPDPS),,2010 IEEE International Symposium on.Parallel & Distributed Processing(IPDPS),2010:19-23.
[7] DEAN J,,GHEMAWAT S.MapReduce:Simplified data processing on large clusters[C].OSDI′04,,2004:137-149.
[8] 袁薇.標(biāo)準(zhǔn)測試數(shù)據(jù)格式(STDF)文件的研究[J].電子元器件應(yīng)用,2009(4):70-73.