?

基于Hadoop的測試數據處理系統設計與實現*

2015-11-26 05:32劉有耀
電子技術應用 2015年7期
關鍵詞:數據格式測試數據分布式

劉有耀,李 彬

(西安郵電大學 專用集成電路設計中心,陜西 西安710061)

基于Hadoop的測試數據處理系統設計與實現*

劉有耀,李 彬

(西安郵電大學 專用集成電路設計中心,陜西 西安710061)

提出一種基于Hadoop軟件框架進行海量測試數據處理的解決方案。在深入研究Hadoop分布式系統構架、HDFS分布式文件系統以及MapReduce分布式編程模型的基礎上,設計并實現了二進制測試數據文件到HDFS的傳輸機制以及基于MapReduce的測試數據分布式格式轉換系統。最后搭建實驗環境,驗證了整個系統的正確性并對分布式格式轉換系統進行性能評估。與本地單機相比,系統在處理海量數據時具有更高的效率及更好的可拓展性。

半導體測試數據;分布式存儲;Hadoop;MapReduce

0 引言

在半導體業日漸成熟的今天,半導體測試已逐漸成為整條產業鏈中必不可少的重要環節。與此同時,計算機科學與技術的不斷發展同樣為半導體測試提供了全方位的支持。集成電路規模的不斷增大,使得所要測試的項目隨之增多,同時,測試數據量也在不斷增加。如何對海量的測試數據進行有效的存儲以及處理成為集成電路測試數據研究領域里的熱門問題。

本文首先介紹了現階段主流的大數據解決方案Hadoop的相關技術,詳細研究 Hadoop相關組件的功能和架構。在此基礎上,設計并且實現了基于Hadoop的測試數據分布式處理系統。最后搭建實際的測試環境,對整個系統進行測試,驗證了平臺的有效性和穩定性,并對結果進行了分析。

1 分布式系統相關技術研究

1.1 Hadoop

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

圖1 Hadoop架構

1.2 HDFS

HDFS[4]的分布式文件系統架構如圖 2所示。其中,NameNode的工作是管理文件系統的命名空間,它是整個系統的總控節點,會記錄每個文件的數據塊在各個DataNode里的位置以及副本的信息,除此之外,它還需要記錄每個文件具體所在的集群節點。另外,NameNode還要協調客戶端對文件的訪問,當有節點需要訪問某個文件時,它會先去訪問NameNode來獲取此文件的位置信息,獲取信息后,它就可以與DataNode直接通信,來獲取數據塊[5]。

圖2 HDFS系統架構

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

1.3 MapReduce

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

圖3 MapReduce工作原理

2 測試數據處理系統設計

本文所研究的測試數據是基于泰瑞達公司的J750自動測試機,通過對集成電路測試得到標準測試數據格式文件 (Standard Test Data Format,STDF)[8]。STDF是一種由泰瑞達公司開發的通過自動測試機來收集測試數據的文件格式,它具有簡單、靈活、便捷的特點,為了最小化地占用存儲空間,它被設計為二進制文件格式,由于很容易被快速且穩定地進行數據格式轉換,困此逐漸被很多自動測試機供應商所接受。

隨著芯片制造工廠的不斷涌現及自動測試機數量的不斷增加,產生的測試數據量將是海量的。困此,對測試數據處理時產生的時間損耗及運算資源的需求量會不斷增大。

本文基于MapReduce設計并實現一個測試數據分布式處理系統,該系統通過對可擴展運算資源的集中使用,達到高處理性能。此系統實現了測試數據的分布式存儲,同時使用了基于 MapReduce的程序實現了分布式的格式轉換功能,將STDF格式文件轉換為CSV格式文件,系統顯著提高了格式轉換的性能。

系統總體架構圖如圖4所示。系統主要由測試數據的分布式存儲與分布式格式轉換兩個部分組成。系統使用HDFS作為分布式并行處理的存儲平臺,從FTP收集到的海量測試數據會被自動分布到HDFS的數據節點中,然后,系統會利用Hadoop MapReduce對數據進行分布式并行處理。

圖4 系統架構圖

系統執行的具體步驟如下:

(1)數據采集。ATE收集的測試數據存儲在本地硬盤上,系統將會采集 FTP上的所有 STDF文件,并通過DFSClient程序將文件上傳到HDFS中,實現測試數據的分布式存儲。

(2)數據處理。系統將HDFS中的數據傳遞給Map-Reduce框架,實現數據的分布式處理。這是本系統的主要工作。

(3)數據返回。格式轉換完成后,數據將自動上傳到HDFS中。

步驟(2)中的數據格式轉換為本系統的主要工作部分。首先,通過程序將測試數據文件的目錄路徑作為MapReduce程序的輸入,傳遞給MapReduce框架,也就是將HDFS中的測試數據分發到集群中的各個節點;然后,系統將會利用Hadoop提供給MapReduce框架的文件緩存工具DistributedCache,在運行任務之前,該軟件將會自動被分發到每臺機器上的某個目錄中,這樣就無需預先在各個節點上放置格式轉換軟件,減少了工作量的同時提高了工作效率;最后,在map()函數中調用第三方軟件“StdfToCsv.exe”進行格式轉換。由于考慮到數據實際并不需要在 reduce階段進行合并處理過程,困此,系統僅實現map階段,這樣不僅能夠避免在reduce階段對數據進行合并,而且提升了系統的工作效率。

3 測試數據處理系統實現

3.1 測試數據在HDFS上的存儲實現

測試數據文件將已“測試時間 _LotID_WaferID”的格式進行命名,DFS Client把測試數據上傳到HDFS中。

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

圖5 STDF文件上傳到HDFS流程

3.2 測試數據格式轉換實現

應用程序在 JobConf中通過 url(hdfs://)指定需要被緩存的文件,即“StdfToCsv.exe”文件。此時該文件已經被存放在HDFS上。MapReduce會在任務開始之前,將該文件分發到Slave節點上,而且僅會為沒有該文件的Slave節點緩存文件,這樣可以節約網絡帶寬,提高系統的運行效率。測試數據格式轉換實現過程如下:

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

(2)InputFormat將Key-Value對傳遞給 mapper。mapper將會使用格式轉換軟件以完全分布式方式將 STDF文件轉換為CSV文件,在 mapper完成測試數據的格式轉換后,將結果傳遞給 OutputFormat作為 Key(文件名)和Value(文件內容)。

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

本文設計了一個 StdfInputFormat類來讀取 STDF文件,另外還設計了 StdfRecordReader類從 StdfInputFormat讀出數據并且傳遞給mapper函數。

MapReduce的輸入是存儲在 HDFS中的 STDF文件,一個STDF文件作為一個單獨的 map輸入,也就是說,每個STDF文件為一個單獨的邏輯分割,不需要再進行分割,即保證了每個STDF文件的獨立性與完整性。要實現此設計,只需重寫 FileInputFormat子類中的 isS-plitable()方法,將返回值設為 False,就可以達到將每個STDF文件作為一個邏輯分割的目的。

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

mapper有 setup()、map()、cleanup()和 run()四個方法,其中 setup()一般是用來進行一些 map()前的準備工作,map()則一般承擔主要的處理工作,cleanup()則負責收尾工作,如關閉文件或者執行 map()后的 Key-Value分發等。在本系統中,setup()方法用來執行 DistributedCache,將第三方軟件分發到各個節點后,執行軟件,對STDF文件進行轉換。執行命令如下:

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

天脊集團是中國硝酸磷型復合肥的締造者。正因為如此,“天脊化肥就要打造中國硝基肥第一品牌”這是天脊集團確定的天脊產品定位、實施的品牌戰略目標。

“xxx”就是待轉換文件的名字,也就是Key值,困此,只需要將執行命令放入map()函數即可。程序啟動后,數據會以 Key-Value對的形式傳輸到“StdfToCsv.exe”軟件中進行格式轉換。對于FileOutputFormat而言,與 FileInputFormat情況一樣,本文同樣設計了 StdfOutputFormat和StdfRecordWriter類來接收Key-Value對作為 mapper的結果,結果將被輸出到 HDFS中,最終實現海量測試數據的分布式格式轉換。

4 系統的測試與分析

首先對測試數據格式轉換系統的正確性進行驗證,將 20個 STDF文件上傳到 Hadoop集群中進行格式轉換,將得到的CSV格式文件從HDFS中下載到本地,與在本地進行格式轉換得到的CSV格式文件進行對比,結果表明兩種方法得到的CSV格式文件完全一致。

其次,為了驗證格式轉換系統的性能,使用6組不同規模的數據集,如表1所示,每個原始STDF文件為100 MB左右。

表1 測試數據集

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

表2 轉換時間測試結果 (單位:s)

圖6 轉換時間測試結果

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

5 結束語

隨著集成電路測試領域的飛速發展,每天都會產生數以萬計的芯片測試數據,在未來對測試數據進行存儲與處理方面將會面臨很多困難。本文以此為背景,圍繞HDFS分布式文件系統與 MapReduce分布式編程框架展開討論,重點研究了基于Hadoop的測試數據存儲與格式轉換系統的設計與實現。

隨著云計算與云存儲技術的不斷發展,測試數據在基于云平臺上的相關技術與研究也會越來越深入,同時為越來越多的用戶提供便利。

[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節點模型的研究[D].廣州:華南理工大學,2011.

[3]鮑彤,陳維鋒,盧磊.基于Hadoop的分布式集群平臺構建方法研究[J].信息通信,2013(8):21-22.

[4]BORTHAKUR D.Hadoop distributed file system[EB/OL].(2007)[2015].http://www.hadoop.org.cn/resource.

[5]郝向濤.基于 Hadoop的分布式文件系統技術分析及應用[D].武漢:武漢理工大學,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]袁薇.標準測試數據格式(STDF)文件的研究[J].電子元器件應用,2009(4):70-73.

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)

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.

semiconductor testing data;distributed storage;Hadoop;MapReduce

TP311

A

10.16157/j.issn.0258-7998.2015.07.039

劉有耀,李彬.基于Hadoop的測試數據處理系統設計與實現[J].電子技術應用,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

2015-04-10)

劉有耀(1975-),男,博士,副教授,主要研究方向:計算機圖形學、圖形處理器、集成電路設計、片上網絡。

陜西省自然科學基金(2014JM8311)

李彬(1989-),通信作者,男,碩士研究生,主要研究方向:計算機圖形學、半導體集成電路測試、大數據、云計算,E-mail:382181495@qq.com。

猜你喜歡
數據格式測試數據分布式
測試數據管理系統設計與實現
分布式光伏熱錢洶涌
分布式光伏:爆發還是徘徊
基于RFID的戶外廣告監管系統的設計與實現
基于自適應粒子群優化算法的測試數據擴增方法
空間co-location挖掘模式在學生體能測試數據中的應用
基于DDS的分布式三維協同仿真研究
基于特征庫的測井數據格式自動識別與轉換方法
西門子 分布式I/O Simatic ET 200AL
基于ArcGIS的規劃數據格式轉換研究
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合