證輸出數(shù)據(jù)集合中的輸出信息與監(jiān)控三元組集合中對應(yīng)的輸出信息是否相同即 可驗證處理數(shù)據(jù)的正確性。綜上所述,本申請?zhí)岢龅尿炞CMapReduce環(huán)境下處理數(shù)據(jù)正確 性的方法,可以減少實現(xiàn)驗證MapReduce環(huán)境下處理數(shù)據(jù)正確性的人工成本和實現(xiàn)時間。
[0128] 下面介紹本申請驗證MapReduce環(huán)境下處理數(shù)據(jù)正確性的裝置。圖2是本申請 驗證MapReduce環(huán)境下處理數(shù)據(jù)正確性的裝置實施例的組成結(jié)構(gòu)圖。如圖2所示,所述驗 證MapReduce環(huán)境下處理數(shù)據(jù)正確性的裝置,包括:處理程序準備單元21、三元組生成單元 22、監(jiān)控三元組集合單元23、輸出數(shù)據(jù)集合單元24、驗證單元25。其中,
[0129] 所述處理程序準備單元21,用于為MapReduce源代碼加入劫持代碼,并生成帶有 劫持代碼的數(shù)據(jù)處理程序。
[0130] 圖3是本申請裝置實施例中處理程序準備單元的組成結(jié)構(gòu)圖。如圖3所示,所述 處理程序準備單元21,包括:代碼修改單元211、程序生成單元212。其中,
[0131] 所述代碼修改單元211,用于為MapReduce源代碼加入記錄輸入數(shù)據(jù)、輸出數(shù)據(jù)及 數(shù)據(jù)標識的劫持代碼;
[0132] 所述程序生成單元212,用于將代碼修改單元211輸出的加入了劫持代碼的 MapReduce代碼進行編譯,生成帶有劫持代碼的數(shù)據(jù)處理程序;
[0133] 所述三元組生成單元22,用于運行所述處理程序準備單元21中的數(shù)據(jù)處理程序 對輸入數(shù)據(jù)進行數(shù)據(jù)處理,并記錄每一組輸入數(shù)據(jù)、輸出數(shù)據(jù)和覆蓋信息,生成三元組數(shù) 據(jù)。
[0134] 圖4是本申請裝置實施例中三元組生成單元的組成結(jié)構(gòu)圖。如圖4所示,所述三 元組生成單元22,包括:數(shù)據(jù)輸入單元221、程序處理單元222、三元組組成單元223。其中,
[0135] 所述數(shù)據(jù)輸入單元221,用于讀入需要進行數(shù)據(jù)處理的輸入數(shù)據(jù);
[0136] 所述程序處理單元222,用于對數(shù)據(jù)輸入單元221中讀入的數(shù)據(jù)利用帶有劫持代 碼的數(shù)據(jù)梳理程序進行處理,得到輸出數(shù)據(jù),并記錄輸入數(shù)據(jù)、輸出數(shù)據(jù)和覆蓋信息;
[0137] 所述三元組組成單元223,用于將對應(yīng)的輸入數(shù)據(jù)、輸出數(shù)據(jù)和覆蓋信息設(shè)定為三 元組數(shù)據(jù)。
[0138] 所述監(jiān)控三元組集合單元23,用于利用監(jiān)控程序?qū)λ鋈M生成單元22進行 掃描,讀取所述三元組生成單元22生成的三元組數(shù)據(jù),并去除覆蓋信息相同的三元組數(shù) 據(jù),形成監(jiān)控三元組集合。
[0139] 圖5是本申請裝置實施例中監(jiān)控三元組集合單元的組成結(jié)構(gòu)圖。如圖5所示,所 述監(jiān)控三元組集合單元23,可以包括:數(shù)據(jù)讀取單元231、信息對比單元232、三元組存放單 元233。其中,
[0140] 所述數(shù)據(jù)讀取單元231,用于讀入三元組生成單元22生成的新的三元組數(shù)據(jù);
[0141] 所述信息對比單元232,用于將數(shù)據(jù)讀取單元231中三元組數(shù)據(jù)的覆蓋信息與三 元組存放單元233中存放的每一個三元組數(shù)據(jù)的覆蓋信息進行對比;
[0142] 所述三元組存放單元233,用于將信息對比單元232中對比結(jié)果是讀入的三元組 數(shù)據(jù)中覆蓋信息與存放單元233已存放的三元組集合中每一個三元組數(shù)據(jù)的覆蓋信息都 不完全相同的三元組數(shù)據(jù)存放至三元組集合中,形成監(jiān)控三元組集合。
[0143] 所述輸出數(shù)據(jù)集合單元24,用于在驗證處理數(shù)據(jù)正確性時,將所述三元組存放單 元234形成的監(jiān)控三元組集合中的輸入數(shù)據(jù)返回至三元組生成單元22進行數(shù)據(jù)處理,并將 此時的輸出數(shù)據(jù)組成輸出數(shù)據(jù)集合。
[0144] 圖6是本申請裝置實施例中輸出數(shù)據(jù)集合單元的組成結(jié)構(gòu)圖。如圖6所示,所述 輸出數(shù)據(jù)集合單元24,包括:輸入數(shù)據(jù)返回單元241、集合形成單元242。其中,
[0145] 所述輸入數(shù)據(jù)返回單元241,用于將監(jiān)控三元組集合中的每一組輸入數(shù)據(jù)返回至 三元組生成單元22重新進行數(shù)據(jù)處理,得到新的輸出數(shù)據(jù);
[0146] 所述集合形成單元242,用于將新的輸出數(shù)據(jù)組成輸出數(shù)據(jù)集合。
[0147] 所述驗證單元25,用于將輸出數(shù)據(jù)集合單元24生成的輸出數(shù)據(jù)集合中的每一條 輸出數(shù)據(jù)與監(jiān)控三元組集合中對應(yīng)的輸出數(shù)據(jù)進行比對,驗證輸出數(shù)據(jù)集合中的數(shù)據(jù)是否 正確。
[0148] 本申請?zhí)岢龅尿炞CMapReduce環(huán)境下處理數(shù)據(jù)正確性的裝置實施例與本申請?zhí)?出的驗證MapReduce環(huán)境下處理數(shù)據(jù)正確性的方法實施例相對應(yīng),可以實現(xiàn)本申請的方法 實施例,達到減少實現(xiàn)驗證MapReduce環(huán)境下處理數(shù)據(jù)正確性的人工成本和實現(xiàn)時間的效 果。
[0149] 在20世紀90年代,對于一個技術(shù)的改進可以很明顯地區(qū)分是硬件上的改進(例 如,對二極管、晶體管、開關(guān)等電路結(jié)構(gòu)的改進)還是軟件上的改進(對于方法流程的改進)。 然而,隨著技術(shù)的發(fā)展,當今的很多方法流程的改進已經(jīng)可以視為硬件電路結(jié)構(gòu)的直接改 進。設(shè)計人員幾乎都通過將改進的方法流程編程到硬件電路中來得到相應(yīng)的硬件電路結(jié) 構(gòu)。因此,不能說一個方法流程的改進就不能用硬件實體模塊來實現(xiàn)。例如,可編程邏輯 器件(Programmable Logic Device, PLD)(例如現(xiàn)場可編程門陣列(Field Programmable Gate Array, FPGA))就是這樣一種集成電路,其邏輯功能由用戶對器件編程來確定。由設(shè) 計人員自行編程來把一個數(shù)字系統(tǒng)"集成"在一片PLD上,而不需要請芯片制造廠商來設(shè)計 和制作專用的集成電路芯片2。而且,如今,取代手工地制作集成電路芯片,這種編程也多 半改用"邏輯編譯器(logic compiler)"軟件來實現(xiàn),它與程序開發(fā)撰寫時所用的軟件編 譯器相類似,而要編譯之前的原始代碼也得用特定的編程語言來撰寫,此稱之為硬件描述 語言(Hardware Description Language, HDL),而HDL也并非僅有一種,而是有許多種,如 ABEL (Advanced Boolean Expression Language)、AHDL (Altera Hardware Description Language )> Confluence > CUPL (Corne 11 University Programming Language)、HDCal、JHDL (Java Hardware Description Language)>Lava>LoIa>MyHDL>PALASM>RHDL(Ruby Hardware Description Language)等,目前最普遍使用的是 VHDL (Very-High-Speed Integrated Circuit Hardware Description Language)與 Verilog2。本領(lǐng)域技術(shù)人員也應(yīng)該清楚,只 需要將方法流程用上述幾種硬件描述語言稍作邏輯編程并編程到集成電路中,就可以很容 易得到實現(xiàn)該邏輯方法流程的硬件電路。
[0150] 控制器可以按任何適當?shù)姆绞綄崿F(xiàn),例如,控制器可以采取例如微處理器或處理 器以及存儲可由該(微)處理器執(zhí)行的計算機可讀程序代碼(例如軟件或固件)的計算機 可讀介質(zhì)、邏輯門、開關(guān)、專用集成電路(Application Specific Integrated Circuit, ASIC)、可編程邏輯控制器和嵌入微控制器的形式,控制器的例子包括但不限于以下微控制 器:ARC625D、Atmel AT91SAM、Microchip PIC18F26K20 以及 Silicone Labs C8051F320,存 儲器控制器還可以被實現(xiàn)為存儲器的控制邏輯的一部分。
[0151] 本領(lǐng)域技術(shù)人員也知道,除了以純計算機可讀程序代碼方式實現(xiàn)控制器以外,完 全可以通過將方法步驟進行邏輯編程來使得控制器以邏輯門、開關(guān)、專用集成電路、可編程 邏輯控制器和嵌入微控制器等的形式來實現(xiàn)相同功能。因此這種控制器可以被認為是一種 硬件部件,而對其內(nèi)包括的用于實現(xiàn)各種功能的裝置也可以視為硬件部件內(nèi)的結(jié)構(gòu)。或者 甚至,可以將用于實現(xiàn)各種功能的裝置視為既可以是實現(xiàn)方法的軟件模塊又可以是硬件部 件內(nèi)的結(jié)構(gòu)。
[0152] 上述實施例闡明的系統(tǒng)、裝置、模塊或單元,具體可以由計算機芯片或?qū)嶓w實現(xiàn), 或者由具有某種功能的產(chǎn)品來實現(xiàn)。
[0153] 為了描述的方便,描述以上裝置時以功能分為各種單元分別描述。當然,在實施本 申請時可以把各單元的功能在同一個或多個軟件和/或硬件中實現(xiàn)。
[0154] 通過以上的實施方式的描述可知,本領(lǐng)域的技術(shù)人員可以清楚地了解到本申請可 借助軟件加必需的通用硬件平臺的方式來實現(xiàn)。基于這樣的理解,本申請的技術(shù)方案本質(zhì) 上或者說對現(xiàn)有技術(shù)做出貢獻的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,在一個典型的配置 中,計算設(shè)備包括一個或多個處理器(CPU)、輸入/輸出接口、網(wǎng)絡(luò)接口和內(nèi)存。該計算機 軟件產(chǎn)品可以包括若干指令用以使得一臺計算機設(shè)備(可以是