亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        一種新型的Hadoop本地化測(cè)試模型

        2013-07-17 11:20:32王曉華
        關(guān)鍵詞:測(cè)試工具環(huán)境變量插件

        王曉華

        (蚌埠醫(yī)學(xué)院 科研處,安徽 蚌埠 233000)

        一種新型的Hadoop本地化測(cè)試模型

        王曉華

        (蚌埠醫(yī)學(xué)院 科研處,安徽 蚌埠 233000)

        MapReduce是Hadoop核心處理程序.但是目前軟件界更多是對(duì)MapReduce程序的編寫,而對(duì)其測(cè)試方法還是空白,依舊使用的是基于JUnit為基礎(chǔ)的測(cè)試插件.而JUnit是為了軟件進(jìn)行單機(jī)測(cè)試而誕生的一種測(cè)試插件,其對(duì)分布式測(cè)試的支持性很差.同時(shí)由于其天生的狹隘性,對(duì)大規(guī)模數(shù)據(jù)進(jìn)行測(cè)試根本是不可能進(jìn)行.本文利用Hadoop自帶的抽象類,通過欺騙注入,給Hadoop設(shè)計(jì)一種通過營(yíng)造一個(gè)運(yùn)行在單機(jī)上的偽集群環(huán)境模型,從而使得MapReduce在不借助外部其他插件支持的情況下可以獨(dú)立完成全部運(yùn)行并將結(jié)果輸出在本地磁盤空間.

        分布式計(jì)算;hadoop;MapReduce;軟件測(cè)試

        1 引言

        面對(duì)現(xiàn)代社會(huì)數(shù)據(jù)信息高速增長(zhǎng),數(shù)據(jù)分析與設(shè)計(jì)人員迫切地希望一種能夠?qū)Υ笠?guī)模數(shù)據(jù)進(jìn)行分析與處理的系統(tǒng).但是由于往往數(shù)據(jù)的日常產(chǎn)生是以G B為單位,因此對(duì)于其分析進(jìn)而計(jì)算并不是一件非常容易的事.而Hadoop為了解決單機(jī)對(duì)大數(shù)據(jù)分析計(jì)算的不能夠有效及時(shí)處理這一缺陷而誕生的.

        Hadoop是一種新興的分布式計(jì)算系統(tǒng)框架,由Apache基金會(huì)開發(fā).其主要是為了解決大規(guī)模分布式計(jì)算模式下的,讓使用者不必要知道底層運(yùn)算的細(xì)節(jié)的情況下,充分利用集群計(jì)算機(jī)的強(qiáng)大處理能力進(jìn)行數(shù)據(jù)的存儲(chǔ)與計(jì)算. Hadoop的構(gòu)成主要是由一個(gè)底層分布式文件存儲(chǔ)系統(tǒng)以及運(yùn)行在存儲(chǔ)系統(tǒng)之上的一個(gè)MapReduce處理程序構(gòu)成.其中H D F S主要是負(fù)責(zé)在集群的計(jì)算機(jī)存儲(chǔ)硬盤上重新構(gòu)建出一個(gè)基于Java虛擬機(jī)的一種集群化存儲(chǔ)結(jié)構(gòu),把集群中所有可利用磁盤空間組成一個(gè)巨大的偽磁盤空間供Hadoop使用.而MapReduce在此之上則通過充分調(diào)用集群內(nèi)各個(gè)計(jì)算機(jī)所擁有的的獨(dú)立資源進(jìn)行分布式并行數(shù)據(jù)處理,為使用者提供了充足的可使用資源,并且由于其架構(gòu)本身就是低耦合性為特性,因此可以很容易的進(jìn)行數(shù)據(jù)擴(kuò)展.

        隨著“云計(jì)算”這一新興數(shù)據(jù)處理模型的日益推廣,Hadoop作為實(shí)現(xiàn)“云計(jì)算”的底層實(shí)現(xiàn)框架也越來越深入人心.隨之而來的就是Hadoop核心處理程序MapReduce的大規(guī)模應(yīng)用.但是MapReduce程序設(shè)計(jì)廣泛推廣應(yīng)用的基礎(chǔ)上,存在一個(gè)非常嚴(yán)重的問題,就是目前缺乏對(duì)MapReduce有效的測(cè)試工具.而且對(duì)測(cè)試工具的模型設(shè)計(jì)基本上是空白,因此本文提出了一種基于本地化的測(cè)試可用的MapReduce測(cè)試模型.

        2 MapReduce測(cè)試存在的問題

        Hadoop是使用Java語言所搭建的大規(guī)模數(shù)據(jù)處理框架,因此對(duì)其核心處理程序的設(shè)計(jì)我們首選是Java程序測(cè)試框架.MRUnit可以較好的為我們解決極小量數(shù)據(jù)處理的測(cè)試.其依托于JUnit來對(duì)程序進(jìn)行測(cè)試運(yùn)算,通過斷言計(jì)算值與期望值之間的一致性為我們提供特定值的測(cè)試結(jié)果.此種結(jié)果在一定程度上是準(zhǔn)確且可信的,但是對(duì)于數(shù)據(jù)進(jìn)行分析,特別是大規(guī)模數(shù)據(jù)分析,如果測(cè)試數(shù)據(jù)過于狹隘,往往并不能得到有效可信的結(jié)果.而MRUnit則是繼承自JUnit測(cè)試插件.JUnit的使用本身是為了單機(jī)程序測(cè)試而創(chuàng)造的測(cè)試工具,因此MRUnit在誕生之處就先天具有狹隘性,并不能為集群環(huán)境的數(shù)據(jù)測(cè)試提供支持.

        而將未經(jīng)測(cè)試的MapReduce程序上傳到集群環(huán)境中進(jìn)行測(cè)試本身就是一種極大的冒險(xiǎn).而且相對(duì)本地環(huán)境的測(cè)試,其配置更為復(fù)雜,影響因素較多,無法能夠簡(jiǎn)單的實(shí)現(xiàn)對(duì),MapReduce程序進(jìn)行測(cè)試.同時(shí)目前軟件界還沒有專門文獻(xiàn)證實(shí)或關(guān)于直接在云計(jì)算集群系統(tǒng)中運(yùn)行MapReduce的測(cè)試案例及測(cè)試結(jié)果出現(xiàn).

        為了解決MapReduce程序使用MRUnit進(jìn)行測(cè)試無法對(duì)大規(guī)模數(shù)據(jù)進(jìn)行測(cè)試分析,同時(shí)又不推薦直接向程序上傳到集群環(huán)境中進(jìn)行測(cè)試的問題,我們自己設(shè)計(jì)了一種的基于本地磁盤系統(tǒng)的在單機(jī)上進(jìn)行文件測(cè)試方法用以解決難以對(duì)MapReduce進(jìn)行測(cè)試的難題.

        3 測(cè)試分析

        Java程序是一種面向?qū)ο蟮某绦蛟O(shè)計(jì)語言,其設(shè)計(jì)普遍思路是將實(shí)物抽象成一個(gè)抽象的數(shù)據(jù)模型來進(jìn)行操縱.而抽象的數(shù)據(jù)模型在Java程序設(shè)計(jì)中以類的形式表現(xiàn).而Hadoop的分布式框架是由Java語言構(gòu)成.因此,我們?cè)趯?duì)分布式框架進(jìn)行測(cè)試的時(shí)候,應(yīng)該遵循Java語言這一特性,更多的使用類進(jìn)行我們需要的測(cè)試.而對(duì)于測(cè)試類的來歷我們偏向于使用Hadoop自帶的原生類.因?yàn)橄鄬?duì)于使用外部測(cè)試框架或輔助文件包來說,使用原生類能為我們帶來更具有穩(wěn)定性及健壯性的支持.在這里我們選擇使用的是Configured類.通過分析Hadoop的源代碼我們可以知道,Configured是繼承自Configurable接口的一個(gè)實(shí)現(xiàn)類,主要作用是對(duì)Hadoop設(shè)置一個(gè)可供運(yùn)行的環(huán)境變量.這里的環(huán)境變量指的是基于Java虛擬機(jī)環(huán)境系統(tǒng)下的一種Java運(yùn)行環(huán)境.我們知道Java本身具有平臺(tái)無關(guān)性的特點(diǎn).而對(duì)于Hadoop來說,其本身的運(yùn)行環(huán)境也是一種基于Java虛擬機(jī)的集群式分布環(huán)境,此種環(huán)境也是Java語言構(gòu)建的運(yùn)行環(huán)境,因此可以通過獲得本地的運(yùn)行環(huán)境從而修改和替換分布式的運(yùn)行環(huán)境,因此如果想在本地磁盤環(huán)境下進(jìn)行MapReduce程序測(cè)試的話,那么獲得本地環(huán)境設(shè)置是我們需要解決的重點(diǎn)問題.

        對(duì)于環(huán)境變量的獲取,需要獲取當(dāng)前運(yùn)行程序的環(huán)境變量并進(jìn)行欺騙性注入實(shí)現(xiàn)一種對(duì)于MapReduce驗(yàn)證的欺騙.為了解決此目的,我們選擇了Tool接口.

        Tool接口本身實(shí)現(xiàn)了兩個(gè)方法,分別是getConf與set-Conf.其作用是獲取當(dāng)前運(yùn)行環(huán)境的一個(gè)環(huán)境變量.在這里我們可以通過獲取當(dāng)前的環(huán)境變量注入到MapReduce中,實(shí)驗(yàn)結(jié)果證明是可行的.

        4 實(shí)驗(yàn)環(huán)境

        詞頻統(tǒng)計(jì)是測(cè)試Hadoop運(yùn)算性能的既簡(jiǎn)單又有效的程序之一,主要是統(tǒng)計(jì)文本文件中每個(gè)單詞出現(xiàn)的次數(shù).具體的實(shí)驗(yàn)運(yùn)行環(huán)境如下:

        CPU:XEON5620

        內(nèi)存/主硬盤:4GB/500G7200 r/min

        操作系統(tǒng):Ubuntu11.10

        測(cè)試工具:Eclipse 3.4.1

        測(cè)試數(shù)據(jù):hadoop0.20.2自帶單詞統(tǒng)計(jì)樣本

        5 代碼設(shè)計(jì)

        本測(cè)試中主要是為了對(duì)MapReduce的本地化運(yùn)行模型進(jìn)行測(cè)試,因此在MapReduce的運(yùn)算模型選擇上,更多采取了一些Hadoop自帶的演示程序進(jìn)行測(cè)試,但是由于新老A P I的交接原因,重寫了所有MapReduce代碼.

        對(duì)于MapReduce來說,其自定義的Mapper與Reduce設(shè)定是重中之重.我們重寫了經(jīng)典的字母計(jì)數(shù)的MapReduce程序,部分代碼如下所示:

        這里分別使用了新API進(jìn)行Map與Reduce的設(shè)置,這里不做過多程序,而對(duì)于主要環(huán)境獲取來說,需要使用自定義的含有main方法的程序?qū)apReduce進(jìn)行驅(qū)動(dòng)執(zhí)行.下面是程序部分模型建立代碼:

        從代碼片段我們可以看到,對(duì)于傳統(tǒng)的Configuration的對(duì)象獲取,由過去產(chǎn)生對(duì)當(dāng)前環(huán)境變量的獲取轉(zhuǎn)為獲取程序所執(zhí)行環(huán)境變量,并根據(jù)獲取的環(huán)境變量注入Hadoop默認(rèn)的執(zhí)行驅(qū)動(dòng)中,因此可以通過欺騙的形式運(yùn)行MapReduce運(yùn)行環(huán)境.

        6 運(yùn)行過程與輸出驗(yàn)證

        對(duì)于測(cè)試的運(yùn)行我們使用的是Eclipse,只需使用傳統(tǒng)的軟件運(yùn)行方式即可,而無需使用專門針對(duì)軟件測(cè)試方式的JUnit模式進(jìn)行運(yùn)行、對(duì)于結(jié)果的驗(yàn)證,因?yàn)槲覀冊(cè)诒镜卮疟P上模擬Hadoop環(huán)境進(jìn)行處理,生成的結(jié)果文件與集群環(huán)境下HDFS相類似,最終在本地磁盤空間的制定路徑上生成名為“part-r-00000”的內(nèi)容.part-r-00000并不帶有后綴名,究其原因是因?yàn)镠DFS默認(rèn)對(duì)此類文件的支持.為了解決此問題,我們使用了“NOTEPAD++”這一開源免費(fèi)的文本處理工具,可以直接將結(jié)果轉(zhuǎn)碼后顯示.

        7 測(cè)試結(jié)論

        對(duì)于使用此新型本地化檢測(cè)模型我們可以得到三個(gè)顯著結(jié)論:

        (1)Hadoop本身的運(yùn)行環(huán)境是構(gòu)建在Java的虛擬機(jī)環(huán)境之上,可以通過修改Configuration獲取的路徑從而欺騙Hadoop使用不同的虛擬機(jī)環(huán)境.

        (2)Hadoop的存儲(chǔ)底層是實(shí)現(xiàn)是使用HDFS系統(tǒng),此系統(tǒng)也遵循一般的磁盤存儲(chǔ)原理而僅僅是通過修改鏈接傳輸協(xié)議而構(gòu)成的一個(gè)偽集群環(huán)境.HDFS的底層實(shí)現(xiàn)仍舊是一般的磁盤系統(tǒng).

        (3)MapReduce雖然是運(yùn)行在Hadoop集群環(huán)境之上的數(shù)據(jù)處理程序,但是仍舊可以通過偽造環(huán)境變量的方式使之運(yùn)行在本地計(jì)算機(jī)系統(tǒng)之上,而無需對(duì)其進(jìn)行專門配置,這點(diǎn)為學(xué)習(xí)或者測(cè)試MapReduce的程序設(shè)計(jì)人員提供了一條非常好的測(cè)試思路.

        〔1〕White T.Hadoop:the definitiveguide[M].南京:東南大學(xué)出版社,2011.203-204.

        〔2〕Apache.Single node setup[EB/OL].(2012-02-14)[2012-05 -10].http//hadoop.apache.org/common/docs/r1.0.1/ single_node_setup.html.

        〔3〕Borthakur D.HDFS architectureguide[EB/OL].(2011-04-12[2012-05-10]http://hadoop.apache.org/hdfs/docs/ current/hdfs_design.Html.

        〔4〕BORTHAKUR D,GRAY J,SARMA J S,et al.A-pache hadoopgoes realtime at facebook[C]//Proc of International Conference on Management of Data New York:ACM Press,2011:1071-1080.

        〔5〕李建江.MapReduce并行編程模型研究綜述[J].電子學(xué)報(bào),2011(11):2636-2641.

        TP309

        A

        1673-260 X(2013)10-0020-02

        安徽省科技創(chuàng)新基金資助(20120752Z);蚌埠醫(yī)學(xué)院科研基金資助(BY1024)

        猜你喜歡
        測(cè)試工具環(huán)境變量插件
        基于最大熵模型的云南思茅松潛在分布區(qū)
        邊緣智力兒童及其智力測(cè)試工具的研究進(jìn)展
        從桌面右鍵菜單調(diào)用環(huán)境變量選項(xiàng)
        自編插件完善App Inventor與樂高機(jī)器人通信
        電子制作(2019年22期)2020-01-14 03:16:34
        徹底弄懂Windows 10環(huán)境變量
        Http并發(fā)連接測(cè)試工具
        基于三階段DEA—Malmquist模型的中國(guó)省域城鎮(zhèn)化效率測(cè)度及其收斂分析
        MapWindowGIS插件機(jī)制及應(yīng)用
        福祿克推出先進(jìn)的連接式測(cè)試工具系統(tǒng)
        基于Revit MEP的插件制作探討
        精品人妻av一区二区三区| 日本加勒比东京热日韩| 日韩精品欧美激情国产一区| 日本熟妇视频在线中出| 男女调情视频在线观看| 乱子轮熟睡1区| 亚洲精品92内射| 91产精品无码无套在线| 亚洲中文字幕第二十三页| 亚洲国产一区二区中文字幕| 色综合天天综合网国产成人网| 狠狠综合久久av一区二区| 精品性高朝久久久久久久| 亚洲成a人片在线观看高清| 午夜视频在线观看日本| 国产精选自拍视频网站| 精品少妇一区二区三区免费观| a一区二区三区乱码在线 | 欧洲| 日韩av无码午夜福利电影| 亚洲国产91精品一区二区| 97色伦图片97综合影院| 99久久精品日本一区二区免费| 免费看国产成年无码av| 青春草在线观看免费视频| 一区二区三区午夜视频在线| 亚洲日韩国产av无码无码精品| 青青久在线视频免费观看| 在线a人片免费观看国产| 亚洲av毛片在线播放| 无码爽视频| 亚洲一区二区三区中文字幂| 国产国语对白一区二区三区| 全程国语对白资源在线观看| 久久精品国产91精品亚洲| 日韩人妻无码精品久久免费一| 久久91综合国产91久久精品| 人妻熟女妇av北条麻记三级| 亚洲第一网站免费视频| 久久国产精品99精品国产| 国产免费久久精品99re丫y| 日本一区二区啪啪视频|