《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技術(shù) > 設(shè)計(jì)應(yīng)用 > 基于Hadoop的測(cè)試數(shù)據(jù)處理系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)
基于Hadoop的測(cè)試數(shù)據(jù)處理系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)
2015年電子技術(shù)應(yīng)用第7期
劉有耀,李 彬
西安郵電大學(xué) 專用集成電路設(shè)計(jì)中心,陜西 西安710061
摘要: 提出一種基于Hadoop軟件框架進(jìn)行海量測(cè)試數(shù)據(jù)處理的解決方案。在深入研究Hadoop分布式系統(tǒng)構(gòu)架、HDFS分布式文件系統(tǒng)以及MapReduce分布式編程模型的基礎(chǔ)上,設(shè)計(jì)并實(shí)現(xiàn)了二進(jìn)制測(cè)試數(shù)據(jù)文件到HDFS的傳輸機(jī)制以及基于MapReduce的測(cè)試數(shù)據(jù)分布式格式轉(zhuǎn)換系統(tǒng)。最后搭建實(shí)驗(yàn)環(huán)境,驗(yàn)證了整個(gè)系統(tǒng)的正確性并對(duì)分布式格式轉(zhuǎn)換系統(tǒng)進(jìn)行性能評(píng)估。與本地單機(jī)相比,系統(tǒng)在處理海量數(shù)據(jù)時(shí)具有更高的效率及更好的可拓展性。
中圖分類號(hào): TP311
文獻(xiàn)標(biāo)識(shí)碼: A
DOI:10.16157/j.issn.0258-7998.2015.07.039
中文引用格式: 劉有耀,李彬. 基于Hadoop的測(cè)試數(shù)據(jù)處理系統(tǒng)設(shè)計(jì)與實(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)體測(cè)試已逐漸成為整條產(chǎn)業(yè)鏈中必不可少的重要環(huán)節(jié)。與此同時(shí),計(jì)算機(jī)科學(xué)與技術(shù)的不斷發(fā)展同樣為半導(dǎo)體測(cè)試提供了全方位的支持。集成電路規(guī)模的不斷增大,使得所要測(cè)試的項(xiàng)目隨之增多,同時(shí),測(cè)試數(shù)據(jù)量也在不斷增加。如何對(duì)海量的測(cè)試數(shù)據(jù)進(jìn)行有效的存儲(chǔ)以及處理成為集成電路測(cè)試數(shù)據(jù)研究領(lǐng)域里的熱門問題。

    本文首先介紹了現(xiàn)階段主流的大數(shù)據(jù)解決方案Hadoop的相關(guān)技術(shù),詳細(xì)研究Hadoop相關(guān)組件的功能和架構(gòu)。在此基礎(chǔ)上,設(shè)計(jì)并且實(shí)現(xiàn)了基于Hadoop的測(cè)試數(shù)據(jù)分布式處理系統(tǒng)。最后搭建實(shí)際的測(cè)試環(huán)境,對(duì)整個(gè)系統(tǒng)進(jìn)行測(cè)試,驗(yàn)證了平臺(tái)的有效性和穩(wěn)定性,并對(duì)結(jié)果進(jìn)行了分析。

1 分布式系統(tǒng)相關(guān)技術(shù)研究

1.1 Hadoop

    Hadoop[1]的整體構(gòu)架如圖1所示,圖中每個(gè)最底層的長方形代表一臺(tái)物理服務(wù)器,每臺(tái)物理服務(wù)器或稱物理節(jié)點(diǎn),通過網(wǎng)線連接到交換機(jī),交換機(jī)再連接到中心交換機(jī),客戶端通過互聯(lián)網(wǎng)來訪問。NameNode(名稱節(jié)點(diǎn))[2]、Secondary NameNode(輔助名稱節(jié)點(diǎn))[3]、DataNode(數(shù)據(jù)節(jié)點(diǎn))組成了Hadoop內(nèi)整個(gè)分布式文件系統(tǒng)的體系。

jsj1-t1.gif

1.2 HDFS

    HDFS[4]的分布式文件系統(tǒng)架構(gòu)如圖2所示。其中,NameNode的工作是管理文件系統(tǒng)的命名空間,它是整個(gè)系統(tǒng)的總控節(jié)點(diǎn),會(huì)記錄每個(gè)文件的數(shù)據(jù)塊在各個(gè)DataNode里的位置以及副本的信息,除此之外,它還需要記錄每個(gè)文件具體所在的集群節(jié)點(diǎn)。另外,NameNode還要協(xié)調(diào)客戶端對(duì)文件的訪問,當(dāng)有節(jié)點(diǎn)需要訪問某個(gè)文件時(shí),它會(huì)先去訪問NameNode來獲取此文件的位置信息,獲取信息后,它就可以與DataNode直接通信,來獲取數(shù)據(jù)塊[5]

jsj1-t2.gif

    在HDFS中,另外一種節(jié)點(diǎn)的角色是DataNode,主要是用來管理所在的物理節(jié)點(diǎn)。DataNode的讀寫方式一般是文件一次性寫入,不能修改,可以刪除,并且可以多次讀取。由于其有此特性,就不需要考慮一致性。在DataNode中,文件是由數(shù)據(jù)塊組成,從Linux的角度來看,每個(gè)數(shù)據(jù)塊就是一個(gè)Block文件,一般缺省的數(shù)據(jù)塊最大可以達(dá)到64 MB。在調(diào)度時(shí),Hadoop系統(tǒng)會(huì)盡量讓數(shù)據(jù)塊散布在集群里的各個(gè)節(jié)點(diǎn)中,來實(shí)現(xiàn)冗余的效果。

1.3 MapReduce

    MapReduce的主要思想是“分而治之”[6-7]。這個(gè)思想在MapReduce模型中被反映得淋漓盡致,其中,mapper用來做“分”的工作,把一個(gè)很龐大的工作任務(wù),在數(shù)據(jù)上分配到每個(gè)節(jié)點(diǎn)上,然后在程序計(jì)算上進(jìn)行分割,mapper一般會(huì)跟它處理的數(shù)據(jù)被存放在同一個(gè)節(jié)點(diǎn)中,而不需要網(wǎng)絡(luò)再傳輸數(shù)據(jù),這樣可以減少很多在網(wǎng)絡(luò)中I/O的時(shí)間;reducer的任務(wù)是對(duì)map進(jìn)程中的處理結(jié)果進(jìn)行集中。MapReduce工作原理如圖3所示。

jsj1-t3.gif

2 測(cè)試數(shù)據(jù)處理系統(tǒng)設(shè)計(jì)

    本文所研究的測(cè)試數(shù)據(jù)是基于泰瑞達(dá)公司的J750自動(dòng)測(cè)試機(jī),通過對(duì)集成電路測(cè)試得到標(biāo)準(zhǔn)測(cè)試數(shù)據(jù)格式文件(Standard Test Data Format,STDF)[8]。STDF是一種由泰瑞達(dá)公司開發(fā)的通過自動(dòng)測(cè)試機(jī)來收集測(cè)試數(shù)據(jù)的文件格式,它具有簡(jiǎn)單、靈活、便捷的特點(diǎn),為了最小化地占用存儲(chǔ)空間,它被設(shè)計(jì)為二進(jìn)制文件格式,由于很容易被快速且穩(wěn)定地進(jìn)行數(shù)據(jù)格式轉(zhuǎn)換,因此逐漸被很多自動(dòng)測(cè)試機(jī)供應(yīng)商所接受。

    隨著芯片制造工廠的不斷涌現(xiàn)及自動(dòng)測(cè)試機(jī)數(shù)量的不斷增加,產(chǎn)生的測(cè)試數(shù)據(jù)量將是海量的。因此,對(duì)測(cè)試數(shù)據(jù)處理時(shí)產(chǎn)生的時(shí)間損耗及運(yùn)算資源的需求量會(huì)不斷增大。

    本文基于MapReduce設(shè)計(jì)并實(shí)現(xiàn)一個(gè)測(cè)試數(shù)據(jù)分布式處理系統(tǒng),該系統(tǒng)通過對(duì)可擴(kuò)展運(yùn)算資源的集中使用,達(dá)到高處理性能。此系統(tǒng)實(shí)現(xiàn)了測(cè)試數(shù)據(jù)的分布式存儲(chǔ),同時(shí)使用了基于MapReduce的程序?qū)崿F(xiàn)了分布式的格式轉(zhuǎn)換功能,將STDF格式文件轉(zhuǎn)換為CSV格式文件,系統(tǒng)顯著提高了格式轉(zhuǎn)換的性能。

    系統(tǒng)總體架構(gòu)圖如圖4所示。系統(tǒng)主要由測(cè)試數(shù)據(jù)的分布式存儲(chǔ)與分布式格式轉(zhuǎn)換兩個(gè)部分組成。系統(tǒng)使用HDFS作為分布式并行處理的存儲(chǔ)平臺(tái),從FTP收集到的海量測(cè)試數(shù)據(jù)會(huì)被自動(dòng)分布到HDFS的數(shù)據(jù)節(jié)點(diǎn)中,然后,系統(tǒng)會(huì)利用Hadoop MapReduce對(duì)數(shù)據(jù)進(jìn)行分布式并行處理。

jsj1-t4.gif

    系統(tǒng)執(zhí)行的具體步驟如下:

    (1)數(shù)據(jù)采集。ATE收集的測(cè)試數(shù)據(jù)存儲(chǔ)在本地硬盤上,系統(tǒng)將會(huì)采集FTP上的所有STDF文件,并通過DFSClient程序?qū)⑽募蟼鞯紿DFS中,實(shí)現(xiàn)測(cè)試數(shù)據(jù)的分布式存儲(chǔ)。

    (2)數(shù)據(jù)處理。系統(tǒng)將HDFS中的數(shù)據(jù)傳遞給Map-Reduce框架,實(shí)現(xiàn)數(shù)據(jù)的分布式處理。這是本系統(tǒng)的主要工作。

    (3)數(shù)據(jù)返回。格式轉(zhuǎn)換完成后,數(shù)據(jù)將自動(dòng)上傳到HDFS中。

    步驟(2)中的數(shù)據(jù)格式轉(zhuǎn)換為本系統(tǒng)的主要工作部分。首先,通過程序?qū)y(cè)試數(shù)據(jù)文件的目錄路徑作為MapReduce程序的輸入,傳遞給MapReduce框架,也就是將HDFS中的測(cè)試數(shù)據(jù)分發(fā)到集群中的各個(gè)節(jié)點(diǎn);然后,系統(tǒng)將會(huì)利用Hadoop提供給MapReduce框架的文件緩存工具DistributedCache,在運(yùn)行任務(wù)之前,該軟件將會(huì)自動(dòng)被分發(fā)到每臺(tái)機(jī)器上的某個(gè)目錄中,這樣就無需預(yù)先在各個(gè)節(jié)點(diǎn)上放置格式轉(zhuǎn)換軟件,減少了工作量的同時(shí)提高了工作效率;最后,在map()函數(shù)中調(diào)用第三方軟件“StdfToCsv.exe”進(jìn)行格式轉(zhuǎn)換。由于考慮到數(shù)據(jù)實(shí)際并不需要在reduce階段進(jìn)行合并處理過程,因此,系統(tǒng)僅實(shí)現(xiàn)map階段,這樣不僅能夠避免在reduce階段對(duì)數(shù)據(jù)進(jìn)行合并,而且提升了系統(tǒng)的工作效率。

3 測(cè)試數(shù)據(jù)處理系統(tǒng)實(shí)現(xiàn)

3.1 測(cè)試數(shù)據(jù)在HDFS上的存儲(chǔ)實(shí)現(xiàn)

    測(cè)試數(shù)據(jù)文件將已“測(cè)試時(shí)間_LotID_WaferID”的格式進(jìn)行命名,DFS Client把測(cè)試數(shù)據(jù)上傳到HDFS中。

    圖5為DFS Client將STDF文件上傳到HDFS的流程圖。首先,打開本地文件的輸入流與HDFS的輸出流;然后,將STDF文件全部上傳的HDFS中,直到所有數(shù)據(jù)上傳完畢;最后,關(guān)閉輸入、輸出流。為了實(shí)現(xiàn)測(cè)試數(shù)據(jù)實(shí)時(shí)上傳到HDFS中,需要采用定時(shí)刷新檢測(cè)機(jī)制,將測(cè)試數(shù)據(jù)定時(shí)上傳到HDFS中。

jsj1-t5.gif

3.2 測(cè)試數(shù)據(jù)格式轉(zhuǎn)換實(shí)現(xiàn)

    應(yīng)用程序在JobConf中通過url(hdfs://)指定需要被緩存的文件,即“StdfToCsv.exe”文件。此時(shí)該文件已經(jīng)被存放在HDFS上。MapReduce會(huì)在任務(wù)開始之前,將該文件分發(fā)到Slave節(jié)點(diǎn)上,而且僅會(huì)為沒有該文件的Slave節(jié)點(diǎn)緩存文件,這樣可以節(jié)約網(wǎng)絡(luò)帶寬,提高系統(tǒng)的運(yùn)行效率。測(cè)試數(shù)據(jù)格式轉(zhuǎn)換實(shí)現(xiàn)過程如下:

    (1)數(shù)據(jù)格式轉(zhuǎn)換模塊使用InputFormat類中的Record-Reader方法從HDFS中讀取STDF文件。在該系統(tǒng)中,InputFormat主要承擔(dān)兩項(xiàng)工作,第一是預(yù)先向MapReduce框架提供map任務(wù)的數(shù)量信息,從而使MapReduce框架預(yù)先安排所有的map任務(wù);第二是讀取從原始測(cè)試數(shù)據(jù)集傳遞到map類中map()函數(shù)的記錄,這個(gè)函數(shù)通過RecordReader來執(zhí)行,RecordReader是由FileInputFormat提供,用來讀取原始文件,并將它傳遞給map()。

    (2)InputFormat將Key-Value對(duì)傳遞給mapper。mapper將會(huì)使用格式轉(zhuǎn)換軟件以完全分布式方式將STDF文件轉(zhuǎn)換為CSV文件,在mapper完成測(cè)試數(shù)據(jù)的格式轉(zhuǎn)換后,將結(jié)果傳遞給OutputFormat作為Key(文件名)和Value(文件內(nèi)容)。

    (3)mapper將Key-Value對(duì)傳遞給OutputFormat。也就是說,OutputFormat會(huì)將Key-Value對(duì)重新生成一個(gè)HDFS中的文件。

    本文設(shè)計(jì)了一個(gè)StdfInputFormat類來讀取STDF文件,另外還設(shè)計(jì)了StdfRecordReader類從StdfInputFormat讀出數(shù)據(jù)并且傳遞給mapper函數(shù)。

    MapReduce的輸入是存儲(chǔ)在HDFS中的STDF文件,一個(gè)STDF文件作為一個(gè)單獨(dú)的map輸入,也就是說,每個(gè)STDF文件為一個(gè)單獨(dú)的邏輯分割,不需要再進(jìn)行分割,即保證了每個(gè)STDF文件的獨(dú)立性與完整性。要實(shí)現(xiàn)此設(shè)計(jì),只需重寫FileInputFormat子類中的isSplitable()方法,將返回值設(shè)為False,就可以達(dá)到將每個(gè)STDF文件作為一個(gè)邏輯分割的目的。

    當(dāng)數(shù)據(jù)從HDFS被傳遞到mapper函數(shù)時(shí),由數(shù)據(jù)文件名和數(shù)據(jù)內(nèi)容作為Key-Value對(duì)。在整個(gè)MapReduce程序中,通過繼承mapper這個(gè)類來實(shí)現(xiàn)map,本文重寫map()方法,使得map()每次接收一個(gè)Key-Value對(duì),然后系統(tǒng)就對(duì)這個(gè)Key-Value對(duì)進(jìn)行處理,再分發(fā)出處理后的數(shù)據(jù)。

    mapper有setup()、map()、cleanup()和run()四個(gè)方法,其中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ā)到各個(gè)節(jié)點(diǎn)后,執(zhí)行軟件,對(duì)STDF文件進(jìn)行轉(zhuǎn)換。執(zhí)行命令如下:

    StdfToCsv.exe-stdf xxx.stdf-csv-o xxx

    “xxx”就是待轉(zhuǎn)換文件的名字,也就是Key值,因此,只需要將執(zhí)行命令放入map()函數(shù)即可。程序啟動(dòng)后,數(shù)據(jù)會(huì)以Key-Value對(duì)的形式傳輸?shù)健癝tdfToCsv.exe”軟件中進(jìn)行格式轉(zhuǎn)換。對(duì)于FileOutputFormat而言,與FileInputFormat情況一樣,本文同樣設(shè)計(jì)了StdfOutputFormat和StdfRecordWriter類來接收Key-Value對(duì)作為mapper的結(jié)果,結(jié)果將被輸出到HDFS中,最終實(shí)現(xiàn)海量測(cè)試數(shù)據(jù)的分布式格式轉(zhuǎn)換。

4 系統(tǒng)的測(cè)試與分析

    首先對(duì)測(cè)試數(shù)據(jù)格式轉(zhuǎn)換系統(tǒng)的正確性進(jìn)行驗(yàn)證,將20個(gè)STDF文件上傳到Hadoop集群中進(jìn)行格式轉(zhuǎn)換,將得到的CSV格式文件從HDFS中下載到本地,與在本地進(jìn)行格式轉(zhuǎn)換得到的CSV格式文件進(jìn)行對(duì)比,結(jié)果表明兩種方法得到的CSV格式文件完全一致。

    其次,為了驗(yàn)證格式轉(zhuǎn)換系統(tǒng)的性能,使用6組不同規(guī)模的數(shù)據(jù)集,如表1所示,每個(gè)原始STDF文件為100 MB左右。

jsj1-b1.gif

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

jsj1-b2.gif

jsj1-t6.gif

    表2及圖6顯示了各組數(shù)據(jù)集在格式轉(zhuǎn)換系統(tǒng)中的測(cè)試結(jié)果。從表及圖中可以看出,基于Hadoop的分布式格式轉(zhuǎn)換系統(tǒng)對(duì)于大量測(cè)試數(shù)據(jù)的格式轉(zhuǎn)換展現(xiàn)了非常出色的性能。當(dāng)數(shù)據(jù)集大小為1 GB,同時(shí)采用4個(gè)節(jié)點(diǎn)進(jìn)行格式轉(zhuǎn)換時(shí),效率比本地單機(jī)轉(zhuǎn)換提高了大約70%左右;而當(dāng)數(shù)據(jù)集的大小增加到30 GB,仍然采用4個(gè)節(jié)點(diǎn)進(jìn)行格式轉(zhuǎn)換時(shí),效率比單機(jī)轉(zhuǎn)換更是提高了75%之多。通過對(duì)比可以看出,在處理相同數(shù)據(jù)集時(shí),隨著集群內(nèi)節(jié)點(diǎn)數(shù)目的增長,時(shí)間會(huì)不斷減少,因此,在Hadoop集群上,采用MapReduce編程框架對(duì)數(shù)據(jù)進(jìn)行處理,在系統(tǒng)系能上會(huì)得到極大的提升。

5 結(jié)束語

    隨著集成電路測(cè)試領(lǐng)域的飛速發(fā)展,每天都會(huì)產(chǎn)生數(shù)以萬計(jì)的芯片測(cè)試數(shù)據(jù),在未來對(duì)測(cè)試數(shù)據(jù)進(jìn)行存儲(chǔ)與處理方面將會(huì)面臨很多困難。本文以此為背景,圍繞HDFS分布式文件系統(tǒng)與MapReduce分布式編程框架展開討論,重點(diǎn)研究了基于Hadoop的測(cè)試數(shù)據(jù)存儲(chǔ)與格式轉(zhuǎn)換系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)。

    隨著云計(jì)算與云存儲(chǔ)技術(shù)的不斷發(fā)展,測(cè)試數(shù)據(jù)在基于云平臺(tái)上的相關(guān)技術(shù)與研究也會(huì)越來越深入,同時(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é)點(diǎn)模型的研究[D].廣州:華南理工大學(xué),2011.

[3] 鮑彤,陳維鋒,盧磊.基于Hadoop的分布式集群平臺(tái)構(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)測(cè)試數(shù)據(jù)格式(STDF)文件的研究[J].電子元器件應(yīng)用,2009(4):70-73.

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