本發(fā)明總體涉及MapReduce系統(tǒng)中的數(shù)據(jù)處理技術(shù),尤其涉及在MapReduce系統(tǒng)中的隱私數(shù)據(jù)保護(hù)。
背景技術(shù):MapReduce是Google公司提出的一種軟件架構(gòu)。MapReduce架構(gòu)用于大規(guī)模數(shù)據(jù)集(大于1TB)的并行運算,其通過把對數(shù)據(jù)集的大規(guī)模操作分發(fā)給網(wǎng)絡(luò)上的每個節(jié)點實現(xiàn)并行運算,在web訪問日志分析、文檔聚類、機(jī)器學(xué)習(xí)、數(shù)據(jù)統(tǒng)計、基于統(tǒng)計的機(jī)器翻譯等領(lǐng)域有廣泛的應(yīng)用。例如,Hadoop就是一種實現(xiàn)MapReduce的實現(xiàn)。越來越多的云計算服務(wù)商在云計算系統(tǒng)中部署了MapReduce架構(gòu)。對于采用云計算服務(wù)提供的MapReduce運算的用戶來說,云計算系統(tǒng)的計算節(jié)點屬于公有域,在MapReduce運算過程中,用戶的隱私數(shù)據(jù)也暴露到公有域,難以得到有效保護(hù)。因此,很多用戶希望將MapReduce運算過程中涉及的隱私數(shù)據(jù)放在私有域中處理,例如放在企業(yè)的私有云系統(tǒng)中處理。
技術(shù)實現(xiàn)要素:本發(fā)明的一個目的,是提供用于在MapReduce系統(tǒng)中保護(hù)隱私數(shù)據(jù)的方法和裝置。根據(jù)本發(fā)明的一個方面,提供一種用于在MapReduce系統(tǒng)中保護(hù)隱私數(shù)據(jù)的方法,其中,所述MapReduce系統(tǒng)包含公有子系統(tǒng)和私有子系統(tǒng),該方法包含:接收要在MapReduce系統(tǒng)中執(zhí)行的MapReduce程序,其中,所述MapReduce程序中包含指定Map函數(shù)的輸入、輸出數(shù)據(jù)和Reduce函數(shù)的輸出數(shù)據(jù)的隱私屬性的指令;在執(zhí)行MapReduce程序之前,檢測Map函數(shù)的輸入、輸出數(shù)據(jù)和Reduce函數(shù)的輸出數(shù)據(jù)的隱私屬性;根據(jù)所檢測的隱私屬性,分配用于被私有子系統(tǒng)和公有子系統(tǒng)處理的數(shù)據(jù),其中,將隱私屬性為私有的數(shù)據(jù)分配到私有子系統(tǒng)。根據(jù)本發(fā)明的另一個方面,提供用于在MapReduce系統(tǒng)中保護(hù)隱私數(shù)據(jù)的裝置,其中,所述MapReduce系統(tǒng)包含公有子系統(tǒng)和私有子系統(tǒng),該裝置包含:程序接收裝置,被配置以接收要在MapReduce系統(tǒng)中執(zhí)行的MapReduce程序,其中,所述MapReduce程序中包含指定Map函數(shù)的輸入、輸出數(shù)據(jù)和Reduce函數(shù)的輸出數(shù)據(jù)的隱私屬性的指令;靜態(tài)檢測裝置,被配置以在執(zhí)行MapReduce程序之前,檢測Map函數(shù)的輸入、輸出數(shù)據(jù)和Reduce函數(shù)的輸出數(shù)據(jù)的隱私屬性;靜態(tài)數(shù)據(jù)分配裝置,被配置以根據(jù)所檢測的隱私屬性,分配用于被私有子系統(tǒng)和公有子系統(tǒng)處理的數(shù)據(jù),其中,將隱私屬性為私有的數(shù)據(jù)分配到私有子系統(tǒng)。附圖說明通過結(jié)合附圖對本公開示例性實施方式進(jìn)行更詳細(xì)的描述,本公開的上述以及其它目的、特征和優(yōu)點將變得更加明顯,其中,在本公開示例性實施方式中,相同的參考標(biāo)號通常代表相同部件。圖1表示根據(jù)本發(fā)明一實施例的云計算節(jié)點;圖2表示根據(jù)本發(fā)明一實施例的云計算環(huán)境;圖3表示根據(jù)本發(fā)明一實施例的抽象模型層;圖4示意性地表示一個適于在其中實現(xiàn)本發(fā)明各種實施例的MapReduce系統(tǒng)的框圖;圖5是表示按照本發(fā)明的一個實施例的方法的簡略流程圖;圖6至8示意性地表示按照本發(fā)明的方法進(jìn)行靜態(tài)檢測和數(shù)據(jù)分派的各種實施方式的過程;圖9示意性地表示按照本發(fā)明的方法進(jìn)行動態(tài)檢測和數(shù)據(jù)分派的各種實施方式的過程;圖10是表示按照本發(fā)明的一個實施例的裝置的簡略框圖。具體實施方式下面將參照附圖更詳細(xì)地描述本公開的優(yōu)選實施方式。雖然附圖中顯示了本公開的優(yōu)選實施方式,然而應(yīng)該理解,可以以各種形式實現(xiàn)本公開而不應(yīng)被這里闡述的實施方式所限制。相反,提供這些實施方式是為了使本公開更加透徹和完整,并且能夠?qū)⒈竟_的范圍完整的傳達(dá)給本領(lǐng)域的技術(shù)人員。首先應(yīng)當(dāng)理解,盡管本公開包括關(guān)于云計算的詳細(xì)描述,但其中記載的技術(shù)方案的實現(xiàn)卻不限于云計算環(huán)境,而是能夠結(jié)合現(xiàn)在已知或以后開發(fā)的任何其它類型的計算環(huán)境而實現(xiàn)。云計算是一種服務(wù)交付模式,用于對共享的可配置計算資源池進(jìn)行方便、按需的網(wǎng)絡(luò)訪問。可配置計算資源是能夠以最小的管理成本或與服務(wù)提供者進(jìn)行最少的交互就能快速部署和釋放的資源,例如可以是網(wǎng)絡(luò)、網(wǎng)絡(luò)帶寬、服務(wù)器、處理、內(nèi)存、存儲、應(yīng)用、虛擬機(jī)和服務(wù)。這種云模式可以包括至少五個特征、至少三個服務(wù)模型和至少四個部署模型。特征包括:按需自助式服務(wù):云的消費者在無需與服務(wù)提供者進(jìn)行人為交互的情況下能夠單方面自動地按需部署諸如服務(wù)器時間和網(wǎng)絡(luò)存儲等的計算能力。廣泛的網(wǎng)絡(luò)接入:計算能力可以通過標(biāo)準(zhǔn)機(jī)制在網(wǎng)絡(luò)上獲取,這種標(biāo)準(zhǔn)機(jī)制促進(jìn)了通過不同種類的瘦客戶機(jī)平臺或厚客戶機(jī)平臺(例如移動電話、膝上型電腦、個人數(shù)字助理PDA)對云的使用。資源池:提供者的計算資源被歸入資源池并通過多租戶(multi-tenant)模式服務(wù)于多重消費者,其中按需將不同的實體資源和虛擬資源動態(tài)地分配和再分配。一般情況下,消費者不能控制或甚至并不知曉所提供的資源的確切位置,但可以在較高抽象程度上指定位置(例如國家、州或數(shù)據(jù)中心),因此具有位置無關(guān)性。迅速彈性:能夠迅速、有彈性地(有時是自動地)部署計算能力,以實現(xiàn)快速擴(kuò)展,并且能迅速釋放來快速縮小。在消費者看來,用于部署的可用計算能力往往顯得是無限的,并能在任意時候都能獲取任意數(shù)量的計算能力??蓽y量的服務(wù):云系統(tǒng)通過利用適于服務(wù)類型(例如存儲、處理、帶寬和活躍用戶帳號)的某種抽象程度的計量能力,自動地控制和優(yōu)化資源效用??梢员O(jiān)測、控制和報告資源使用情況,為服務(wù)提供者和消費者雙方提供透明度。服務(wù)模型如下:軟件即服務(wù)(SaaS):向消費者提供的能力是使用提供者在云基礎(chǔ)架構(gòu)上運行的應(yīng)用??梢酝ㄟ^諸如網(wǎng)絡(luò)瀏覽器的瘦客戶機(jī)接口(例如基于網(wǎng)絡(luò)的電子郵件)從各種客戶機(jī)設(shè)備訪問應(yīng)用。除了有限的特定于用戶的應(yīng)用配置設(shè)置外,消費者既不管理也不控制包括網(wǎng)絡(luò)、服務(wù)器、操作系統(tǒng)、存儲、乃至單個應(yīng)用能力等的底層云基礎(chǔ)架構(gòu)。平臺即服務(wù)(PaaS):向消費者提供的能力是在云基礎(chǔ)架構(gòu)上部署消費者創(chuàng)建或獲得的應(yīng)用,這些應(yīng)用利用提供者支持的程序設(shè)計語言和工具創(chuàng)建。消費者既不管理也不控制包括網(wǎng)絡(luò)、服務(wù)器、操作系統(tǒng)或存儲的底層云基礎(chǔ)架構(gòu),但對其部署的應(yīng)用具有控制權(quán),對應(yīng)用托管環(huán)境配置可能也具有控制權(quán)。基礎(chǔ)架構(gòu)即服務(wù)(IaaS):向消費者提供的能力是消費者能夠在其中部署并運行包括操作系統(tǒng)和應(yīng)用的任意軟件的處理、存儲、網(wǎng)絡(luò)和其他基礎(chǔ)計算資源。消費者既不管理也不控制底層的云基礎(chǔ)架構(gòu),但是對操作系統(tǒng)、存儲和其部署的應(yīng)用具有控制權(quán),對選擇的網(wǎng)絡(luò)組件(例如主機(jī)防火墻)可能具有有限的控制權(quán)。部署模型如下:私有云:云基礎(chǔ)架構(gòu)單獨為某個組織運行。云基礎(chǔ)架構(gòu)可以由該組織或第三方管理并且可以存在于該組織內(nèi)部或外部。共同體云:云基礎(chǔ)架構(gòu)被若干組織共享并支持有共同利害關(guān)系(例如任務(wù)使命、安全要求、政策和合規(guī)考慮)的特定共同體。共同體云可以由共同體內(nèi)的多個組織或第三方管理并且可以存在于該共同體內(nèi)部或外部。公共云:云基礎(chǔ)架構(gòu)向公眾或大型產(chǎn)業(yè)群提供并由出售云服務(wù)的組織擁有。混合云:云基礎(chǔ)架構(gòu)由兩個或更多部署模型的云(私有云、共同體云或公共云)組成,這些云依然是獨特的實體,但是通過使數(shù)據(jù)和應(yīng)用能夠移植的標(biāo)準(zhǔn)化技術(shù)或私有技術(shù)(例如用于云之間的負(fù)載平衡的云突發(fā)流量分擔(dān)技術(shù))綁定在一起。云計算環(huán)境是面向服務(wù)的,特點集中在無狀態(tài)性、低耦合性、模塊性和語意的互操作性。云計算的核心是包含互連節(jié)點網(wǎng)絡(luò)的基礎(chǔ)架構(gòu)?,F(xiàn)在參考圖1,其中顯示了云計算節(jié)點的一個例子。圖1顯示的云計算節(jié)點10僅僅是適合的云計算節(jié)點的一個示例,不應(yīng)對本發(fā)明實施例的功能和使用范圍帶來任何限制。總之,云計算節(jié)點10能夠被用來實現(xiàn)和/或執(zhí)行以上所述的任何功能。云計算節(jié)點10具有計算機(jī)系統(tǒng)/服務(wù)器12,其可與眾多其它通用或?qū)S糜嬎阆到y(tǒng)環(huán)境或配置一起操作。眾所周知,適于與計算機(jī)系統(tǒng)/服務(wù)器12一起操作的計算系統(tǒng)、環(huán)境和/或配置的例子包括但不限于:個人計算機(jī)系統(tǒng)、服務(wù)器計算機(jī)系統(tǒng)、瘦客戶機(jī)、厚客戶機(jī)、手持或膝上設(shè)備、基于微處理器的系統(tǒng)、機(jī)頂盒、可編程消費電子產(chǎn)品、網(wǎng)絡(luò)個人電腦、小型計算機(jī)系統(tǒng)大型計算機(jī)系統(tǒng)和包括上述任意系統(tǒng)的分布式云計算技術(shù)環(huán)境,等等。計算機(jī)系統(tǒng)/服務(wù)器12可以在由計算機(jī)系統(tǒng)執(zhí)行的計算機(jī)系統(tǒng)可執(zhí)行指令(諸如程序模塊)的一般語境下描述。通常,程序模塊可以包括執(zhí)行特定的任務(wù)或者實現(xiàn)特定的抽象數(shù)據(jù)類型的例程、程序、目標(biāo)程序、組件、邏輯、數(shù)據(jù)結(jié)構(gòu)等。計算機(jī)系統(tǒng)/服務(wù)器12可以在通過通信網(wǎng)絡(luò)鏈接的遠(yuǎn)程處理設(shè)備執(zhí)行任務(wù)的分布式云計算環(huán)境中實施。在分布式云計算環(huán)境中,程序模塊可以位于包括存儲設(shè)備的本地或遠(yuǎn)程計算系統(tǒng)存儲介質(zhì)上。如圖1所示,云計算節(jié)點10中的計算機(jī)系統(tǒng)/服務(wù)器12以通用計算設(shè)備的形式表現(xiàn)。計算機(jī)系統(tǒng)/服務(wù)器12的組件可以包括但不限于:一個或者多個處理器或者處理單元16,系統(tǒng)存儲器28,連接不同系統(tǒng)組件(包括系統(tǒng)存儲器28和處理單元16)的總線18。總線18表示幾類總線結(jié)構(gòu)中的一種或多種,包括存儲器總線或者存儲器控制器,外圍總線,圖形加速端口,處理器或者使用多種總線結(jié)構(gòu)中的任意總線結(jié)構(gòu)的局域總線。舉例來說,這些體系結(jié)構(gòu)包括但不限于工業(yè)標(biāo)準(zhǔn)體系結(jié)構(gòu)(ISA)總線,微通道體系結(jié)構(gòu)(MAC)總線,增強(qiáng)型ISA總線、視頻電子標(biāo)準(zhǔn)協(xié)會(VESA)局域總線以及外圍組件互連(PCI)總線。計算機(jī)系統(tǒng)/服務(wù)器12典型地包括多種計算機(jī)系統(tǒng)可讀介質(zhì)。這些介質(zhì)可以是能夠被計算機(jī)系統(tǒng)/服務(wù)器12訪問的任意可獲得的介質(zhì),包括易失性和非易失性介質(zhì),可移動的和不可移動的介質(zhì)。系統(tǒng)存儲器28可以包括易失性存儲器形式的計算機(jī)系統(tǒng)可讀介質(zhì),例如隨機(jī)存取存儲器(RAM)30和/或高速緩存存儲器32。計算機(jī)系統(tǒng)/服務(wù)器12可以進(jìn)一步包括其它可移動/不可移動的、易失性/非易失性計算機(jī)系統(tǒng)存儲介質(zhì)。僅作為舉例,存儲系統(tǒng)34可以用于讀寫不可移動的、非易失性磁介質(zhì)(圖1未顯示,通常稱為“硬盤驅(qū)動器”)。盡管圖1中未示出,可以提供用于對可移動非易失性磁盤(例如“軟盤”)讀寫的磁盤驅(qū)動器,以及對可移動非易失性光盤(例如CD-ROM,DVD-ROM或者其它光介質(zhì))讀寫的光盤驅(qū)動器。在這些情況下,每個驅(qū)動器可以通過一個或者多個數(shù)據(jù)介質(zhì)接口與總線18相連。存儲器28可以包括至少一個程序產(chǎn)品,該程序產(chǎn)品具有一組(例如至少一個)程序模塊,這些程序模塊被配置以執(zhí)行本發(fā)明各實施例的功能。具有一組(至少一個)程序模塊42的程序/實用工具40,可以存儲在存儲器28中,這樣的程序模塊42包括但不限于操作系統(tǒng)、一個或者多個應(yīng)用程序、其它程序模塊以及程序數(shù)據(jù),這些示例中的每一個或某種組合中可能包括網(wǎng)絡(luò)環(huán)境的實現(xiàn)。程序模塊42通常執(zhí)行本發(fā)明所描述的實施例中的功能和/或方法。計算機(jī)系統(tǒng)/服務(wù)器12也可以與一個或多個外部設(shè)備14(例如鍵盤、指向設(shè)備、顯示器24等)通信,還可與一個或者多個使得用戶能與該計算機(jī)系統(tǒng)/服務(wù)器12交互的設(shè)備通信,和/或與使得該計算機(jī)系統(tǒng)/服務(wù)器12能與一個或多個其它計算設(shè)備進(jìn)行通信的任何設(shè)備(例如網(wǎng)卡,調(diào)制解調(diào)器等等)通信。這種通信可以通過輸入、輸出(I/O)接口22進(jìn)行。并且,計算機(jī)系統(tǒng)/服務(wù)器12還可以通過網(wǎng)絡(luò)適配器20與一個或者多個網(wǎng)絡(luò)(例如局域網(wǎng)(LAN),廣域網(wǎng)(WAN)和/或公共網(wǎng)絡(luò),例如因特網(wǎng))通信。如圖所示,網(wǎng)絡(luò)適配器20通過總線18與計算機(jī)系統(tǒng)/服務(wù)器12的其它模塊通信。應(yīng)當(dāng)明白,盡管圖中未示出,其它硬件和/或軟件模塊可以與計算機(jī)系統(tǒng)/服務(wù)器12一起操作,包括但不限于:微代碼、設(shè)備驅(qū)動器、冗余處理單元、外部磁盤驅(qū)動陣列、RAID系統(tǒng)、磁帶驅(qū)動器以及數(shù)據(jù)備份存儲系統(tǒng)等?,F(xiàn)在參考圖2,其中顯示了示例性的云計算環(huán)境50。如圖所示,云計算環(huán)境50包括云計算消費者使用的本地計算設(shè)備可以與其相通信的一個或者多個云計算節(jié)點10,本地計算設(shè)備例如可以是個人數(shù)字助理(PDA)或移動電話54A,臺式電腦54B、筆記本電腦54C和/或汽車計算機(jī)系統(tǒng)54N。云計算節(jié)點10之間可以相互通信。可以在包括但不限于如上所述的私有云、共同體云、公共云或混合云或者它們的組合的一個或者多個網(wǎng)絡(luò)中將云計算節(jié)點10進(jìn)行物理或虛擬分組(圖中未顯示)。這樣,云的消費者無需在本地計算設(shè)備上維護(hù)資源就能請求云計算環(huán)境50提供的基礎(chǔ)架構(gòu)即服務(wù)(IaaS)、平臺即服務(wù)(PaaS)和/或軟件即服務(wù)(SaaS)。應(yīng)當(dāng)理解,圖2顯示的各類計算設(shè)備54A-N僅僅是示意性的,云計算節(jié)點10以及云計算環(huán)境50可以與任意類型網(wǎng)絡(luò)上和/或網(wǎng)絡(luò)可尋址連接的任意類型的計算設(shè)備(例如使用網(wǎng)絡(luò)瀏覽器)通信?,F(xiàn)在參考圖3,其中顯示了云計算環(huán)境50(圖2)提供的一組功能抽象層。首先應(yīng)當(dāng)理解,圖3所示的組件、層以及功能都僅僅是示意性的,本發(fā)明的實施例不限于此。如圖3所示,提供下列層和對應(yīng)功能:硬件和軟件層60包括硬件和軟件組件。硬件組件的例子包括:主機(jī),例如系統(tǒng);基于RISC(精簡指令集計算機(jī))體系結(jié)構(gòu)的服務(wù)器,例如IBM系統(tǒng);IBM系統(tǒng);IBM系統(tǒng);存儲設(shè)備;網(wǎng)絡(luò)和網(wǎng)絡(luò)組件。軟件組件的例子包括:網(wǎng)絡(luò)應(yīng)用服務(wù)器軟件,例如IBM應(yīng)用服務(wù)器軟件;數(shù)據(jù)庫軟件,例如IBM數(shù)據(jù)庫軟件。(IBM,zSeries,pSeries,xSeries,BladeCenter,WebSphere以及DB2是國際商業(yè)機(jī)器公司在全世界各地的注冊商標(biāo))。虛擬層62提供一個抽象層,該層可以提供下列虛擬實體的例子:虛擬服務(wù)器、虛擬存儲、虛擬網(wǎng)絡(luò)(包括虛擬私有網(wǎng)絡(luò))、虛擬應(yīng)用和操作系統(tǒng),以及虛擬客戶端。在一個示例中,管理層64可以提供下述功能:資源供應(yīng)功能:提供用于在云計算環(huán)境中執(zhí)行任務(wù)的計算資源和其它資源的動態(tài)獲??;計量和定價功能:在云計算環(huán)境內(nèi)對資源的使用進(jìn)行成本跟蹤,并為此提供帳單和發(fā)票。在一個例子中,該資源可以包括應(yīng)用軟件許可。安全功能:為云的消費者和任務(wù)提供身份認(rèn)證,為數(shù)據(jù)和其它資源提供保護(hù)。用戶門戶功能:為消費者和系統(tǒng)管理員提供對云計算環(huán)境的訪問。服務(wù)水平管理功能:提供云計算資源的分配和管理,以滿足必需的服務(wù)水平。服務(wù)水平協(xié)議(SLA)計劃和履行功能:為根據(jù)SLA預(yù)測的對云計算資源未來需求提供預(yù)先安排和供應(yīng)。工作負(fù)載層66提供云計算環(huán)境可能實現(xiàn)的功能的示例。在該層中,可提供的工作負(fù)載或功能的示例包括:地圖繪制與導(dǎo)航;軟件開發(fā)及生命周期管理;虛擬教室的教學(xué)提供;數(shù)據(jù)分析處理;交易處理;以及MapReduce應(yīng)用。下面參看附圖,說明本發(fā)明的各種實施方式。首先參看圖4,說明適于在其中實現(xiàn)本發(fā)明實施例的MapReduce系統(tǒng)400。所屬技術(shù)領(lǐng)域的技術(shù)人員知道,MapReduce模型下的軟件實現(xiàn)是,指定Map(映射)函數(shù),用來把一組鍵值對映射成一組新的鍵值對,指定并發(fā)的Reduce(化簡)函數(shù),用來保證所有映射的鍵值對中的每一個共享相同的鍵組。映射函數(shù)是對一些獨立元素組成的概念上的列表的每一個元素進(jìn)行指定的操作,而化簡函數(shù)是對一個列表的元素進(jìn)行適當(dāng)?shù)暮喜⒌牟僮?。簡而言之,Map函數(shù)把輸入數(shù)據(jù)分解成中間的鍵/值(Key/Value)對作為輸出,記為Emit(K,V);Reduce函數(shù)把Map函數(shù)輸出的鍵/值對加以合成,并最終輸出合成的結(jié)果,記為Output(K,V)。這兩個函數(shù)由程序員在MapReduce程序中提供。轉(zhuǎn)看圖4,如圖所示,系統(tǒng)400包含多個計算節(jié)點430P、430N、440P和440N。計算節(jié)點430P、430N、440P和440N可以由圖1所示的計算機(jī)系統(tǒng)/服務(wù)器12實現(xiàn),并包含在圖1所示的云計算節(jié)點中。其中,計算節(jié)點430P和430N被分配用于執(zhí)行Map任務(wù)。用于執(zhí)行map任務(wù)的計算節(jié)點,也被稱作“Map任務(wù)節(jié)點”。計算節(jié)點440P和440N被分配用于執(zhí)行Reduce任務(wù)。用于執(zhí)行Reduce任務(wù)的計算節(jié)點,也被稱作“Reduce任務(wù)節(jié)點”。在運行時,總控系統(tǒng)420接收通過用戶程序410提交的作業(yè)。每個作業(yè)包含一組Map和Reduce任務(wù)(未予示出)以及輸入數(shù)據(jù)412。總控系統(tǒng)420將輸入數(shù)據(jù)412切分為更小的切片414,或“數(shù)據(jù)片段”(例如切片1、切片2…切片n)。這些切片將被分配到Map任務(wù)節(jié)點430P和430N。作業(yè)的執(zhí)行,分兩個階段:Map階段和Reduce階段。在Map階段,Map任務(wù)節(jié)點430P執(zhí)行用戶程序410中規(guī)定的Map計算。Map任務(wù)節(jié)點430P可以采用多個進(jìn)程434(434_1、434_2、434_3)并行地執(zhí)行Map計算,并用一個任務(wù)跟蹤器432管理這些進(jìn)程。Map任務(wù)節(jié)點430P將Map計算的輸出數(shù)據(jù)存儲在本地存儲器436上,作為中間結(jié)果。當(dāng)所有的Map任務(wù)完成時,這些中間結(jié)果被劃分,并分別作為Reduce任務(wù)的輸入數(shù)據(jù),分配到Reduce任務(wù)節(jié)點440P。在Reduce階段,Reduce任務(wù)節(jié)點440P執(zhí)行用戶程序410中規(guī)定的Reduce計算。Reduce任務(wù)節(jié)點440P可以采用多個進(jìn)程444(例如444_1、444_2)并行地執(zhí)行Reduce計算,并用一個任務(wù)跟蹤器442管理這些進(jìn)程。Reduce任務(wù)節(jié)點440P的輸出,可以作為最終結(jié)果存儲到文件系統(tǒng)中(未予示出),也可以用于進(jìn)一步的Reduce計算,以獲得最終結(jié)果。在Map任務(wù)節(jié)點430N和Reduce任務(wù)節(jié)點440N的結(jié)構(gòu)和功能,分別與Map任務(wù)節(jié)點430P和Reduce任務(wù)節(jié)點440P類似。Map階段和Reduce階段在在Map任務(wù)節(jié)點430N和Reduce任務(wù)節(jié)點440N上的執(zhí)行,也與在Map任務(wù)節(jié)點430P和Reduce任務(wù)節(jié)點440P上的執(zhí)行類似??梢杂懈嗟倪@樣的Map任務(wù)節(jié)點和Reduce任務(wù)節(jié)點?,F(xiàn)有技術(shù)中,MapReduce系統(tǒng)在執(zhí)行Map-Reduce應(yīng)用時,沒有考慮是否要在公有域的計算節(jié)點中暴露用戶的受保護(hù)的數(shù)據(jù)。本發(fā)明可以在MapReduce系統(tǒng)400上實現(xiàn)。與現(xiàn)有技術(shù)不同的是,按照本發(fā)明,MapReduce系統(tǒng)400進(jìn)一步被劃分為公有子系統(tǒng)和私有子系統(tǒng)。如圖4所示,本發(fā)明的系統(tǒng)400包含公有子系統(tǒng)400P和私有子系統(tǒng)400N,其中,公有子系統(tǒng)400P包含一個或多個Map任務(wù)節(jié)點430P和一個或多個Reduce任務(wù)節(jié)點440P,私有子系統(tǒng)400N包含一個或多個Map任務(wù)節(jié)點430N和一個或多個Reduce任務(wù)節(jié)點440N。私有子系統(tǒng)400N,例如是企業(yè)內(nèi)部的計算系統(tǒng)或私有云系統(tǒng),可以通過網(wǎng)絡(luò)(未予示出)可通信地耦合到MapReduce系統(tǒng)400的其它子系統(tǒng)。在私有子系統(tǒng)400P上處理和存儲的數(shù)據(jù),不會被暴露到公有域。本發(fā)明的總體構(gòu)思是,通過擴(kuò)展現(xiàn)有的MapReduce程序代碼中的原語,靜態(tài)和/或動態(tài)檢測MapReduce程序所處理的數(shù)據(jù)的是否屬于受保護(hù)的數(shù)據(jù),并將受保護(hù)的數(shù)據(jù)分配到私有子系統(tǒng)進(jìn)行處理。下面參看附圖,說明按照本發(fā)明的各種實施方式。首先參看附圖5,該圖示意性地表示按照本發(fā)明的一個實施例的方法的流程圖。圖5所示的是按照本發(fā)明一個實施例的用于在MapReduce系統(tǒng)中保護(hù)隱私數(shù)據(jù)的方法的流程圖,其中,所述MapReduce系統(tǒng)包含公有子系統(tǒng)400P和私有子系統(tǒng)400N。該方法包含以下的步驟510—530。在步驟510,接收要在MapReduce系統(tǒng)中執(zhí)行的MapReduce程序410,其中,所述MapReduce程序中包含指定Map函數(shù)的輸入、輸出數(shù)據(jù)和Reduce函數(shù)的輸出數(shù)據(jù)的隱私屬性的指令。以下舉例說明步驟510。例1:MapReduce程序410為程序1,輸入數(shù)據(jù)412為表1。程序1:(功能:統(tǒng)計工資額大于6000(含)的人員的數(shù)目)表1名字性別年齡工資電話AlphaM2530001381110001BettieM2640001381110002CynsiaF2460001381110003DoukunM2120001381110004EcklaM3070001381110005FeemieF3180001381110006所屬技術(shù)領(lǐng)域的技術(shù)人員明白,表1所示的數(shù)據(jù)是經(jīng)過簡化的數(shù)據(jù)。在實際應(yīng)用中,MapReduce程序處理的數(shù)據(jù)是海量的,并且處理的數(shù)據(jù)既可以是結(jié)構(gòu)化的數(shù)據(jù),也可以是非結(jié)構(gòu)化的數(shù)據(jù)。程序1包含三個片斷:“MapInputSplit”,表示輸入用于Map階段的源數(shù)據(jù);片段“Map”,表示Map函數(shù),片段“Reduce”,表示Reduce函數(shù)。程序1中還包含指定Map函數(shù)的輸入、輸出數(shù)據(jù)和Reduce函數(shù)的輸出數(shù)據(jù)的隱私屬性的指令,即指令“EmitN(輸入行)”、“EmitN(數(shù)目,“1”)”、“OutputN(數(shù)目,SUM)”。指令“EmitN()”是對MapReduce程序中的輸出指令或原語(primitive)“Emit()”的擴(kuò)展,指令“OutputN()”是對MapReduce程序中的輸出指令或原語“Output()”的擴(kuò)展。“EmitN()”和“OutputN()”中的“N”,表示相關(guān)輸出數(shù)據(jù)的隱私屬性為“私有”(Non-public)。例如,程序1中,指令“EmitN(輸入行)”表示“MapInputSplit”的輸出數(shù)據(jù)的隱私屬性為“私有”,也即Map函數(shù)的輸入數(shù)據(jù)的隱私屬性為“私有”。指令“EmitN(數(shù)目,“1”)”指示對應(yīng)的Map函數(shù)的輸出數(shù)據(jù)的隱私屬性為“私有”。指令“OutputN(數(shù)目,SUM)”指示對應(yīng)的Reduce函數(shù)的輸出數(shù)據(jù)的隱私屬性為“私有”。在本發(fā)明的上下文中,隱私屬性為“私有”的數(shù)據(jù),指的是不要被暴露到公共域的數(shù)據(jù),也稱為“隱私數(shù)據(jù)”、“私有數(shù)據(jù)”或“保密數(shù)據(jù)”等。隱私屬性為“非私有”的數(shù)據(jù),表示可以被暴露到公共域的數(shù)據(jù),也稱為“非隱私數(shù)據(jù)”、“公共數(shù)據(jù)”、“非保密數(shù)據(jù)”等。后文在更多的例子中將可以看到,還可以用擴(kuò)展的指令“EmitP()”和“OutputP()”,表示相關(guān)輸出數(shù)據(jù)的隱私屬性為“非私有”(Public)。當(dāng)然,可以規(guī)定,在規(guī)定了用“EmitN()”和“OutputN()”表示相關(guān)輸出數(shù)據(jù)的隱私屬性為“私有”的情況下,可以默認(rèn)“Emit()”和“Output()”分別等同于“EmitP()”和“OutputP()”,即表示相關(guān)輸出數(shù)據(jù)的隱私屬性為“非私有”,反之亦然?,F(xiàn)在轉(zhuǎn)看圖5中的步驟520。在步驟520,在執(zhí)行MapReduce程序之前,檢測Map函數(shù)的輸入、輸出數(shù)據(jù)和Reduce函數(shù)輸出數(shù)據(jù)的隱私屬性。按照本發(fā)明一個實施例,可以在編譯MapReduce程序時,進(jìn)行上述檢測。按照本發(fā)明一個實施例,所述檢測Map函數(shù)的輸入、輸出數(shù)據(jù)和Reduce函數(shù)輸出數(shù)據(jù)的隱私屬性包含:通過分析MapReduce中指定Map函數(shù)的輸入、輸出數(shù)據(jù)和Reduce函數(shù)的輸出數(shù)據(jù)的隱私屬性的指令,檢測Map函數(shù)的輸入、輸出數(shù)據(jù)和Reduce函數(shù)的輸入、輸出數(shù)據(jù)中的隱私數(shù)據(jù)。例如,可以在對程序1的源代碼進(jìn)行編譯時,分析程序1,根據(jù)其中的指令指令“EmitN(輸入行)”、“EmitN(數(shù)目,“1”)”、“OutputN(數(shù)目,SUM)”,檢測到Map函數(shù)的輸入、輸出數(shù)據(jù)和Reduce函數(shù)的輸入、輸出數(shù)據(jù)中的隱私數(shù)據(jù)。具體來說,指令“EmitN(輸入行)”表明“MapInputSplit”的輸出數(shù)據(jù)的隱私屬性為“私有”。而“MapInputSplit”的輸出數(shù)據(jù)就是Map函數(shù)的輸入數(shù)據(jù),因此,Map函數(shù)的輸入數(shù)據(jù)的隱私屬性為“私有”,可以將這個檢測結(jié)果記為Mi=N,其中,“Mi”代表Map函數(shù)的輸入數(shù)據(jù)的隱私屬性,“N”表示私有。從指令“EmitN(數(shù)目,“1”)”可知,Map函數(shù)的輸出數(shù)據(jù)的隱私屬性為“私有”,記為Mo=N,其中“Mo”代表Map函數(shù)的輸出數(shù)據(jù)。Map函數(shù)的輸出數(shù)據(jù)就是Reduce函數(shù)的輸入數(shù)據(jù),因此,Reduce函數(shù)的輸入數(shù)據(jù)的隱私屬性為“私有”,記為Ri=N,其中“Ri”代表Reduce函數(shù)的輸出數(shù)據(jù)。從“OutputN(數(shù)目,SUM)”可知,Reduce函數(shù)的輸出數(shù)據(jù)的隱私屬性為“私有”,記為Ro=N,其中“Ro”代表Reduce函數(shù)的輸出數(shù)據(jù)。上述的檢測結(jié)果,可以表示為:{Mi,Mo,Ri,Ro}=(N,N,N,N)??梢运愠觯@樣的檢測結(jié)果,具有多達(dá)24=32種組合。以下為了方便敘述,在上下文清楚的情況下,說明書中用“N”表示數(shù)據(jù)的隱私屬性為“私有”,用“P”分別表示數(shù)據(jù)的隱私屬性為“非私有”。步驟530,將檢測到的隱私數(shù)據(jù)分配到私有子系統(tǒng)400N上處理。下面通過舉例,更詳細(xì)地說明步驟530的實現(xiàn)方式。對于例1來說,{Mi,Mo,Ri,Ro}=(N,N,N,N)。圖6是表示按照本發(fā)明一個實施例為MapReduce系統(tǒng)的子系統(tǒng)分配數(shù)據(jù)的示意圖,相關(guān)聯(lián)的MapReduce程序,是上文所示的程序1。除了一些細(xì)節(jié),圖6中所示的MapReduce系統(tǒng)的與圖4的系統(tǒng)400的結(jié)構(gòu)基本相同。表1所示的源數(shù)據(jù)412,首先被分割為標(biāo)記610所示的3個數(shù)據(jù)片段610。如標(biāo)記為601的虛線箭頭所示,由于Mi=N,因此,將數(shù)據(jù)片段610分配到私有子系統(tǒng)400N的Map任務(wù)節(jié)點430N。數(shù)據(jù)片段610由Map任務(wù)節(jié)點430N的任務(wù)跟蹤器432進(jìn)一步分配到不同的虛擬機(jī)或進(jìn)程434,用于Map函數(shù)的計算。如標(biāo)記602所示,Map任務(wù)節(jié)點430N產(chǎn)生Map函數(shù)的輸出數(shù)據(jù)620。如標(biāo)記603所示,由于Ri=N,因此將Map函數(shù)的輸出數(shù)據(jù)620分配到私有有子系統(tǒng)400N的Reduce任務(wù)節(jié)點440N。Reduce函數(shù)的輸入數(shù)據(jù)620由Reduce任務(wù)節(jié)點440N的任務(wù)跟蹤器442進(jìn)一步分配到不同的虛擬機(jī)或進(jìn)程444,用于Reduce函數(shù)的計算。如標(biāo)記604所示,Reduce任務(wù)節(jié)點440P產(chǎn)生Reduce函數(shù)的輸出數(shù)據(jù)630。按照本發(fā)明一個實施例,在向公有子系統(tǒng)和私有子系統(tǒng)上分配供處理的數(shù)據(jù)時采用的一個策略是,僅僅把隱私數(shù)據(jù)分配到私有子系統(tǒng),而把非隱私數(shù)據(jù)分配到公有子系統(tǒng)。在云計算服務(wù)中,采用這樣的策略是為了盡量地利用公共域的計算資源。下面舉例說明該實施例的實施方式。例2:MapReduce程序410是程序2,源數(shù)據(jù)412是表1的第1-2列的數(shù)據(jù)。程序2:(統(tǒng)計男性人數(shù)和女性人數(shù))圖7是與程序2相關(guān)聯(lián)的、表示按照本發(fā)明一個實施例為MapReduce系統(tǒng)的子系統(tǒng)分配數(shù)據(jù)的示意圖。該圖所示的MapReduce系統(tǒng)400與圖6的系統(tǒng)400相同。首先,根據(jù)程序2中的指定Map函數(shù)的輸入、輸出數(shù)據(jù)和Reduce函數(shù)的輸出數(shù)據(jù)的隱私屬性的指令EmitP(輸入行)、EmitP(“性別”,“1”)和OutputP(“性別”,SUM),檢測出Map函數(shù)的輸入、輸出數(shù)據(jù)和Reduce函數(shù)的輸入、輸出數(shù)據(jù)均為非隱私數(shù)據(jù),即{Mi,Mo,Ri,Ro}=(P,P,P,P)。源數(shù)據(jù)412首先被分割為3個數(shù)據(jù)片段710。根據(jù)上述檢測進(jìn)行數(shù)據(jù)分配的過程如下。如標(biāo)記701所示,由于Mi=P,因此將源數(shù)據(jù)的3個數(shù)據(jù)片段710分配到公有子系統(tǒng)400P的Map任務(wù)節(jié)點430P。數(shù)據(jù)片段710由Map任務(wù)節(jié)點430P的任務(wù)跟蹤器432進(jìn)一步分配到不同的虛擬機(jī)或進(jìn)程434-1、434-2、434-3,用于Map函數(shù)的計算。如標(biāo)記702所示,Map任務(wù)節(jié)點430P產(chǎn)生Map函數(shù)的輸出數(shù)據(jù)720。Map函數(shù)的輸出數(shù)據(jù)720被歸并為Reduce函數(shù)的輸入數(shù)據(jù)730。如標(biāo)記603所示,由于Ri=P,因此將Reduce函數(shù)的輸入數(shù)據(jù)730分配到公有子系統(tǒng)400P的Reduce任務(wù)節(jié)點440P。輸入數(shù)據(jù)730由Reduce任務(wù)節(jié)點440P的任務(wù)跟蹤器442進(jìn)一步分配到不同的虛擬機(jī)或進(jìn)程444-1、444-2,用于Reduce函數(shù)的計算。如標(biāo)記704所示,Reduce任務(wù)節(jié)點440P產(chǎn)生Reduce函數(shù)的輸出數(shù)據(jù)740。輸出數(shù)據(jù)740表示的計算結(jié)果為:男性(“M”)人數(shù)=4,女性(“F”)人數(shù)=2。下面參看圖8,說明下面的一個既有隱私數(shù)據(jù)又有非隱私數(shù)據(jù)的例3。例3:MapReduce程序410為程序3,輸入數(shù)據(jù)412為表1的第1-3列的數(shù)據(jù)。程序3:(功能:統(tǒng)計30歲以上(含)和30歲以下的人員的數(shù)目)根據(jù)程序3中的指定Map函數(shù)的輸入、輸出數(shù)據(jù)和Reduce函數(shù)的輸出數(shù)據(jù)的隱私屬性的指令EmitP(輸入行)、EmitP(“30歲以上”,“1”)和EmitP(“30以下”,“1”)以及和OutputN(“年齡段”,SUM),檢測出Map函數(shù)的輸入、輸出數(shù)據(jù)和Reduce函數(shù)的輸入、輸出數(shù)據(jù)的隱私屬性{Mi,Mo,Ri,Ro}=(P,P,P,N)。據(jù)此分配數(shù)據(jù)的如圖8所示。如標(biāo)記801所示,由于Mi=P,因此將源數(shù)據(jù)的數(shù)據(jù)片段810分配到公有子系統(tǒng)400P的Map任務(wù)節(jié)點430P,用于Map函數(shù)的計算。如標(biāo)記802所示,Map任務(wù)節(jié)點430P產(chǎn)生Map函數(shù)的輸出數(shù)據(jù)820。Map函數(shù)的輸出數(shù)據(jù)820被變換成Reduce函數(shù)的輸入數(shù)據(jù)830。如標(biāo)記803所示,由于Ro=N,因此將輸入數(shù)據(jù)830分配到私有子系統(tǒng)400N的Reduce任務(wù)節(jié)點440P。輸入數(shù)據(jù)830被Reduce任務(wù)節(jié)點440N用于Reduce函數(shù)的計算。如標(biāo)記804所示,Reduce任務(wù)節(jié)點440N產(chǎn)生Reduce函數(shù)的輸出數(shù)據(jù)840。以上舉例說明了按照本發(fā)明的用于在MapReduce系統(tǒng)中保護(hù)隱私數(shù)據(jù)的方法。以上的例子中,步驟520是在程序410被執(zhí)行之前進(jìn)行的,因此,步驟520進(jìn)行的檢測,屬于靜態(tài)檢測。在許多應(yīng)用中,Map函數(shù)的輸入/輸出數(shù)據(jù)以及Reduce函數(shù)的輸出數(shù)據(jù)的隱私屬性都是預(yù)先可以確定的,因此,提供MapReduce程序的程序員,可以用Map函數(shù)的擴(kuò)展原語,諸如MapSplitInutN()、EmitP()、OutputN()等形式的原語,指示Map函數(shù)的輸入/輸出數(shù)據(jù)以及Reduce函數(shù)的輸出數(shù)據(jù)的隱私屬性。提供MapReduce應(yīng)用的云計算系統(tǒng)服務(wù)提供商,運用本發(fā)明方法,通過靜態(tài)檢測,就可以檢測出預(yù)先可以確定的非隱私數(shù)據(jù)和隱私數(shù)據(jù),從而僅在公有子系統(tǒng)上處理檢測出的非隱私數(shù)據(jù),而將檢測出的隱私數(shù)據(jù)分配到私有子系統(tǒng)上處理。在有些MapReduce應(yīng)用中,存在這樣的情況,即Map函數(shù)的輸出數(shù)據(jù),有的屬于隱私數(shù)據(jù),有的不屬于隱私數(shù)據(jù)。類似地,Reduce函數(shù)的輸出數(shù)據(jù),也有可能并不是全部具有單一的隱私屬性,即要么全部是隱私數(shù)據(jù),要么全部是非隱私數(shù)據(jù)。如下面的例4所示。例4:MapReduce程序410是程序2,源數(shù)據(jù)412是表1的第1-2列的數(shù)據(jù)。程序4:(統(tǒng)計男性的人數(shù)和女性的人數(shù),女性人數(shù)屬于隱私數(shù)據(jù))程序4與程序2的區(qū)別僅僅在于,在程序4中,Reduce函數(shù)中存在OutputP(性別,SUM)和OutputN(性別,SUM)兩種指示輸出數(shù)據(jù)的指令,使得Reduce函數(shù)的實際輸出數(shù)據(jù)的隱私屬性不能唯一地確定。就是說,Map函數(shù)的輸出數(shù)據(jù),有的屬于隱私數(shù)據(jù),有的不屬于隱私數(shù)據(jù)。這種情況記為Ro=P+N。實際上,如果將“OutputP(性別,SUM)”修改為“OutputN(性別,SUM)”,就可以通過靜態(tài)檢測和數(shù)據(jù)分配的方式,使得Reduce函數(shù)都在私有子系統(tǒng)400N上計算,從而保證不在公有子系統(tǒng)上暴露隱私數(shù)據(jù),即女性人數(shù)。以下結(jié)合圖9,以程序4為例,說明按照本發(fā)明方法一個實施例的動態(tài)檢測和相關(guān)的數(shù)據(jù)分配的過程。首先是靜態(tài)檢測,按照與前文關(guān)于例1-3所作的靜態(tài)檢測的方式類似,對程序4進(jìn)行的靜態(tài)檢測的結(jié)果是{Mi,Mo,Ri,Ro}=(P,P,P,P+N)。按照本發(fā)明一個實施例,在步驟520中,如果一個Map函數(shù)的輸出數(shù)據(jù)的隱私屬性不是單一的,則可以隨機(jī)地將Map函數(shù)的輸出數(shù)據(jù)分配到公有子系統(tǒng)400P或者私有子系統(tǒng)400N,如果一個Reduce函數(shù)的輸出數(shù)據(jù)的隱私屬性不是單一的,則可以隨機(jī)地將Reduce函數(shù)的輸出數(shù)據(jù)分配到公有子系統(tǒng)400P或者私有子系統(tǒng)400N。在這種情況下,Map函數(shù)的實際輸出數(shù)據(jù)和Reduce函數(shù)的實際輸出數(shù)據(jù)的屬性,可以通過動態(tài)檢測而確定。換言之,在靜態(tài)檢測時,可以將Ro=P+N當(dāng)作Ro=P或者Ro=N。類似地,可以將Ri=P+N當(dāng)作Ri=P或者Ri=N;將Mi=P+N當(dāng)作Mi=P或者M(jìn)i=N;Mo=P+N當(dāng)作Mo=P或者M(jìn)o=N。本例中,將Ro=P+N當(dāng)作Ro=P。在數(shù)據(jù)分配時,依據(jù)的是{Mi,Mo,Ri,Ro}=(P,P,P,P)。因此,圖9所示的靜態(tài)檢測和數(shù)據(jù)分配的過程與圖7所示的類似,如虛線箭頭701、702、703和704以及標(biāo)記710、720、730和740所示的那樣,這里不再贅述。需要指出的是,在靜態(tài)檢測和數(shù)據(jù)分配過程中,輸出數(shù)據(jù)740被分配在440P上。然而,按照程序中“If(性別=”F”)OutputN(性別,SUM)”的要求,輸出數(shù)據(jù)740中“F,2”是女性的人數(shù),實際上應(yīng)當(dāng)輸出到私有子系統(tǒng)400N。這個問題可以通過以下描述的動態(tài)過程得到解決。按照本發(fā)明一個實施例,可以在MapReduce程序的運行過程中動態(tài)地檢測Map函數(shù)和Reduce函數(shù)的實際輸出數(shù)據(jù)的隱私屬性(步驟540),并按照實際輸出數(shù)據(jù)的隱私屬性,將實際輸出數(shù)據(jù)分派到適當(dāng)?shù)墓凶酉到y(tǒng)400P或者私有子系統(tǒng)400N(步驟550)。相對于靜態(tài)檢測,可以將步驟540所做的檢測稱為“動態(tài)檢測”?,F(xiàn)在假設(shè)在步驟540,在程序執(zhí)行的過程中,檢測到執(zhí)行了指令“OutputN(性別,SUM)”,即Reduce函數(shù)的實際輸出數(shù)據(jù)“F,2”的隱私屬性為N,即私有。于是,在步驟550,按照實際輸出數(shù)據(jù)“F,2”的隱私屬性為N,將實際輸出數(shù)據(jù)分派“F,2”私有子系統(tǒng)400N。為此,任務(wù)跟蹤器432不在計算節(jié)點440P上輸出標(biāo)記740所示的輸出數(shù)據(jù)“F,2”,而是如實線箭頭905所示,將原來作為Reduce函數(shù)的輸入數(shù)據(jù)730中的數(shù)據(jù)“F,{1,1}”(如標(biāo)記950所示),重定向到私有子系統(tǒng)400N的Reduce計算節(jié)點440N。如實線箭頭906所示,Reduce計算節(jié)點440N在私有子系統(tǒng)400N輸出Reduce計算的結(jié)果“F,2”(如標(biāo)記940_2所示),即女性(“F”)的人數(shù)。如實線箭頭907所示,公有子系統(tǒng)400P的Reduce計算節(jié)點440P輸出Reduce計算的結(jié)果“M,4”(標(biāo)記940_1),只有男性(“M”)的人數(shù),沒有女性人數(shù)。根據(jù)以上的示例,所述技術(shù)領(lǐng)域的技術(shù)人員不難針對其它動態(tài)檢測的檢測到的實際輸出數(shù)據(jù)的隱私屬性,向適當(dāng)?shù)墓凶酉到y(tǒng)或私有子系統(tǒng)分派實際輸出數(shù)據(jù)。所屬技術(shù)領(lǐng)域的技術(shù)人員知道,在預(yù)先知道隱私數(shù)據(jù)和非隱私數(shù)據(jù)的定義的情況下,可以設(shè)計出各種方式來實現(xiàn)動態(tài)檢測。例如,可以用一個檢測程序檢測MapReduce程序運行的過程,例如檢測Map函數(shù)和/或Reduce函數(shù)的實際輸出數(shù)據(jù)是否與隱私數(shù)據(jù)和非隱私數(shù)據(jù)的定義相符,從而確定實際輸出數(shù)據(jù)的隱私屬性。按照本發(fā)明一個實施例,實現(xiàn)動態(tài)檢測的一種方式是:根據(jù)MapReduce程序運行時的報告,檢測Map函數(shù)和Reduce函數(shù)的實際輸出數(shù)據(jù)的隱私屬性。發(fā)明人認(rèn)為,本發(fā)明的靜態(tài)檢測是基于對MapReduce程序的擴(kuò)展而實現(xiàn)的,因此設(shè)想也可以通過擴(kuò)展MapReduce程序,來實現(xiàn)動態(tài)監(jiān)測。例如,在程序412中,插入與Map函數(shù)和Reduce函數(shù)的數(shù)據(jù)輸出指令相關(guān)聯(lián)的指令Send2TT()/Send2TT(),用于向任務(wù)跟蹤器TT(Task_Tracker)432、442通知實際輸出數(shù)據(jù)的屬性的指令Send2TT()/Send2TT()。如下所示?!癝end2TT(P)”表示向任務(wù)跟蹤器TT報告當(dāng)前實際輸出數(shù)據(jù)的屬性是P,和“Send2TT(N)”表示向任務(wù)跟蹤器TT報告當(dāng)前實際輸出數(shù)據(jù)的屬性是N。這樣,任務(wù)跟蹤器就能動態(tài)檢測出實際輸出的屬性。以上說明了本發(fā)明的用于在MapReduce系統(tǒng)400中保護(hù)隱私數(shù)據(jù)的方法的各種實施方式。按照同一個發(fā)明構(gòu)思,本發(fā)明還公開一種用于在MapReduce系統(tǒng)中保護(hù)隱私數(shù)據(jù)的裝置。圖10是表示按照本發(fā)明的一個實施例用于在MapReduce系統(tǒng)中保護(hù)隱私數(shù)據(jù)的裝置1000的簡略框圖。圖10所示的用于在MapReduce系統(tǒng)400中保護(hù)隱私數(shù)據(jù)的裝置1000,包含公有子系統(tǒng)400P和私有子系統(tǒng)330N,該裝置1000包含:程序接收裝置1010、靜態(tài)檢測裝置1020和靜態(tài)數(shù)據(jù)分配裝置1030。程序接收裝置1010被配置以接收要在MapReduce系統(tǒng)中執(zhí)行的MapReduce程序410,其中,所述MapReduce程序中包含指定Map函數(shù)的輸入、輸出數(shù)據(jù)和Reduce函數(shù)的輸出數(shù)據(jù)的隱私屬性的指令;靜態(tài)檢測裝置1020被配置以在執(zhí)行MapReduce程序之前,檢測Map函數(shù)的輸入、輸出數(shù)據(jù)和Reduce函數(shù)的輸出數(shù)據(jù)的隱私屬性;靜態(tài)數(shù)據(jù)分配裝置1030被配置以根據(jù)所檢測的隱私屬性,分配用于被私有子系統(tǒng)和公有子系統(tǒng)處理的數(shù)據(jù),其中,將隱私屬性為私有的數(shù)據(jù)分配到私有子系統(tǒng)。按照本發(fā)明一個實施例,靜態(tài)數(shù)據(jù)分配裝置1030進(jìn)一步被配置以將隱私屬性為非私有的數(shù)據(jù)分配到公有子系統(tǒng)。按照本發(fā)明一個實施例,靜態(tài)檢測裝置1020在編譯MapReduce程序時檢測Map函數(shù)的輸入、輸出數(shù)據(jù)和Reduce函數(shù)輸出數(shù)據(jù)的隱私屬性。按照本發(fā)明一個實施例,靜態(tài)檢測裝置1020被配置以通過分析MapReduce程序中指定Map函數(shù)的輸入、輸出數(shù)據(jù)和Reduce函數(shù)輸出數(shù)據(jù)的隱私屬性的指令,檢測Map函數(shù)的輸入、輸出數(shù)據(jù)和Reduce函數(shù)的輸入、輸出數(shù)據(jù)中的隱私數(shù)據(jù)。按照本發(fā)明一個實施例,裝置1000進(jìn)一步包含:動態(tài)檢測裝置1040和數(shù)據(jù)重定向裝置1050。動態(tài)檢測裝置1040被配置以在MapReduce程序410的運行過程中動態(tài)地檢測Map函數(shù)和Reduce函數(shù)的實際輸出數(shù)據(jù)的隱私屬性;數(shù)據(jù)重定向裝置1050被配置以按照實際輸出數(shù)據(jù)的隱私屬性,將實際輸出數(shù)據(jù)分派到的公有子系統(tǒng)或私有子系統(tǒng)。按照本發(fā)明一個實施例,所述MapReduce程序包含用于報告Map函數(shù)的實際輸出數(shù)據(jù)的隱私屬性和Reduce函數(shù)的實際輸出數(shù)據(jù)的隱私屬性的擴(kuò)展指令,所述動態(tài)檢測裝置1040被進(jìn)一步配置以:根據(jù)MapReduce程序運行時的報告,檢測Map函數(shù)和Reduce函數(shù)的實際輸出數(shù)據(jù)的隱私屬性。按照本發(fā)明一個實施例,所述靜態(tài)數(shù)據(jù)分配裝置1030被進(jìn)一步配置以:響應(yīng)于所檢測的Map函數(shù)的輸出數(shù)據(jù)的隱私屬性不是單一的,隨機(jī)地將Map函數(shù)的輸出數(shù)據(jù)分配到公有子系統(tǒng)或者私有子系統(tǒng);響應(yīng)于所檢測的Reduce函數(shù)的輸出數(shù)據(jù)的隱私屬性不是單一的,隨機(jī)地將Reduce函數(shù)的輸出數(shù)據(jù)分配到公有子系統(tǒng)或者私有子系統(tǒng)。以上描述了用于在MapReduce系統(tǒng)400中保護(hù)隱私數(shù)據(jù)的裝置1000的各種實施方式,由于上文已經(jīng)描述了用于在MapReduce系統(tǒng)中保護(hù)隱私數(shù)據(jù)的的方法,在對裝置1000的說明中,省略了一些與在對方法的描述中重復(fù)的內(nèi)容。與現(xiàn)有技術(shù)相比,應(yīng)用本發(fā)明的各種實施例,可以MapReduce應(yīng)用中,尤其在配置MapReduce架構(gòu)的云計算系統(tǒng)中,為用戶需要保護(hù)的數(shù)據(jù)提供更好的安全性,具有顯著的技術(shù)效果。以上已經(jīng)描述了本發(fā)明的各實施例,上述說明是示例性的,并非窮盡性的,并且也不限于所披露的各實施例。在不偏離所說明的各實施例的范圍和精神的情況下,對于本技術(shù)領(lǐng)域的普通技術(shù)人員來說許多修改和變更都是顯而易見的。本文中所用術(shù)語的選擇,旨在最好地解釋各實施例的原理、實際應(yīng)用或?qū)κ袌鲋械募夹g(shù)的改進(jìn),或者使本技術(shù)領(lǐng)域的其它普通技術(shù)人員能理解本文披露的各實施例。