《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技術(shù) > 設(shè)計應(yīng)用 > 基于Hadoop的測試數(shù)據(jù)處理系統(tǒng)設(shè)計與實現(xiàn)
基于Hadoop的測試數(shù)據(jù)處理系統(tǒng)設(shè)計與實現(xiàn)
2015年電子技術(shù)應(yīng)用第7期
劉有耀,,李 彬
西安郵電大學(xué) 專用集成電路設(shè)計中心,,陜西 西安710061
摘要: 提出一種基于Hadoop軟件框架進(jìn)行海量測試數(shù)據(jù)處理的解決方案。在深入研究Hadoop分布式系統(tǒng)構(gòu)架,、HDFS分布式文件系統(tǒng)以及MapReduce分布式編程模型的基礎(chǔ)上,,設(shè)計并實現(xiàn)了二進(jìn)制測試數(shù)據(jù)文件到HDFS的傳輸機(jī)制以及基于MapReduce的測試數(shù)據(jù)分布式格式轉(zhuǎn)換系統(tǒng)。最后搭建實驗環(huán)境,驗證了整個系統(tǒng)的正確性并對分布式格式轉(zhuǎn)換系統(tǒng)進(jìn)行性能評估,。與本地單機(jī)相比,系統(tǒng)在處理海量數(shù)據(jù)時具有更高的效率及更好的可拓展性,。
中圖分類號: TP311
文獻(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
The design and implementation of test data processing system based on Hadoop
Liu Youyao,,Li Bin
Design Center of Application-Specific Integrated Circuits, Xi′an University of Posts and Telecommunications,Xi′an 710061,,China
Abstract: This paper proposes a Hadoop-based software framework for massive testing data processing scheme. Based on the related technology of Hadoop distributed system architecture, Hadoop distributed file system and MapReduce programming model, it designed and implemented the binary test data files to HDFS transport mechanism and the test data format conversion system based on MapReduce. Finally, it set up the experimental environment to verify the correctness of the whole system and did the distributed format conversion system performance evaluation. Compared with one node conversion in local, this system has higher efficiency and better expansibility in dealing with a huge amounts of data.
Key words : semiconductor testing data,;distributed storage;Hadoop,;MapReduce

  

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)的體系,。

jsj1-t1.gif

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],。

jsj1-t2.gif

    在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所示。

jsj1-t3.gif

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)行分布式并行處理。

jsj1-t4.gif

    系統(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中,。

jsj1-t5.gif

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左右,。

jsj1-b1.gif

    測試在不同集群規(guī)模下格式轉(zhuǎn)換所用時間,,包括集群中有2節(jié)點、3節(jié)點和4節(jié)點的情況,,以及單臺機(jī)器在本地的格式轉(zhuǎn)換所用時間,,如表2所示,時間曲線如圖6所示,。

jsj1-b2.gif

jsj1-t6.gif

    表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.

此內(nèi)容為AET網(wǎng)站原創(chuàng),,未經(jīng)授權(quán)禁止轉(zhuǎn)載,。