專利名稱:數(shù)據(jù)的并行處理的制作方法
技術領域:
本公開內容涉及數(shù)據(jù)的并行處理。
背景技術:
大規(guī)模數(shù)據(jù)處理可以包括并行處理,并行處理總體上涉及到對大數(shù)據(jù)集的每個元素執(zhí)行某一操作。各種操作可以在數(shù)據(jù)并行流水線中鏈接在一起以創(chuàng)建用于處理數(shù)據(jù)集的聞效機制。
發(fā)明內容
在一個方面中,在包括一個或者多個處理模塊并且提供本機處理環(huán)境的數(shù)據(jù)中心接收非置信應用。非置信應用包括數(shù)據(jù)并行流水線。數(shù)據(jù)并行流水線指定包含多個元素的多個并行數(shù)據(jù)對象和與對元素操作的非置信函數(shù)相關聯(lián)的多個并行操作。在本機處理環(huán)境中并且在處理模塊中的一個或者多個處理模塊上實例化第一安全處理環(huán)境。在第一安全處理環(huán)境中執(zhí)行非置信應用。執(zhí)行應用生成與數(shù)據(jù)并行流水線對應的延緩的并行數(shù)據(jù)對象和延緩的并行操作的數(shù)據(jù)流圖形。在第一安全處理環(huán)境以外傳達代表數(shù)據(jù)流圖形的信息。在第一安全處理環(huán)境以外并且在本機處理環(huán)境中,將一個或者多個圖形變換應用于代表數(shù)據(jù)流圖形的信息以生成修正的數(shù)據(jù)流圖形,修正的數(shù)據(jù)流圖形包括與非置信函數(shù)中的一個或者多個非置信函數(shù)相關聯(lián)的、延緩的并行數(shù)據(jù)對象和延緩的組合并行數(shù)據(jù)操作中的一個或者多個延緩的并行數(shù)據(jù)對象和延緩的組合并行數(shù)據(jù)操作。執(zhí)行延緩的組合并行操作以產生與延緩的并行數(shù)據(jù)對象對應的具體化的并行數(shù)據(jù)對象。執(zhí)行延緩的組合并行操作包括:在本機處理環(huán)境中并且在處理模塊中的一個或者多個處理模塊上實例化一個或者多個第二安全處理環(huán)境;并且在一個或者多個第二安全處理環(huán)境中執(zhí)行與延緩的組合并行操作相關聯(lián)的非置信函數(shù)。實現(xiàn)方式可以包括以下特征中的一個或者多個特征。例如,第一安全處理環(huán)境可以包括第一虛擬機,并且一個或者多個第二安全處理環(huán)境可以包括第二虛擬機。第一虛擬機和一個或者多個第二虛擬機可以是硬件虛擬機。在一個或者多個第二安全處理環(huán)境中執(zhí)行與延緩的組合并行操作相關聯(lián)的非置信函數(shù)可以包括:從第二安全處理環(huán)境以外向第二安全處理環(huán)境中傳達輸入批處理記錄,輸入批處理記錄包括多個個別輸入記錄;對輸入批處理中的個別記錄中的每個記錄執(zhí)行與延緩的組合并行操作相關聯(lián)的非置信函數(shù)中的至少一個非置信函數(shù)以生成輸出記錄;將輸出記錄匯集成輸出批處理;并且在第二安全處理環(huán)境以外傳達輸出批處理。
可以將非置信應用的輸出發(fā)送到向數(shù)據(jù)中心發(fā)送非置信應用的客戶端系統(tǒng)。在第一安全處理環(huán)境以外傳達代表數(shù)據(jù)流圖形的信息可以包括向在第一安全處理環(huán)境以外的執(zhí)行圖形服務傳達代表數(shù)據(jù)流圖形的信息。延緩的組合并行數(shù)據(jù)操作可以包括至少一個廣義映射精簡操作。廣義映射精簡操作可以包括多個并行映射操作和多個并行精簡操作并且可轉譯成單個映射精簡操作,單個映射精簡操作包括用于實施多個并行映射操作的單個映射函數(shù)和用于實施多個并行精簡操作的單個精簡函數(shù)。單個映射函數(shù)和單個精簡函數(shù)可以包括非置信函數(shù)中的一個或者多個非置信函數(shù)。執(zhí)行延緩的組合并行操作可以包括將組合映射精簡操作轉譯成單個映射精簡操作。在一個或者多個第二安全處理環(huán)境中執(zhí)行與延緩的組合并行操作相關聯(lián)的非置信函數(shù)可以包括在一個或者多個第二安全處理環(huán)境中執(zhí)行單個映射函數(shù)和單個精簡函數(shù)。在安全處理環(huán)境中執(zhí)行非置信應用可以包括在第一安全處理環(huán)境中的虛擬機內執(zhí)行非置信應用。在一個或者多個安全處理環(huán)境中執(zhí)行與延緩的組合并行操作相關聯(lián)的非置信函數(shù)可以包括在一個或者多個第二安全處理環(huán)境內的虛擬機中執(zhí)行與延緩的組合并行操作相關聯(lián)的非置信函數(shù)。在第一安全處理環(huán)境以外傳達代表數(shù)據(jù)流圖形的信息可以包括使用遠程過程調用在第一安全處理環(huán)境以外傳達代表數(shù)據(jù)流圖形的信息??梢詫徍诉h程過程調用。在另一方面中,一種系統(tǒng)包括:一個或者多個處理模塊,配置成提供本機處理環(huán)境并且實施在本機處理環(huán)境中的第一安全處理環(huán)境、位于第一安全處理環(huán)境以外并且在本機處理環(huán)境中的服務以及在本機處理環(huán)境中的一個或者多個第二安全處理環(huán)境。第一安全處理環(huán)境被配置成執(zhí)行包括數(shù)據(jù)并行流水線的非置信應用。數(shù)據(jù)并行流水線指定包含多個元素的多個并行數(shù)據(jù)對象和與對元素操作的非置信函數(shù)相關聯(lián)的多個并行操作。執(zhí)行應用生成與數(shù)據(jù)并行流水線對應的延緩的并行數(shù)據(jù)對象和延緩的并行操作的數(shù)據(jù)流圖形。第一安全處理環(huán)境也被配置成在第一安全處理環(huán)境以外傳達代表數(shù)據(jù)流圖形的信息服務被配置成:從第一安全處理環(huán)境接收代表數(shù)據(jù)流圖形的信息;將一個或者多個圖形變換應用于代表數(shù)據(jù)流圖形的信息以生成修正的數(shù)據(jù)流圖形,修正的數(shù)據(jù)流圖形包括與非置信函數(shù)中的一個或者多個非置信函數(shù)相關聯(lián)的、延緩的并行數(shù)據(jù)對象和延緩的組合并行數(shù)據(jù)操作中的一個或者多個延緩的并行數(shù)據(jù)對象和延緩的組合并行數(shù)據(jù)操作;并且引起執(zhí)行延緩的組合并行操作以產生與延緩的并行數(shù)據(jù)對象對應的具體化的并行數(shù)據(jù)對象。一個或者多個第二安全處理環(huán)境被配置成執(zhí)行與延緩的組合并行操作相關聯(lián)的非置信函數(shù)以造成執(zhí)行延緩的組合并行操作。實現(xiàn)方式可以包括以下特征中的一個或者多個特征。例如,第一安全處理環(huán)境可以包括第一虛擬機,并且一個或者多個第二安全處理環(huán)境可以包括第二虛擬機。第一虛擬機和一個或者多個第二虛擬機可以是硬件虛擬機。一個或者多個處理設備可以被配置成實施工作器,工作器被配置成從第二安全處理環(huán)境以外向第二安全處理環(huán)境中傳達輸入批處理記錄。輸入批處理記錄可以包括多個個別輸入記錄。為了執(zhí)行與延緩的組合并行操作相關聯(lián)的非置信函數(shù),一個或者多個第二安全處理環(huán)境可以被配置成:對輸入批處理中的個別記錄中的每個記錄執(zhí)行與延緩的組合并行操作相關聯(lián)的非置信函數(shù)中的至少一個非置信函數(shù)以生成輸出記錄;將輸出記錄匯集成輸出批處理;并且向工作器傳達輸出批處理。該系統(tǒng)可以包括配置成接收非置信應用的輸出的客戶端系統(tǒng)。延緩的組合并行數(shù)據(jù)操作可以包括至少一個廣義映射精簡操作。廣義映射精簡操作可以包括多個并行映射操作和多個并行精簡操作并且可轉譯成單個映射精簡操作,單個映射精簡操作包括用于實施多個并行映射操作的單個映射函數(shù)和用于實施多個并行精簡操作的單個精簡函數(shù)。單個映射函數(shù)和單個精簡函數(shù)可以包括非置信函數(shù)中的一個或者多個非置信函數(shù)。服務可以被配置成將組合映射精簡操作轉譯成單個映射精簡操作。一個或者多個第二安全處理環(huán)境可以被配置成在一個或者多個第二安全處理環(huán)境中執(zhí)行單個映射函數(shù)和單個精簡函數(shù)。第一安全處理環(huán)境可以被配置成在第一安全處理環(huán)境中的虛擬機內執(zhí)行非置信應用。一個或者多個第二安全處理環(huán)境內可以被配置成在一個或者多個第二安全處理環(huán)境內的虛擬機中執(zhí)行與延緩的組合并行操作相關聯(lián)的非置信函數(shù)。在另一方面中,訪問代表延緩的并行數(shù)據(jù)對象和延緩的并行操作的數(shù)據(jù)流圖形的信息。延緩的并行數(shù)據(jù)對象和延緩的并行操作對應于由非置信應用中包括的數(shù)據(jù)并行流水線指定的并行數(shù)據(jù)對象和并行操作。并行數(shù)據(jù)對象包含多個元素,并且并行操作與對元素操作的非置信函數(shù)相關聯(lián)。將一個或者多個圖形變換應用于代表數(shù)據(jù)流圖形的信息以生成修正的數(shù)據(jù)流圖形,修正的數(shù)據(jù)流圖形包括與非置信函數(shù)中的一個或者多個非置信函數(shù)相關聯(lián)的、延緩的并行數(shù)據(jù)對象和延緩的組合并行數(shù)據(jù)操作中的一個或者多個延緩的并行數(shù)據(jù)對象和延緩的組合并行數(shù)據(jù)操作。執(zhí)行延緩的組合并行操作以產生與延緩的并行數(shù)據(jù)對象對應的具體化的并行數(shù)據(jù)對象。執(zhí)行延緩的組合并行操作包括:實例化一個或者多個安全處理環(huán)境;并且在一個或者多個安全處理環(huán)境中執(zhí)行與延緩的組合并行操作相關聯(lián)的非置信函數(shù)??梢越邮瞻〝?shù)據(jù)并行流水線的非置信應用,并且可以實例化初始安全處理環(huán)境。可以在初始安全處理環(huán)境中執(zhí)行非置信應用。執(zhí)行應用可以生成延緩的并行數(shù)據(jù)對象和延緩的并行操作的數(shù)據(jù)流圖形??梢栽诔跏及踩幚憝h(huán)境以外傳達代表數(shù)據(jù)流圖形的信息,從而使得圖形變換在初始安全處理環(huán)境以外應用于代表數(shù)據(jù)流圖形的信息。一個或者多個安全處理環(huán)境可以包括虛擬機。在另一方面中,一種系統(tǒng)包括一個或者多個處理設備和一個或者多個存儲設備。存儲設備存儲在由一個或者多個處理設備執(zhí)行時實施應用、評價器、優(yōu)化器和執(zhí)行器的指令。應用包括數(shù)據(jù)并行流水線。數(shù)據(jù)并行流水線指定包含多個元素的多個并行數(shù)據(jù)對象和對并行數(shù)據(jù)對象操作的多個并行操作。評價器基于數(shù)據(jù)并行流水線被配置成生成與數(shù)據(jù)并行流水線對應的延緩的并行數(shù)據(jù)對象和延緩的并行操作的數(shù)據(jù)流圖形。延緩的并行數(shù)據(jù)對象例如可以是包括指針的數(shù)據(jù)結構,指針指向對并行數(shù)據(jù)對象而不是對在并行數(shù)據(jù)對象中存儲的元素操作的并行數(shù)據(jù)操作。延緩的并行操作例如可以是數(shù)據(jù)結構,該數(shù)據(jù)結構包括指向并行數(shù)據(jù)對象的指針、指向延緩的并行對象的指針和將(但是尚未)對輸入對象執(zhí)行的函數(shù),并行數(shù)據(jù)對象是向延緩的并行操作的輸入,延緩的并行對象是延緩的并行操作的輸出。
優(yōu)化器被配置成將一個或者多個圖形變換應用于數(shù)據(jù)流圖形以生成修正的數(shù)據(jù)流圖形,修正的數(shù)據(jù)流圖形包括延緩的并行數(shù)據(jù)對象和延緩的組合并行數(shù)據(jù)操作中的一個或者多個延緩的并行數(shù)據(jù)對象和延緩的組合并行數(shù)據(jù)操作。執(zhí)行器被配置成執(zhí)行延緩的組合并行操作以產生與延緩的并行數(shù)據(jù)對象對應的具體化的并行數(shù)據(jù)對象。具體化的并行數(shù)據(jù)對象例如可以是包括并行數(shù)據(jù)對象的數(shù)據(jù)或者元素的數(shù)據(jù)結構。這一方面的實現(xiàn)方式可以包括以下特征中的一個或者多個特征。例如,延緩的組合并行數(shù)據(jù)操作可以包括至少一個廣義映射精簡操作。廣義映射精簡操作可以包括多個并行映射操作和多個并行精簡操作并且可轉譯成單個映射精簡操作,單個映射精簡操作包括用于實施多個并行映射操作的單個映射函數(shù)和用于實施多個并行精簡操作的單個精簡函數(shù)。為了執(zhí)行廣義映射精簡操作,執(zhí)行器可以被配置成將組合映射精簡操作轉譯成單個映射精簡操作并且執(zhí)行單個映射精簡操作。為了執(zhí)行單個映射精簡操作,執(zhí)行器可以被配置成確定是否執(zhí)行單個映射精簡操作作為本地順序操作或者遠程并行操作。為了將廣義映射精簡操作轉譯成單個映射精簡操作,執(zhí)行器可以被配置成生成包括多個映射操作的映射函數(shù)和包括多個精簡器操作的精簡器函數(shù)。多個并行數(shù)據(jù)對象可以是主機編程語言的第一類對象。流水線還可以包括單個數(shù)據(jù)對象,單個數(shù)據(jù)對象包含單個元素,并且數(shù)據(jù)流圖形包括對應的延緩的單個數(shù)據(jù)對象。流水線中的多個并行操作中的至少一個并行操作可以對單個數(shù)據(jù)對象和多個并行數(shù)據(jù)對象中的一個并行數(shù)據(jù)對象操作,并且數(shù)據(jù)流圖形可以包括對延緩的單個數(shù)據(jù)對象和延緩的并行數(shù)據(jù)對象操作的對應的延緩的并行操作。執(zhí)行器可以被配置成高速緩存執(zhí)行延緩的組合并行操作的一個或者多個結果以用于在數(shù)據(jù)并行流水線的將來執(zhí)行中使用。在另一方面中,一種方法包括執(zhí)行包括數(shù)據(jù)并行流水線的應用。數(shù)據(jù)并行流水線指定包含多個元素的多個并行數(shù)據(jù)對象和對并行數(shù)據(jù)對象操作的多個并行操作。該方法還包括基于數(shù)據(jù)并行流水線生成與數(shù)據(jù)并行流水線對應的延緩的并行數(shù)據(jù)對象和延緩的并行操作的數(shù)據(jù)流圖形。延緩的并行數(shù)據(jù)對象例如可以是包括指針的數(shù)據(jù)結構,該指針指向對并行數(shù)據(jù)對象而不是對在并行數(shù)據(jù)對象中存儲的元素操作的并行數(shù)據(jù)操作。延緩的并行操作例如可以是數(shù)據(jù)結構,該數(shù)據(jù)結構包括指向并行數(shù)據(jù)對象的指針、指向延緩的并行對象的指針和將(但是尚未)對輸入對象執(zhí)行的函數(shù),并行數(shù)據(jù)對象是向延緩的并行操作的輸入,延緩的并行對象是延緩的并行操作的輸出。該方法也包括將一個或者多個圖形變換應用于數(shù)據(jù)流圖形以生成修正的數(shù)據(jù)流圖形,修正的數(shù)據(jù)流圖形包括延緩的并行數(shù)據(jù)對象和延緩的組合并行數(shù)據(jù)操作中的一個或者多個延緩的并行數(shù)據(jù)對象和延緩的組合并行數(shù)據(jù)操作。此外,該方法還包括執(zhí)行延緩的組合并行操作以產生與延緩的并行數(shù)據(jù)對象對應的具體化的并行數(shù)據(jù)對象。具體化的并行數(shù)據(jù)對象例如可以是包括并行數(shù)據(jù)對象的數(shù)據(jù)或者元素的數(shù)據(jù)結構。這一方面的實現(xiàn)方式可以包括以下特征中的一個或者多個特征。例如,延緩的組合并行數(shù)據(jù)操作可以包括至少一個廣義映射精簡操作。廣義映射精簡操作可以包括多個并行映射操作和多個并行精簡操作并且可轉譯成單個映射精簡操作,單個映射精簡操作包括用于實施多個并行映射操作的單個映射函數(shù)和用于實施多個并行精簡操作的單個精簡函數(shù)。執(zhí)行廣義映射精簡操作可以包括將組合映射精簡操作轉譯成單個映射精簡操作并且執(zhí)行單個映射精簡操作。執(zhí)行單個映射精簡操作可以包括確定是否執(zhí)行單個映射精簡操作作為本地順序操作或者遠程并行操作。將廣義映射精簡操作轉譯成單個映射精簡操作可以包括生成包括多個映射操作的映射函數(shù)和包括多個精簡器操作的精簡器函數(shù)。多個并行數(shù)據(jù)對象可以是主機編程語言的第一類對象。流水線還可以包括單個數(shù)據(jù)對象,單個數(shù)據(jù)對象包含單個元素,并且數(shù)據(jù)流圖形包括對應的延緩的單個數(shù)據(jù)對象。流水線中的多個并行操作中的至少一個并行操作可以對單個數(shù)據(jù)對象和多個并行數(shù)據(jù)對象中的一個并行數(shù)據(jù)對象操作,并且數(shù)據(jù)流圖形可以包括對延緩的單個數(shù)據(jù)對象和延緩的并行數(shù)據(jù)對象操作的對應的延緩的并行操作。該方法可以包括高速緩存執(zhí)行延緩的組合并行操作的一個或者多個結果以用于在數(shù)據(jù)并行流水線的將來執(zhí)行中使用。在另一方面中,一種系統(tǒng)包括一個或者多個處理設備和一個或者多個存儲設備。存儲設備存儲在由一個或者多個處理設備執(zhí)行時實施執(zhí)行器的指令。執(zhí)行器被配置成訪問包括延緩的并行數(shù)據(jù)對象和延緩的組合并行數(shù)據(jù)操作的數(shù)據(jù)流圖形。延緩的并行數(shù)據(jù)對象例如可以是包括指針的數(shù)據(jù)結構,該指針指向對并行數(shù)據(jù)對象而不是對在并行數(shù)據(jù)對象中存儲的元素操作的并行數(shù)據(jù)操作。延緩的并行操作例如可以是數(shù)據(jù)結構,該數(shù)據(jù)結構包括指向并行數(shù)據(jù)對象的指針、指向延緩的并行對象的指針和將(但是尚未)對輸入對象執(zhí)行的函數(shù),并行數(shù)據(jù)對象是向延緩的并行操作的輸入,延緩的并行對象是延緩的并行操作的輸出。執(zhí)行器被配置成執(zhí)行延緩的組合并行操作以產生與延緩的并行數(shù)據(jù)對象對應的具體化的并行數(shù)據(jù)對象。具體化的并行數(shù)據(jù)對象例如可以是包括并行數(shù)據(jù)對象的數(shù)據(jù)或者元素的數(shù)據(jù)結構。針對延緩的組合并行操作中的至少一個延緩的組合并行操作,執(zhí)行器被配置成通過以下操作來執(zhí)行至少一個延緩的組合并行操作:確定與至少一個延緩的組合并行操作相關聯(lián)的數(shù)據(jù)的估計的大??;確定估計的大小是否超過閾值大??;如果估計的大小在閾值大小以下,則執(zhí)行至少一個延緩的組合并行操作作為本地順序操作;并且如果估計的大小超過閾值大小,則執(zhí)行至少一個延緩的組合并行操作作為遠程并行操作。這一方面的實現(xiàn)方式可以包括以下特征中的一個或者多個特征。例如,與至少一個延緩的組合并行操作相關聯(lián)的數(shù)據(jù)可以包括用于至少一個延緩的組合并行操作的輸入數(shù)據(jù)、由至少一個延緩的組合并行操作產生的中間數(shù)據(jù)或者由至少一個延緩的組合并行操作產生的輸出數(shù)據(jù)中的一種或者多種數(shù)據(jù)。至少一個延緩的組合并行數(shù)據(jù)操作可以是廣義映射精簡操作。廣義映射精簡操作可以包括多個并行映射操作和多個并行精簡操作并且可轉譯成單個映射精簡操作,單個映射精簡操作包括用于實施多個并行映射操作的單個映射函數(shù)和用于實施多個并行精簡操作的單個精簡函數(shù)。為了執(zhí)行廣義映射精簡操作,執(zhí)行器可以被配置成將組合映射精簡操作轉譯成單個映射精簡操作并且執(zhí)行單個映射精簡操作。為了執(zhí)行單個映射精簡操作作為遠程并行操作,執(zhí)行器可以被配置成使單個映射精簡操作在數(shù)據(jù)中心中的多個不同處理模塊上被復制和執(zhí)行。為了將廣義映射精簡操作轉譯成單個映射精簡操作,執(zhí)行器可以被配置成生成包括多個映射操作的映射函數(shù)和包括多個精簡器操作的精簡器函數(shù)。為了確定估計的大小,執(zhí)行器可以被配置成訪問數(shù)據(jù)流圖形中的注釋,注釋反映與至少一個延緩的組合并行操作相關聯(lián)的數(shù)據(jù)的大小的估計。在另一方面中,一種方法包括訪問包括延緩的并行數(shù)據(jù)對象和延緩的組合并行數(shù)據(jù)操作的數(shù)據(jù)流圖形。延緩的并行數(shù)據(jù)對象例如可以是包括指針的數(shù)據(jù)結構,該指針指向對并行數(shù)據(jù)對象而不是對在并行數(shù)據(jù)對象中存儲的元素操作的并行數(shù)據(jù)操作。延緩的并行操作例如可以是數(shù)據(jù)結構,該數(shù)據(jù)結構包括指向并行數(shù)據(jù)對象的指針、指向延緩的并行對象的指針和將(但是尚未)對輸入對象執(zhí)行的函數(shù),并行數(shù)據(jù)對象是向延緩的并行操作的輸入,延緩的并行對象是延緩的并行操作的輸出。該方法也包括執(zhí)行延緩的組合并行操作以產生與延緩的并行數(shù)據(jù)對象對應的具體化的并行數(shù)據(jù)對象。具體化的并行數(shù)據(jù)對象例如可以是包括并行數(shù)據(jù)對象的數(shù)據(jù)或者元素的數(shù)據(jù)結構。針對延緩的組合并行操作中的至少一個延緩的組合并行操作,執(zhí)行至少一個延緩的組合并行操作包括:確定與至少一個延緩的組合并行操作相關聯(lián)的數(shù)據(jù)的估計的大小;確定估計的大小是否超過閾值大??;如果估計的大小在閾值大小以下,則執(zhí)行至少一個延緩的組合并行操作作為本地順序操作;并且如果估計的大小超過閾值大小,則執(zhí)行至少一個延緩的組合并行操作作為遠程并行操作。這一方面的實現(xiàn)方式可以包括以下特征中的一個或者多個特征。例如,與至少一個延緩的組合并行操作相關聯(lián)的數(shù)據(jù)可以包括用于至少一個延緩的組合并行操作的輸入數(shù)據(jù)、由至少一個延緩的組合并行操作產生的中間數(shù)據(jù)或者由至少一個延緩的組合并行操作產生的輸出數(shù)據(jù)中的一種或者多種數(shù)據(jù)。至少一個延緩的組合并行數(shù)據(jù)操作可以是廣義映射精簡操作。廣義映射精簡操作可以包括多個并行映射操作和多個并行精簡操作并且可轉譯成單個映射精簡操作,該單個映射精簡操作包括用于實施多個并行映射操作的單個映射函數(shù)和用于實施多個并行精簡操作的單個精簡函數(shù)。執(zhí)行廣義映射精簡操作可以包括將組合映射精簡操作轉譯成單個映射精簡操作并且執(zhí)行單個映射精簡操作。執(zhí)行單個映射精簡操作作為遠程并行操作可以包括使單個映射精簡操作在數(shù)據(jù)中心中的多個不同處理模塊上被復制和執(zhí)行。將廣義映射精簡操作轉譯成單個映射精簡操作可以包括生成包括多個映射操作的映射函數(shù)和包括多個精簡器操作的精簡器函數(shù)。確定估計的大小可以包括訪問數(shù)據(jù)流圖形中的注釋,該注釋反映與至少一個延緩的組合并行操作相關聯(lián)的數(shù)據(jù)的大小的估計。在一個方面中,一種系統(tǒng)包括一個或者多個處理設備和一個或者多個存儲設備。存儲設備存儲在由一個或者多個處理設備執(zhí)行時實施執(zhí)行器的指令。執(zhí)行器被配置成訪問數(shù)據(jù)流圖形,該數(shù)據(jù)流圖形包括延緩的并行數(shù)據(jù)對象和延緩的組合并行數(shù)據(jù)操作。延緩的并行數(shù)據(jù)對象例如可以是包括指針的數(shù)據(jù)結構,該指針指向對并行數(shù)據(jù)對象而不是對在并行數(shù)據(jù)對象中存儲的元素操作的并行數(shù)據(jù)操作。延緩的并行操作例如可以是數(shù)據(jù)結構,該數(shù)據(jù)結構包括指向并行數(shù)據(jù)對象的指針、指向延緩的并行對象的指針和將(但是尚未)對輸入對象執(zhí)行的函數(shù),并行數(shù)據(jù)對象是向延緩的并行操作的輸入,延緩的并行對象是延緩的并行操作的輸出。延緩的組合并行數(shù)據(jù)操作中的至少一個延緩的組合并行數(shù)據(jù)操作是廣義映射精簡操作。廣義映射精簡操作包括多個并行映射操作和多個并行精簡操作并且可轉譯成單個映射精簡操作,該單個映射精簡操作包括用于實施多個并行映射操作的單個映射函數(shù)和用于實施多個并行精簡操作的單個精簡函數(shù)。執(zhí)行器還被配置成執(zhí)行延緩的組合并行操作以產生與延緩的并行數(shù)據(jù)對象對應的具體化的并行數(shù)據(jù)對象。具體化的并行數(shù)據(jù)對象例如可以是包括并行數(shù)據(jù)對象的數(shù)據(jù)或者元素的數(shù)據(jù)結構。為了執(zhí)行廣義映射精簡操作,執(zhí)行器被配置成將組合映射精簡操作轉譯成單個映射精簡操作并且執(zhí)行單個映射精簡操作。這一方面的實現(xiàn)方式可以包括以下特征中的一個或者多個特征。例如,為了將廣義映射精簡操作轉譯成單個映射精簡操作,執(zhí)行器可以被配置成生成包括多個映射操作的映射函數(shù)和包括多個精簡操作的精簡函數(shù)。執(zhí)行器可以被配置成執(zhí)行單個映射精簡操作作為遠程并行操作。為了執(zhí)行單個映射精簡操作作為遠程并行操作,執(zhí)行器可以被配置成使單個映射精簡操作由多個不同處理模塊上的多個工作器進程執(zhí)行。為了使單個映射精簡操作由多個工作器進程執(zhí)行,執(zhí)行器可以被配置成引起針對映射操作中的每個映射操作來援引多個映射工作器進程,其中向多個映射工作器進程中的每個映射工作器進程分配索引編號。映射工作器進程中的每個映射工作器進程可以被配置成:接收實施多個映射操作的映射函數(shù)、與映射操作中的一個映射操作相關聯(lián)的一個或者多個輸入和映射工作器進程的相關聯(lián)的索引;基于映射工作器進程的相關聯(lián)的索引選擇與輸入相關聯(lián)的映射操作;并且對一個或者多個輸入援引選擇的映射操作。為了使單個映射精簡操作由多個工作器進程執(zhí)行,執(zhí)行器可以被配置成使得針對精簡操作中的每個精簡操作援引多個精簡工作器進程,其中向多個精簡工作器進程中的每個精簡工作器進程分配索引編號。多個精簡工作器進程中的每個精簡工作器進程可以被配置成:接收實施多個精簡操作的精簡函數(shù)、與精簡操作中的一個精簡操作相關聯(lián)的一個或者多個輸入和精簡工作器進程的相關聯(lián)的索引;基于工作器進程的相關聯(lián)的索引選擇與輸入相關聯(lián)的精簡操作;并且對一個或者多個輸入援引選擇的精簡操作。在另一方面中,一種方法包括訪問數(shù)據(jù)流圖形,該數(shù)據(jù)流圖形包括延緩的并行數(shù)據(jù)對象和延緩的組合并行數(shù)據(jù)操作。延緩的并行數(shù)據(jù)對象例如可以是包括指針的數(shù)據(jù)結構,該指針指向對并行數(shù)據(jù)對象而不是對在并行數(shù)據(jù)對象中存儲的元素操作的并行數(shù)據(jù)操作。延緩的并行操作例如可以是數(shù)據(jù)結構,該數(shù)據(jù)結構包括指向并行數(shù)據(jù)對象的指針、指向延緩的并行對象的指針和將(但是尚未)對輸入對象執(zhí)行的函數(shù),并行數(shù)據(jù)對象是向延緩的并行操作的輸入,延緩的并行對象是延緩的并行操作的輸出。延緩的組合并行數(shù)據(jù)操作中的至少一個延緩的組合并行數(shù)據(jù)操作是廣義映射精簡操作。廣義映射精簡操作包括多個并行映射操作和多個并行精簡操作并且可轉譯成單個映射精簡操作,該單個映射精簡操作包括用于實施多個并行映射操作的單個映射函數(shù)和用于實施多個并行精簡操作的單個精簡函數(shù);并且該方法也包括執(zhí)行延緩的組合并行操作以產生與延緩的并行數(shù)據(jù)對象對應的具體化的并行數(shù)據(jù)對象。具體化的并行數(shù)據(jù)對象例如可以是包括并行數(shù)據(jù)對象的數(shù)據(jù)或者元素的數(shù)據(jù)結構。執(zhí)行廣義映射精簡操作包括將組合映射精簡操作轉譯成單個映射精簡操作并且執(zhí)行單個映射精簡操作。這一方面的實現(xiàn)方式可以包括以下特征中的一個或者多個特征。例如,將廣義映射精簡操作轉譯成單個映射精簡操作可以包括生成包括多個映射操作的映射函數(shù)和包括多個精簡操作的精簡函數(shù)。執(zhí)行單個映射精簡操作可以包括執(zhí)行單個映射精簡操作作為遠程并行操作。執(zhí)行單個映射精簡操作作為遠程并行操作可以包括使單個映射精簡操作由多個不同處理模塊上的多個工作器進程執(zhí)行。
使單個映射精簡操作由多個工作器進程執(zhí)行可以包括引起針對映射操作中的每個映射操作來援引多個映射工作器進程,其中向多個映射工作器進程中的每個映射工作器進程分配索引編號。映射工作器進程中的每個映射工作器進程可以被配置成:接收實施多個映射操作的映射函數(shù)、與映射操作中的一個映射操作相關聯(lián)的一個或者多個輸入和映射工作器進程的相關聯(lián)的索引;基于映射工作器進程的相關聯(lián)的索引選擇與輸入相關聯(lián)的映射操作;并且對一個或者多個輸入援引選擇的映射操作。使單個映射精簡操作由多個工作器進程執(zhí)行可以包括使得針對精簡操作中的每個精簡操作援引多個精簡工作器進程,其中向多個精簡工作器進程中的每個精簡工作器進程分配索引編號。多個精簡工作器進程中的每個精簡工作器進程可以被配置成:接收實施多個精簡操作的精簡函數(shù)、與精簡操作中的一個精簡操作相關聯(lián)的一個或者多個輸入和精簡工作器進程的相關聯(lián)的索引;基于工作器進程的相關聯(lián)的索引選擇與輸入相關聯(lián)的精簡操作;并且對一個或者多個輸入援引選擇的精簡操作。描述的技術的實現(xiàn)方式可以包括硬件、系統(tǒng)、方法或者過程或者在計算機可訪問介質上的計算機軟件。在附圖和以下描述中闡述一個或者多個實現(xiàn)方式的細節(jié)。其它特征將從描述和附圖中以及從權利要求中變得明顯。
圖1是圖示了數(shù)據(jù)中心的示例的框圖。圖2是處理模塊的示例的框圖。圖3是圖示了流水線庫的示例的框圖。圖4A是圖示了可以由流水線的評價器、優(yōu)化器和執(zhí)行器執(zhí)行的過程的示例的流程圖。圖4B是圖示了可以由流水線庫的執(zhí)行器執(zhí)行的過程的示例的流程圖。圖5A和圖5B示出了示例數(shù)據(jù)流圖形變換,該數(shù)據(jù)流圖形變換圖示了 ParallelDo生產者-消費者融合和同胞融合。圖6A和圖6B示出了示例數(shù)據(jù)流圖形變換,該數(shù)據(jù)流圖形變換圖示了 MSCR融合。圖7A至圖7E示出了為了生成最終數(shù)據(jù)流圖形而執(zhí)行的數(shù)據(jù)流圖形變換的示例。圖8圖示了具有3個輸入信道的MSCR操作的示例。圖9圖示了可以用來實施流水線庫作為服務的系統(tǒng)的示例。圖10是圖示了用于執(zhí)行包括數(shù)據(jù)并行流水線的非置信應用的過程的示例的流程圖。
具體實施例方式一般而言,在本文獻中描述的技術可以應用于大規(guī)模數(shù)據(jù)處理并且特別地應用于大規(guī)模數(shù)據(jù)并行流水線。可以在分布式數(shù)據(jù)處理系統(tǒng)(比如數(shù)據(jù)中心或者數(shù)據(jù)中心的網(wǎng)絡)中執(zhí)行這樣的大規(guī)模處理。例如,大規(guī)模因特網(wǎng)服務和支持這樣的服務的大型并行計算基礎結構可以運用由數(shù)以千計或者數(shù)以萬計的計算節(jié)點組成的倉庫大小的計算系統(tǒng)。圖1是圖示了數(shù)據(jù)中心100的示例的框圖。數(shù)據(jù)中心100用來存儲數(shù)據(jù)、執(zhí)行計算任務和例如使用連接到數(shù)據(jù)中心的網(wǎng)絡向數(shù)據(jù)中心以外的其它系統(tǒng)傳輸數(shù)據(jù)。具體而言,數(shù)據(jù)中心100可以對大量數(shù)據(jù)執(zhí)行大規(guī)模數(shù)據(jù)處理。數(shù)據(jù)中心100包括多個機架102。盡管僅示出了兩個機架,但是數(shù)據(jù)中心100可以包括多得多的機架。每個機架102可以包括供部件(比如處理模塊104)裝配到其中的框架或者機柜。一般而言,每個處理模塊104可以包括電路板(比如母板),多種與計算機有關的部件裝配于該電路板上以執(zhí)行數(shù)據(jù)處理。每個機架102內的處理模塊104例如通過機架交換機彼此互連,并且每個數(shù)據(jù)中心100內的機架102也例如通過數(shù)據(jù)中心交換機互連。在一些實現(xiàn)方式中,處理模塊104可以各自承擔作為主控或者從屬的角色。主控模塊控制在它們本身與從屬之間的調度和數(shù)據(jù)分布任務。機架可以包括由一個或者多個處理模塊104共享的儲存器(例如,一個或者多個網(wǎng)絡附著盤)和/或每個處理模塊104可以包括它自己的儲存器。附加地或者備選地,可以存在通過網(wǎng)絡連接到機架的遠程儲存器。數(shù)據(jù)中心100可以包括專用光學鏈路或者其它專用通信信道以及諸如調制解調器、橋接器、路由器、交換機、無線天線和塔等支持硬件。數(shù)據(jù)中心100可以包括一個或者多個廣域網(wǎng)(WAN)以及多個局域網(wǎng)(LAN)。圖2是可以用于處理模塊104中的一個或者多個處理模塊的處理模塊200的示例的框圖。處理模塊200包括存儲器202、一個或者多個處理單元(CPU) 204和一個或者多個網(wǎng)絡或者其它通信接口 206。這些部件由一個或者多個通信總線互連。在一些實現(xiàn)方式中,處理模塊200可以包括將處理模塊連接到輸入和輸出設備(比如顯示器和鍵盤)的輸入/輸出(I/O)接口。存儲器202可以包括高速隨機存取存儲器并且也可以包括非易失性存儲器,比如一個或者多個磁盤存儲設備。存儲器202可以包括位于CPU 204的遠程的海量儲存器。存儲器202存儲應用軟件202a、映射精簡庫202b、流水線庫202c和操作系統(tǒng)202d(例如,Linux)。操作系統(tǒng)202d —般包括用于處理各種基本系統(tǒng)服務和用于執(zhí)行依賴于硬件的任務的流程。應用軟件202a執(zhí)行大規(guī)模數(shù)據(jù)處理。庫202a和庫202c提供可以由應用軟件202a用來執(zhí)行大規(guī)模數(shù)據(jù)處理并且在這樣的大規(guī)模數(shù)據(jù)處理中實施數(shù)據(jù)并行流水線的函數(shù)和類。映射精簡庫202b可以支持用于并行處理大量數(shù)據(jù)的映射精簡編程模型。例如,在通過引用而均結合于此的、MapReduce:Simplified Data Processing on Large Clusters, OSDI ' 04:Sixth Symposium onOperating System Design and Implementation, San Francisco, CA, 2004 年 12 月和第7,650,331號美國專利中描述了映射精簡模型。一般而言,映射精簡模型向應用開發(fā)者提供用于如何考慮他們的計算的抽象。應用開發(fā)者可以根據(jù)抽象來制定他們的計算,這可以簡化對用于執(zhí)行大規(guī)模并行數(shù)據(jù)處理的程序的構建。應用開發(fā)者可以運用映射精簡模型,該映射精簡模型使用或者不使用映射精簡庫202b。然而,映射精簡庫202b可以管理不同低級任務中的許多任務。這樣的低級任務可以例如包括選擇適當并行工作器機器、向它們分布待運行的程序、管理中間數(shù)據(jù)在這三個階段之間的臨時存儲和流動、同步階段的總體定序以及應對機器、網(wǎng)絡和軟件的瞬態(tài)故障。映射精簡模型一般涉及到將計算分解成包括單個映射操作和單個精簡操作的映射精簡操作。映射操作對輸入中的每個邏輯記錄執(zhí)行操作以計算中間鍵/值對的集合。精簡操作對共享相同鍵的值執(zhí)行操作以按照某一方式組合值。混洗操作(shuffleoperation)在這一模型中是隱式的,該操作涉及到對具有相同鍵的所有值分組。映射精簡庫202b可以實施映射階段、混洗階段和精簡階段以支持根據(jù)映射精簡模型而制定的計算。在一些實現(xiàn)方式中,為了使用映射精簡庫202b,用戶程序(或者另一個庫(比如流水線庫202c))調用映射精簡庫202b,從而指定標識輸入文件的信息、對用于接收輸出數(shù)據(jù)的輸出文件進行標識或者指定的信息以及映射操作符和精簡操作符這兩個應用專屬數(shù)據(jù)處理操作符。一般而言,映射操作符指定處理輸入數(shù)據(jù)以產生中間數(shù)據(jù)的映射函數(shù),并且精簡操作符指定合并或者以別的方式組合中間數(shù)據(jù)值的精簡函數(shù)。映射精簡庫202b繼而運用這一信息以實施該映射階段、混洗階段和精簡階段。映射階段通過從輸入源(比如文本文件、面向二進制記錄的文件或者MySql數(shù)據(jù)庫)讀取值或者鍵/值對的匯集來開始。大數(shù)據(jù)集可以由多個、甚至數(shù)以千計的文件(可以被稱為碎片)代表,并且可以讀取多個文件碎片作為單個邏輯輸入源。映射階段繼而對每個元素獨立和并行援引用戶定義的函數(shù)、映射函數(shù)或者映射器。對于每個輸入元素,用戶定義的函數(shù)發(fā)出零個或者更多個鍵/值對,這些鍵/值對是映射階段的輸出?;煜措A段取得由映射器發(fā)出的鍵/值對并且將具有相同鍵的所有鍵/值對分組在一起。混洗階段繼而向精簡階段這下一階段輸出每個相異鍵和具有該鍵的所有值的流。精簡階段取得由混洗階段發(fā)出的鍵分組數(shù)據(jù)并且對每個相異鍵和值組獨立和并行援引用戶定義的函數(shù)、精簡函數(shù)或者精簡器。向每個精簡器援引傳遞鍵和對與該鍵相關聯(lián)的所有值的迭代器,并且每個精簡器發(fā)出用于與輸入鍵相關聯(lián)的零個或者更多個替換值。精簡器通常對具有給定鍵的所有值執(zhí)行某種聚合。對于一些操作,精簡器僅為恒等函數(shù)。繼而,向輸出宿(例如,共享文件或者數(shù)據(jù)庫)寫入從所有精簡器調用發(fā)出的鍵/值對。為了實施這些階段,映射精簡庫202b可以將輸入片段劃分成M個片段(例如,64兆字節(jié)(MB)大小的文件)并且在機器群集(比如處理模塊104中的多個處理模塊)上啟動程序的多個副本,該程序使用庫202b。副本中的一個副本可以是主控副本,并且其余副本可以是由主控分配工作的工作器副本。主控選擇空閑工作器并且向每個空閑工作器分配映射任務或者精簡任務。存在M個映射任務(每個輸入片段有一個映射任務)。向映射任務分配的工作器使用映射器以對輸入執(zhí)行映射操作以產生例如被劃分成R個集合的中間結果。當中間結果劃分成R個集合時,存在R個精簡任務待分配。向精簡任務分配的工作器使用精簡器以對中間值執(zhí)行精簡操作以產生輸出。一旦完成了所有映射任務和所有精簡任務,主控就向運用映射精簡庫202b的用戶程序或者庫返回。作為結果,實施映射精簡操作為跨越處理設備群集的并行操作集合。對于先使用關聯(lián)交換操作來組合具有給定鍵的所有值的精簡器,可以指定單獨用戶定義組合器函數(shù)以在映射階段期間執(zhí)行對與給定鍵相關聯(lián)的值的部分組合。每個映射工作器可以保持已經(jīng)從映射器發(fā)出的鍵/值對的高速緩存,并且使用組合器函數(shù)以在向混洗階段發(fā)送組合的鍵/值對之前盡可能多地進行本地組合。精簡器可以通過組合來自不同映射工作器的值來完成組合步驟。作為默認,混洗階段可以向任意地、但是確定性地選擇的精簡工作器機器發(fā)送每個鍵和值組,其中這一選擇確定哪個輸出文件碎片將保持該鍵的結果。備選地,可以指定用戶定義的碎片器函數(shù),該碎片器函數(shù)選擇哪個精簡工作器機器應當接收用于給定鍵的組。用戶定義的碎片器可以用來輔助負荷平衡。用戶定義的碎片器也可以用來將輸出鍵分類到精簡“桶”中,其中第i個精簡工作器的所有鍵被排序在第i+ι個精簡工作器的所有鍵之前。與每個精簡工作器按照詞典順序處理鍵的事實聯(lián)系,這一種碎片器可以用來產生分類輸出。流水線庫202c提供支持數(shù)據(jù)并行流水線的函數(shù)和類,并且特別地提供包括映射精簡操作的鏈或者有向非循環(huán)圖形的流水線。流水線庫202c可以幫助減輕實施映射精簡操作的鏈的負擔中的一些負擔。一般而言,許多現(xiàn)實世界計算需要映射精簡級的鏈。盡管一些邏輯計算可以被表達為映射精簡操作,但是其它邏輯計算需要映射精簡操作的序列或者圖形。隨著邏輯計算的復雜性增長,將計算映射到映射精簡操作的物理序列的挑戰(zhàn)增加。一般將更高級概念(比如“對出現(xiàn)次數(shù)計數(shù)”或者“按照鍵接合表”)手工編譯成更低級映射精簡操作。此外,用戶可以承擔編寫驅動器程序以在恰當序列中援引映射精簡操作并且管理對保持數(shù)據(jù)的中間文件的創(chuàng)建和刪除的附加負擔。流水線庫202c可以回避或者減少產生涉及到多個映射精簡操作的數(shù)據(jù)并行流水線的一些難度以及針對開發(fā)者產生附加協(xié)調代碼以在這樣的數(shù)據(jù)并行流水線中將單獨映射精簡級鏈接在一起的需要。流水線庫202c也可以回避或者減少用于管理對在流水線級之間的中間結果的創(chuàng)建和以后刪除的附加工作。作為結果,流水線庫202c可以幫助防止邏輯計算本身變成隱藏于所有低級協(xié)調細節(jié)之中,由此使新開發(fā)者容易理解計算。另外,利用流水線庫202c可以幫助防止將流水線劃分成特定級變成向代碼“烤入(bake in) ”并且如果邏輯計算需要演變則以后難以改變。一般而言,應用軟件202a可以運用庫202b或者庫202c中的一個或者兩個庫。應用開發(fā)者可以開發(fā)應用軟件,該應用軟件運用映射精簡庫202b以執(zhí)行被制定為映射精簡操作的計算。備選地或者附加地,應用開發(fā)者可以在開發(fā)包括多個映射精簡操作的數(shù)據(jù)并行流水線時運用流水線庫202c。如下文進一步討論的那樣,流水線庫202c可以允許開發(fā)者使用其中實施流水線庫202c的本機編程語言以更自然方式對計算編碼,而未考慮在映射精簡操作方面設計邏輯計算或者構建操作的有序圖形。流水線庫202c可以在執(zhí)行之前在多個映射精簡操作方面制定邏輯計算,并且繼而通過實施映射精簡操作本身或者與映射精簡庫202b對接以實施映射精簡操作來執(zhí)行計算。圖3是圖示了可以用來實施流水線庫200c的流水線庫300的示例的框圖。流水線庫300包括一個或者多個并行數(shù)據(jù)匯集類302、一個或者多個并行操作304、評價器306、優(yōu)化器308和執(zhí)行器310。一般而言,并行數(shù)據(jù)匯集類302用來實例化并行數(shù)據(jù)對象,這些并行數(shù)據(jù)對象保持數(shù)據(jù)匯集,并且并行操作304用來對由并行數(shù)據(jù)對象保持的數(shù)據(jù)執(zhí)行并行操作。可以組成并行操作304以實施數(shù)據(jù)并行計算和整個流水線或者甚至多個流水線,可以使用并行匯集類302和并行操作304來實施并行操作304。并行數(shù)據(jù)匯集類302和并行操作304呈現(xiàn)對許多不同數(shù)據(jù)表示和對不同執(zhí)行策略的簡單高級統(tǒng)一抽象。并行數(shù)據(jù)匯集類302抽象出如何對數(shù)據(jù)進行表示的細節(jié),這些細節(jié)包括是否將數(shù)據(jù)表示為存儲器中的數(shù)據(jù)結構、一個或者多個文件或者外部存儲服務。類似地,并行操作304抽象出它們的實現(xiàn)策略,比如是否將操作實施為映射精簡庫202b的本地、依次循環(huán)、遠程并行援引、實施為對數(shù)據(jù)庫的查詢或者實施為流計算。
評價器306延緩對并行操作的評價而不是在執(zhí)行數(shù)據(jù)并行流水線時隨著遍歷并行操作而評價它們。取而代之,評價器306構造包含操作及其變元的內部執(zhí)行計劃數(shù)據(jù)流圖形。一旦構造了用于整個邏輯計算的執(zhí)行計劃數(shù)據(jù)流圖形,優(yōu)化器308例如通過應用將并行操作的鏈一起融合或者組合成更小數(shù)目的組合操作的圖形變換來修正執(zhí)行計劃。修正的執(zhí)行計劃可以包括廣義映射精簡操作,該廣義映射精簡操作包括多個并行映射操作和多個并行精簡操作(例如,下文進一步描述的MapShuffleCombineReduce操作)、但是可以用單個映射函數(shù)和單個精簡函數(shù)轉譯成單個映射精簡操作,該單個映射函數(shù)用于實施多個映射操作,該單個精簡函數(shù)用于實施多個精簡操作。執(zhí)行器310使用下層原語(例如,MapReduce操作)來執(zhí)行修正的操作。當運行執(zhí)行計劃時,執(zhí)行器310可以至少部分基于處理的數(shù)據(jù)的大小來選擇使用哪個策略以實施每個操作(例如,本地依次循環(huán)比對遠程并行MapReduce)。執(zhí)行器310也可以將遠程計算置于它們對其操作的數(shù)據(jù)附近,并且可以并行執(zhí)行獨立操作。執(zhí)行器310也可以管理對計算內所需任何中間文件的創(chuàng)建和清理??梢杂枚喾N編程語言中的任何編程語言實施流水線庫300。下文描述用Java(R)編程語言的一個實現(xiàn)方式的方面的示例。流水線庫300提供被稱為PCollection〈T>的并行數(shù)據(jù)匯集類,該并行數(shù)據(jù)匯集類是T類型的元素的不可變包。PCollection可以具有定義好的順序(稱為序列),或者元素可以是無序的(稱為匯集)。匯集由于它們更少被約束而可以比序列更高效地生成和處理。可以通過按照若干可能格式中的一種格式讀取文件來創(chuàng)建PCollectionCD。例如,可以讀取文本文件作為PCollection〈String>,并且可以在如何將每個二進制記錄解碼成T類型的對象的規(guī)范給定時讀取面向二進制記錄的文件作為PCollection〈T>。當使用Java(R)來實施流水線庫300時,也可以根據(jù)存儲器中的Java(R)CollectionCD創(chuàng)建PCollection<T>0可以讀入由多個文件碎片代表的數(shù)據(jù)集作為單個邏輯PCollection。例如:PCollection〈String>lines = readTextFileCollection(〃 /gfs/data/shakes/hamlet, txt");PCollection<DocInfo>docInfos = readRecordFileCollection ( " /gfs/webdocinfo/part-*" , recordsOf(Doclnf0.class));在這一示例中,recordsOf (…)指定其中將Doclnfo實例編碼為二進制記錄的特定方式。其它預定義編碼指定符可以包括用于UTF-8-編碼文本的stringsO、用于32位整數(shù)的可變長度編碼的intsO和用于根據(jù)對分量的編碼而推導的對的編碼的pairS0f(el,e2)。一些實現(xiàn)方式可以允許用戶指定他們自己的定制編碼。第二并行數(shù)據(jù)匯集類302是PTable〈K,V〉,該并行數(shù)據(jù)匯集類代表具有類型K的鍵和類型V的值的(不可變)多映射。PTable〈K,V〉可以僅為對的無序包。并行操作304中的一些并行操作可以僅適用于對的PColle`ction,并且在Java(R)中,PTable〈K, V〉可以被實施為PCollection〈Pair〈K,V 的子類以捕獲這一抽象。在另一語言中,PTable〈K,V〉可以被定義為PCollection〈Pair〈K, V 的類型同義詞。并行數(shù)據(jù)對象(比如PCollection)可以被實施為其中實施庫300的本機語言的第一類對象。當是這種情況時,對象可以如同在本機語言中的其它對象那樣可操控。例如,PCollection可以能夠向語言中的常規(guī)方法中傳遞和從這些方法返回,并且可以能夠存儲于語言的其它數(shù)據(jù)結構中(但是一些實現(xiàn)方式可能防止PCollection存儲于其它PCollection中)。本機語言的常規(guī)控制流程構造也可以能夠用來定義涉及到對象的計算,這些對象包括函數(shù)、條件句和循環(huán)。例如,如果Java(R)是本機語言,則:
權利要求
1.一種方法,包括: 在包括一個或者多個處理模塊并且提供本機處理環(huán)境的數(shù)據(jù)中心接收包括數(shù)據(jù)并行流水線的非置信應用,其中所述數(shù)據(jù)并行流水線指定包含多個元素的多個并行數(shù)據(jù)對象和與對所述元素操作的非置信函數(shù)相關聯(lián)的多個并行操作; 在所述本機處理環(huán)境中并且在所述處理模塊中的一個或者多個處理模塊上實例化第一安全處理環(huán)境; 在所述第一安全處理環(huán)境中執(zhí)行所述非置信應用,其中執(zhí)行所述應用生成與所述數(shù)據(jù)并行流水線對應的延緩的并行數(shù)據(jù)對象和延緩的并行操作的數(shù)據(jù)流圖形; 在所述第一安全處理環(huán)境以外傳達代表所述數(shù)據(jù)流圖形的信息; 在所述第一安全處理環(huán)境以外并且在所述本機處理環(huán)境中將一個或者多個圖形變換應用于代表所述數(shù)據(jù)流圖形的所述信息以生成修正的數(shù)據(jù)流圖形,所述修正的數(shù)據(jù)流圖形包括與所述非置信函數(shù)中的一個或者多個非置信函數(shù)相關聯(lián)的、在所述延緩的并行數(shù)據(jù)對象和延緩的組合并行數(shù)據(jù)操作中的一個或者多個延緩的并行數(shù)據(jù)對象和延緩的組合并行數(shù)據(jù)操作;并且 執(zhí)行所述延緩的組合并行操作以產生與所述延緩的并行數(shù)據(jù)對象對應的具體化的并行數(shù)據(jù)對象,其中執(zhí)行所述延緩的組合并行操作包括: 在所述本機處理環(huán)境中并且在所述處理模塊中的一個或者多個處理模塊上實例化一個或者多個第二安全處理環(huán)境; 在所述一個或者多個第二安全處理環(huán)境中執(zhí)行與所述延緩的組合并行操作相關聯(lián)的所述非置信函數(shù)。
2.根據(jù)權利要求1所述的方法,其中所述第一安全處理環(huán)境包括第一虛擬機,并且所述一個或者多個第二安全處理環(huán)境包括第二虛擬機。
3.根據(jù)權利要求2所述的方法,其中所述第一虛擬機和所述一個或者多個第二虛擬機是硬件虛擬機。
4.根據(jù)權利要求1所述的方法,其中在所述一個或者多個第二安全處理環(huán)境中執(zhí)行與所述延緩的組合并行操作相關聯(lián)的所述非置信函數(shù)包括: 從所述第二安全處理環(huán)境以外向所述第二安全處理環(huán)境中傳達輸入批處理記錄,所述輸入批處理記錄包括多個個別輸入記錄;并且 對所述輸入批處理中的所述個別記錄中的每個記錄執(zhí)行與所述延緩的組合并行操作相關聯(lián)的所述非置信函數(shù)中的至少一個非置信函數(shù)以生成輸出記錄; 將所述輸出記錄匯集成輸出批處理;并且 在所述第二安全處理環(huán)境以外傳達所述輸出批處理。
5.根據(jù)權利要求1所述的方法,還包括將所述非置信應用的輸出發(fā)送到向所述數(shù)據(jù)中心發(fā)送所述非置信應用的客戶端系統(tǒng)。
6.根據(jù)權利要求1所述的方法,其中在所述第一安全處理環(huán)境以外傳達代表所述數(shù)據(jù)流圖形的所述信息包括向在所述第一安全處理環(huán)境以外的執(zhí)行圖形服務傳達代表所述數(shù)據(jù)流圖形的所述信息。
7.根據(jù)權利要求1所述的方法,其中: 所述延緩的組合并行數(shù)據(jù)操作包括至少一個廣義映射精簡操作,所述廣義映射精簡操作包括多個并行映射操作和多個并行精簡操作并且可轉譯成單個映射精簡操作,所述單個映射精簡操作包括用于實施所述多個并行映射操作的單個映射函數(shù)和用于實施所述多個并行精簡操作的單個精簡函數(shù),所述單個映射函數(shù)和所述單個精簡函數(shù)包括所述非置信函數(shù)中的一個或者多個非置信函數(shù)。
8.根據(jù)權利要求7所述的方法,其中: 執(zhí)行所述延緩的組合并行操作包括將所述組合映射精簡操作轉譯成所述單個映射精簡操作;并且 在所述一個或者多個第二安全處理環(huán)境中執(zhí)行與所述延緩的組合并行操作相關聯(lián)的所述非置信函數(shù)包括在所述一個或者多個第二安全處理環(huán)境中執(zhí)行所述單個映射函數(shù)和所述單個精簡函數(shù)。
9.根據(jù)權利要求1所述的方法,其中: 在所述安全處理環(huán)境中執(zhí)行所述非置信應用包括在所述第一安全處理環(huán)境中的虛擬機內執(zhí)行所述非置信應用;并且 在所述一個或者多個安全處理環(huán)境內執(zhí)行與所述延緩的組合并行操作相關聯(lián)的所述非置信函數(shù)包括在所述一個或者多個第二安全處理環(huán)境內的虛擬機中執(zhí)行與所述延緩的組合并行操作相關聯(lián)的所述非置信函數(shù)。
10.根據(jù)權利要求1所述的方法,其中在所述第一安全處理環(huán)境以外傳達代表所述數(shù)據(jù)流圖形的信息包括使用遠程過程調用在所述第一安全處理環(huán)境以外傳達代表所述數(shù)據(jù)流圖形的息。
11.根據(jù)權利要求10所述的方法,還包括審核所述遠程過程調用。
12.—種系統(tǒng),包括:` 一個或者多個處理模塊,配置成提供本機處理環(huán)境并且實施以下安全處理環(huán)境和服務: 在所述本機處理環(huán)境中的第一安全處理環(huán)境,所述第一安全處理環(huán)境被配置成: 執(zhí)行包括數(shù)據(jù)并行流水線的非置信應用,所述數(shù)據(jù)并行流水線指定包含多個元素的多個并行數(shù)據(jù)對象和與對所述元素操作的非置信函數(shù)相關聯(lián)的多個并行操作;其中執(zhí)行所述應用生成與所述數(shù)據(jù)并行流水線對應的延緩的并行數(shù)據(jù)對象和延緩的并行操作的數(shù)據(jù)流圖形; 在所述第一安全處理環(huán)境以外傳達代表所述數(shù)據(jù)流圖形的信息; 位于所述第一安全處理環(huán)境以外并且在所述本機處理環(huán)境中的服務,所述服務被配置成: 從所述第一安全處理環(huán)境接收代表所述數(shù)據(jù)流圖形的所述信息; 將一個或者多個圖形變換應用于代表所述數(shù)據(jù)流圖形的所述信息以生成修正的數(shù)據(jù)流圖形,所述修正的數(shù)據(jù)流圖形包括與所述非置信函數(shù)中的一個或者多個非置信函數(shù)相關聯(lián)的、所述延緩的并行數(shù)據(jù)對象和延緩的組合并行數(shù)據(jù)操作中的一個或者多個延緩的并行數(shù)據(jù)對象和延緩的組合并行數(shù)據(jù)操作; 引起執(zhí)行所述延緩的組合并行操作以產生與所述延緩的并行數(shù)據(jù)對象對應的具體化的并行數(shù)據(jù)對象;以及 在所述本機處理環(huán)境中的一個或者多個第二安全處理環(huán)境,所述一個或者多個第二安全處理環(huán)境被配置成執(zhí)行與所述延緩的組合并行操作相關聯(lián)的所述非置信函數(shù)以造成執(zhí)行所述延緩的組合并行操作。
13.根據(jù)權利要求12所述的系統(tǒng),其中所述第一安全處理環(huán)境包括第一虛擬機,并且所述一個或者多個第二安全處理環(huán)境包括第二虛擬機。
14.根據(jù)權利要求13所述的系統(tǒng),其中所述第一虛擬機和所述一個或者多個第二虛擬機是硬件虛擬機。
15.根據(jù)權利要求12所述的系統(tǒng),其中: 所述一個或者多個處理設備被配置成實施工作器,所述工作器被配置成從所述第二安全處理環(huán)境以外向所述第二安全處理環(huán)境中傳達輸入批處理記錄,所述輸入批處理記錄包括多個個別輸入記錄;并且 為了執(zhí)行與所述延緩的組合并行操作相關聯(lián)的所述非置信函數(shù),所述一個或者多個第二安全處理環(huán)境被配置成: 對所述輸入批處理中的所述個別記錄中的每個記錄執(zhí)行與所述延緩的組合并行操作相關聯(lián)的所述非置信函數(shù)中的至少一個非置信函數(shù)以生成輸出記錄; 將所述輸出記錄匯集成輸出批處理;并且 向所述工作器傳達所述輸出批處理。
16.根據(jù)權利要求12 所述的系統(tǒng),還包括配置成接收所述非置信應用的輸出的客戶端系統(tǒng)。
17.根據(jù)權利要求12所述的系統(tǒng),其中: 所述延緩的組合并行數(shù)據(jù)操作包括至少一個廣義映射精簡操作,所述廣義映射精簡操作包括多個并行映射操作和多個并行精簡操作并且可轉譯成單個映射精簡操作,所述單個映射精簡操作包括用于實施所述多個并行映射操作的單個映射函數(shù)和用于實施所述多個并行精簡操作的單個精簡函數(shù),所述單個映射函數(shù)和所述單個精簡函數(shù)包括所述非置信函數(shù)中的一個或者多個非置信函數(shù)。
18.根據(jù)權利要求17所述的系統(tǒng),其中: 所述服務被配置成將所述組合映射精簡操作轉譯成所述單個映射精簡操作;并且 所述一個或者多個第二安全處理環(huán)境被配置成在所述一個或者多個第二安全處理環(huán)境中執(zhí)行所述單個映射函數(shù)和所述單個精簡函數(shù)。
19.根據(jù)權利要求12所述的系統(tǒng),其中: 所述第一安全處理環(huán)境被配置成在所述第一安全處理環(huán)境中的虛擬機內執(zhí)行所述非置信應用;并且 所述一個或者多個第二安全處理環(huán)境內被配置成在所述一個或者多個第二安全處理環(huán)境內的虛擬機中執(zhí)行與所述延緩的組合并行操作相關聯(lián)的所述非置信函數(shù)。
20.一種存儲指令的計算機可讀介質,所述指令在由一個或者多個處理設備執(zhí)行時,使所述一個或者多個處理設備: 訪問代表延緩的并行數(shù)據(jù)對象和延緩的并行操作的數(shù)據(jù)流圖形的信息,所述延緩的并行數(shù)據(jù)對象和延緩的并行操作對應于由在非置信應用中包括的數(shù)據(jù)并行流水線指定的并行數(shù)據(jù)對象和并行操作,其中所述并行數(shù)據(jù)對象包含多個元素,并且所述并行操作與對所述元素操作的非置信函數(shù)相關聯(lián);將一個或者多個圖形變換應用于代表所述數(shù)據(jù)流圖形的所述信息以生成修正的數(shù)據(jù)流圖形,所述修正的數(shù)據(jù)流圖形包括與所述非置信函數(shù)中的一個或者多個非置信函數(shù)相關聯(lián)的、所述延緩的并行數(shù)據(jù)對象和延緩的組合并行數(shù)據(jù)操作中的一個或者多個延緩的并行數(shù)據(jù)對象和延緩的組合并行數(shù)據(jù)操作;并且 執(zhí)行所述延緩的組合并行操作以產生與所述延緩的并行數(shù)據(jù)對象對應的具體化的并行數(shù)據(jù)對象,其中,為了執(zhí)行所述延緩的組合并行操作,所述指令包括使所述一個或者多個處理設備執(zhí)行以下操作的指令: 實例化一個或者多個安全處理環(huán)境; 在所述一個或者多個安全處理環(huán)境中執(zhí)行與所述延緩的組合并行操作相關聯(lián)的所述非置信函數(shù)。
21.根據(jù)權利要求22所述的介質,其中為了訪問代表延緩的并行數(shù)據(jù)對象和延緩的并行操作的所述數(shù)據(jù)流圖形的信息,所述指令包括在由所述一個或者多個處理設備執(zhí)行時使所述一個或者多個處理設備執(zhí)行以下操作的指令: 接收包括所述數(shù)據(jù)并行流水線的所述非置信應用; 實例化初始安全處理環(huán)境; 在所述初始安全處理環(huán)境中執(zhí)行所述非置信應用,其中執(zhí)行所述應用生成延緩的并行數(shù)據(jù)對象和延緩的并行操作的所述數(shù)據(jù)流圖形;并且 在所述初始安全處理環(huán)境以外傳達代表所述數(shù)據(jù)流圖形的所述信息,從而使得所述圖形變換在所述初始安全處理環(huán)境以外應用于代表所述數(shù)據(jù)流圖形的所述信息。
22.根據(jù)權利要求21所述的介質,其中所述一個或者多個安全處理環(huán)境包括虛擬機。
23.—種系統(tǒng),包括: 一個或者多個處理設備; 一個或者多個存儲設備,所述存儲設備存儲在由所述一個或者多個處理設備執(zhí)行時實施以下各項的指令: 包括數(shù)據(jù)并行流水線的應用,其中所述數(shù)據(jù)并行流水線指定包含多個元素的多個并行數(shù)據(jù)對象和對所述并行數(shù)據(jù)對象操作的多個并行操作; 評價器,基于所述數(shù)據(jù)并行流水線配置成生成與所述數(shù)據(jù)并行流水線對應的延緩的并行數(shù)據(jù)對象和延緩的并行操作的數(shù)據(jù)流圖形; 優(yōu)化器,配置成將一個或者多個圖形變換應用于所述數(shù)據(jù)流圖形以生成修正的數(shù)據(jù)流圖形,所述修正的數(shù)據(jù)流圖形包括所述延緩的并行數(shù)據(jù)對象和延緩的組合并行數(shù)據(jù)操作中的一個或者多個延緩的并行數(shù)據(jù)對象和延緩的組合并行數(shù)據(jù)操作;以及 執(zhí)行器,配置成執(zhí)行所述延緩的組合并行操作以產生與所述延緩的并行數(shù)據(jù)對象對應的具體化的并行數(shù)據(jù)對象。
24.根據(jù)權利要求23所述的系統(tǒng),其中: 所述延緩的組合并行數(shù)據(jù)操作包括至少一個廣義映射精簡操作,所述廣義映射精簡操作包括多個并行映射操作和多個并行精簡操作并且可轉譯成單個映射精簡操作,所述單個映射精簡操作包括用于實施所述多個并行映射操作的單個映射函數(shù)和用于實施所述多個并行精簡操作的單個精簡函數(shù)。
25.根據(jù)權利要求24所述的系統(tǒng),其中為了執(zhí)行所述廣義映射精簡操作,所述執(zhí)行器被配置成將所述組合映射精簡操作轉譯成所述單個映射精簡操作并且執(zhí)行所述單個映射精簡操作。
26.根據(jù)權利要求25所述的系統(tǒng),其中為了執(zhí)行所述單個映射精簡操作,所述執(zhí)行器被配置成確定是否執(zhí)行所述單個映射精簡操作作為本地順序操作或者遠程并行操作。
27.根據(jù)權利要求25所述的系統(tǒng),其中為了將所述廣義映射精簡操作轉譯成所述單個映射精簡操作,所述執(zhí)行器被配置成生成包括所述多個映射操作的映射函數(shù)和包括所述多個精簡器操作的精簡器函數(shù)。
28.根據(jù)權利要求23所述的系統(tǒng),其中每個延緩的并行數(shù)據(jù)對象包括指針,所述指針指向產生所述并行數(shù)據(jù)對象的并行數(shù)據(jù)操作。
29.根據(jù)權利要求23所述的系統(tǒng),其中每個延緩的并行操作包括指向并行數(shù)據(jù)對象的指針和指向延緩的并行對象的指針,所述并行數(shù)據(jù)對象是向所述延緩的并行操作的輸入,所述延緩的并行對象是所述延緩的并行操作的輸出。
30.根據(jù)權利要求23所述的系統(tǒng),其中每個具體化的對象包括包含于所述對象中的數(shù)據(jù)。
31.根據(jù)權利要求23所述的系統(tǒng),其中所述多個并行數(shù)據(jù)對象是主機編程語言的第一類對象。
32.根據(jù)權利要求23所述的系統(tǒng),其中所述流水線還包括單個數(shù)據(jù)對象,所述單個數(shù)據(jù)對象包含單個元素,并且所述數(shù)據(jù)流圖形包括對應的延緩的單個數(shù)據(jù)對象。
33.根據(jù)權利要求32所述的系統(tǒng),其中所述流水線中的所述多個并行操作中的至少一個并行操作對所述單個數(shù)據(jù) 對象和所述多個并行數(shù)據(jù)對象中的一個并行數(shù)據(jù)對象操作,并且所述數(shù)據(jù)流圖形包括對延緩的單個數(shù)據(jù)對象和延緩的并行數(shù)據(jù)對象操作的對應的延緩的并行操作。
34.根據(jù)權利要求23所述的系統(tǒng),其中所述執(zhí)行器被配置成高速緩存執(zhí)行所述延緩的組合并行操作的一個或者多個結果以用于在所述數(shù)據(jù)并行流水線的將來執(zhí)行中使用。
35.一種系統(tǒng),包括: 一個或者多個處理設備; 一個或者多個存儲設備,所述存儲設備存儲在由所述一個或者多個處理設備執(zhí)行時實施以下各項的指令: 執(zhí)行器,配置成: 訪問數(shù)據(jù)流圖形,所述數(shù)據(jù)流圖形包括延緩的并行數(shù)據(jù)對象和延緩的組合并行數(shù)據(jù)操作;并且 執(zhí)行所述延緩的組合并行操作以產生與所述延緩的并行數(shù)據(jù)對象對應的具體化的并行數(shù)據(jù)對象; 其中,針對所述延緩的組合并行操作中的至少一個延緩的組合并行操作,所述執(zhí)行器被配置成通過以下操作來執(zhí)行所述至少一個延緩的組合并行操作: 確定與所述至少一個延緩的組合并行操作相關聯(lián)的數(shù)據(jù)的估計的大?。? 確定所述估計的大小是否超過閾值大?。? 如果所述估計的大小在閾值大小以下,則執(zhí)行所述至少一個延緩的組合并行操作作為本地順序操作;并且如果所述估計的大小超過閾值大小,則執(zhí)行所述至少一個延緩的組合并行操作作為遠程并行操作。
36.根據(jù)權利要求35所述的系統(tǒng),其中與所述至少一個延緩的組合并行操作相關聯(lián)的所述數(shù)據(jù)包括用于所述至少一個延緩的組合并行操作的輸入數(shù)據(jù)、由所述至少一個延緩的組合并行操作產生的中間數(shù)據(jù)或者由所述至少一個延緩的組合并行操作產生的輸出數(shù)據(jù)中的一種或者多種數(shù)據(jù)。
37.根據(jù)權利要求35所述的系統(tǒng),其中: 所述至少一個延緩的組合并行數(shù)據(jù)操作是廣義映射精簡操作,所述廣義映射精簡操作包括多個并行映射操作 和多個并行精簡操作并且可轉譯成單個映射精簡操作,所述單個映射精簡操作包括用于實施所述多個并行映射操作的單個映射函數(shù)和用于實施所述多個并行精簡操作的單個精簡函數(shù);并且 為了執(zhí)行所述廣義映射精簡操作,所述執(zhí)行器被配置成將所述組合映射精簡操作轉譯成所述單個映射精簡操作并且執(zhí)行所述單個映射精簡操作。
38.根據(jù)權利要求37所述的系統(tǒng),其中,為了執(zhí)行所述單個映射精簡操作作為遠程并行操作,所述執(zhí)行器被配置成使所述單個映射精簡操作在數(shù)據(jù)中心中的多個不同處理模塊上被復制和執(zhí)行。
39.根據(jù)權利要求37所述的系統(tǒng),其中,為了將所述廣義映射精簡操作轉譯成所述單個映射精簡操作,所述執(zhí)行器被配置成生成包括所述多個映射操作的映射函數(shù)和包括所述多個精簡器操作的精簡器函數(shù)。
40.根據(jù)權利要求35所述的系統(tǒng),其中,為了確定所述估計的大小,所述執(zhí)行器被配置成訪問所述數(shù)據(jù)流圖形中的注釋,所述注釋反映與所述至少一個延緩的組合并行操作相關聯(lián)的所述數(shù)據(jù)的大小的估計。
41.根據(jù)權利要求35所述的系統(tǒng),其中每個延緩的并行數(shù)據(jù)對象包括指針,所述指針指向產生所述并行數(shù)據(jù)對象的并行數(shù)據(jù)操作。
42.根據(jù)權利要求35所述的系統(tǒng),其中每個延緩的并行操作包括指向并行數(shù)據(jù)對象的指針和指向延緩的并行對象的指針,所述并行數(shù)據(jù)對象是向所述延緩的并行操作的輸入,所述延緩的并行對象是所述延緩的并行操作的輸出。
43.根據(jù)權利要求35所述的系統(tǒng),其中每個具體化的對象包括包含于所述對象中的數(shù)據(jù)。
44.一種系統(tǒng),包括: 一個或者多個處理設備; 一個或者多個存儲設備,所述存儲設備存儲在由所述一個或者多個處理設備執(zhí)行時實施以下各項的指令: 執(zhí)行器,配置成: 訪問數(shù)據(jù)流圖形,所述數(shù)據(jù)流圖形包括延緩的并行數(shù)據(jù)對象和延緩的組合并行數(shù)據(jù)操作,其中所述延緩的組合并行數(shù)據(jù)操作中的至少一個延緩的組合并行數(shù)據(jù)操作是廣義映射精簡操作,所述廣義映射精簡操作包括多個并行映射操作和多個并行精簡操作并且可轉譯成單個映射精簡操作,所述單個映射精簡操作包括用于實施所述多個并行映射操作的單個映射函數(shù)和用于實施所述多個并行精簡操作的單個精簡函數(shù);并且執(zhí)行所述延緩的組合并行操作以產生與所述延緩的并行數(shù)據(jù)對象對應的具體化的并行數(shù)據(jù)對象; 其中,為了執(zhí)行所述廣義映射精簡操作,所述執(zhí)行器被配置成將所述組合映射精簡操作轉譯成所述單個映射精簡操作并且執(zhí)行所述單個映射精簡操作。
45.根據(jù)權利要求44所述的系統(tǒng),其中,為了將所述廣義映射精簡操作轉譯成所述單個映射精簡操作,所述執(zhí)行器被配置成生成包括所述多個映射操作的映射函數(shù)和包括所述多個精簡操作的精簡函數(shù)。
46.根據(jù)權利要求45所述的系統(tǒng),其中所述執(zhí)行器被配置成執(zhí)行所述單個映射精簡操作作為遠程并行操作。
47.根據(jù)權利要求46所述的系統(tǒng),其中,為了執(zhí)行所述單個映射精簡操作作為遠程并行操作,所述執(zhí)行器被配置成使所述單個映射精簡操作由多個不同處理模塊上的多個工作器進程執(zhí)行。
48.根據(jù)權利要求46所述的系統(tǒng),其中,為了使所述單個映射精簡操作由多個工作器進程執(zhí)行,所述執(zhí)行器被配置成引起針對所述映射操作中的每個映射操作來援引多個映射工作器進程,其中向所述多個映射工作器進程中的每個映射工作器進程分配索引編號。
49.根據(jù)權利要求48所述的系統(tǒng),其中所述映射工作器進程中的每個映射工作器進程被配置成:接收實施所述多個映射操作的所述映射函數(shù)、與所述映射操作中的一個映射操作相關聯(lián)的一個或者多個輸入和所述映射工作器進程的相關聯(lián)的索引;基于所述映射工作器進程的相關聯(lián)的索引選擇與所述輸入相關聯(lián)的所述映射操作;并且對所述一個或者多個輸入援引所選擇的映射操作。
50.根據(jù)權利要求46所述的系統(tǒng),其中,為了使所述單個映射精簡操作由多個工作器進程執(zhí)行,所述執(zhí)行器被配置成使得針對所述精簡操作中的每個精簡操作援引多個精簡工作器進程,其中向所述多個精簡`工作器進程中的每個精簡工作器進程分配索引編號。
51.根據(jù)權利要求50所述的系統(tǒng),其中所述多個精簡工作器進程中的每個精簡工作器進程被配置成:接收實施所述多個精簡操作的所述精簡函數(shù)、與所述精簡操作中的一個精簡操作相關聯(lián)的一個或者多個輸入和所述精簡工作器進程的相關聯(lián)的索引;基于所述工作器進程的相關聯(lián)的索引選擇與所述輸入相關聯(lián)的所述精簡操作;并且對所述一個或者多個輸入援引所選擇的精簡操作。
全文摘要
在包括一個或者多個處理模塊并且提供本機處理環(huán)境的數(shù)據(jù)中心接收非置信應用。非置信應用包括數(shù)據(jù)并行流水線。安全處理環(huán)境用來執(zhí)行非置信應用。數(shù)據(jù)并行流水線可以指定多個并行數(shù)據(jù)對象和并行操作?;跀?shù)據(jù)并行流水線,可以生成延緩的并行數(shù)據(jù)對象和延緩的并行操作的數(shù)據(jù)流圖形,并且可以將一個或者多個圖形變換應用于數(shù)據(jù)流圖形以生成修正的數(shù)據(jù)流圖形,修正的數(shù)據(jù)流圖形包括延緩的并行數(shù)據(jù)對象和延緩的組合并行數(shù)據(jù)操作中的一個或者多個延緩的并行數(shù)據(jù)對象和延緩的組合并行數(shù)據(jù)操作??梢詧?zhí)行延緩的組合并行操作以產生與延緩的并行數(shù)據(jù)對象對應的具體化的并行數(shù)據(jù)對象。
文檔編號G06F9/30GK103109260SQ201180032739
公開日2013年5月15日 申請日期2011年5月4日 優(yōu)先權日2010年5月4日
發(fā)明者C·D·查姆伯斯, A·拉尼瓦拉, F·J·皮里, R·R·亨利, J·蒂加尼, S·R·阿達姆斯, R·布拉德肖, N·韋曾鮑姆 申請人:谷歌公司