緩沖區(qū)的存儲地址開始讀取,直到下一個數(shù)據(jù)元素指示的存儲地址或所述第一緩沖區(qū)末端結束讀取數(shù)據(jù)。
[0155]在本發(fā)明一些實施例中,處理器920還可以執(zhí)行以下步驟:所述數(shù)據(jù)預處理器根據(jù)所述預設的解析函數(shù)將所述數(shù)據(jù)集合的數(shù)據(jù)轉換成所述解析函數(shù)指定的滿足邏輯運算的數(shù)據(jù)格式。
[0156]在本發(fā)明一些實施例中,處理器920還可以執(zhí)行以下步驟:所述數(shù)據(jù)預處理器將所述數(shù)據(jù)塊中的數(shù)據(jù)轉換成所述GPU中的存儲格式。
[0157]在本發(fā)明一些實施例中,處理器920還可以執(zhí)行以下步驟:當所述數(shù)據(jù)拼接器將所述數(shù)據(jù)塊拼接到所述GPU中被分配存儲數(shù)據(jù)塊的工作緩沖區(qū)失敗時,則暫停拼接所述數(shù)據(jù)塊,并觸發(fā)所述GPU處理所述工作緩沖區(qū)存儲的數(shù)據(jù)塊。
[0158]在本發(fā)明一些實施例中,處理器920還可以執(zhí)行以下步驟:所述數(shù)據(jù)拼接器從游標參數(shù)指示的起始地址開始拼接所述數(shù)據(jù)塊,所述游標參數(shù)用于指示所述GPU中被分配存儲數(shù)據(jù)塊的工作緩沖區(qū)中可用于存儲數(shù)據(jù)塊的起始地址。
[0159]在本發(fā)明一些實施例中,處理器920還可以執(zhí)行以下步驟:所述數(shù)據(jù)拼接器通知所述GPU所述數(shù)據(jù)塊的大?。凰鰯?shù)據(jù)拼接器更新所述游標參數(shù)。
[0160]在本發(fā)明一些實施例中,存儲器910可以用來存儲數(shù)據(jù)集合、元數(shù)據(jù)以及數(shù)據(jù)塊;
[0161]在本發(fā)明一些實施例中,存儲器910還可以用來存儲地址索引數(shù)組。
[0162]在本發(fā)明一些實施例中,存儲器910還可以用來存儲游標參數(shù)。
[0163]在本發(fā)明一些實施例中,存儲器910還可以用來存儲運算結果。
[0164]本領域普通技術人員可以理解實現(xiàn)上述實施例方法中的全部或部分步驟是可以通過程序來指令相關的硬件完成,所述的程序可以存儲于一種計算機可讀存儲介質中,上述提到的存儲介質可以是只讀存儲器,磁盤或光盤等。
[0165]以上對本發(fā)明所提供的一種數(shù)據(jù)處理方法及相關設備進行了詳細介紹,對于本領域的一般技術人員,依據(jù)本發(fā)明實施例的思想,在【具體實施方式】及應用范圍上均會有改變之處,綜上所述,本說明書內(nèi)容不應理解為對本發(fā)明的限制。
【主權項】
1.一種數(shù)據(jù)處理方法,其特征在于,應用于MapReduce架構下的Hadoop集群,所述Hadoop集群包括主節(jié)點設備和從節(jié)點設備,所述從節(jié)點設備包括處理器CPU和圖形處理器GPU,所述從節(jié)點設備從所述主節(jié)點設備獲取數(shù)據(jù)分片,所述CPU中設置有數(shù)據(jù)預處理器和數(shù)據(jù)拼接器,所述方法包括: 所述數(shù)據(jù)預處理器從所述CPU的第一緩沖區(qū)讀取元數(shù)據(jù);其中,當從數(shù)據(jù)分片獲取的數(shù)據(jù)集合存儲進所述第一緩沖區(qū)時,在所述第一緩沖區(qū)頭部為所述數(shù)據(jù)集合添加元數(shù)據(jù),所述元數(shù)據(jù)中包括所述數(shù)據(jù)集合的數(shù)據(jù)在所述第一緩沖區(qū)的存儲地址; 所述數(shù)據(jù)預處理器根據(jù)所述元數(shù)據(jù)所指示的存儲地址從所述第一緩沖區(qū)讀取所述數(shù)據(jù)集合的數(shù)據(jù); 所述數(shù)據(jù)預處理器根據(jù)預設解析函數(shù),將所述數(shù)據(jù)集合的數(shù)據(jù)轉換成所述預設解析函數(shù)所指示的數(shù)據(jù)格式,并將轉換后的數(shù)據(jù)集合生成數(shù)據(jù)塊后存儲在所述CPU的第二緩沖區(qū),以使得所述數(shù)據(jù)拼接器從所述第二緩沖區(qū)讀取所述數(shù)據(jù)塊拼接到所述GPU。
2.根據(jù)權利要求1所述的方法,其特征在于,所述元數(shù)據(jù)具體包括地址索引數(shù)組,所述地址索引數(shù)組包含有與所述數(shù)據(jù)集合的數(shù)據(jù)一一對應的數(shù)據(jù)元素,所述數(shù)據(jù)元素用于指示所述數(shù)據(jù)集合的數(shù)據(jù)在所述第一緩沖區(qū)的存儲地址,進而所述數(shù)據(jù)預處理器根據(jù)所述元數(shù)據(jù)所指示的存儲地址從所述第一緩沖區(qū)讀取數(shù)據(jù)集合中的數(shù)據(jù)包括: 所述數(shù)據(jù)預處理器從所述地址索引數(shù)組的數(shù)據(jù)元素指示在第一緩沖區(qū)的存儲地址開始讀取,直到下一個數(shù)據(jù)元素指示的存儲地址或所述第一緩沖區(qū)末端結束讀取數(shù)據(jù)。
3.根據(jù)權利要求1所述的方法,其特征在于,所述將所述數(shù)據(jù)集合的數(shù)據(jù)轉換成所述預設解析函數(shù)所指示的數(shù)據(jù)格式包括: 所述數(shù)據(jù)預處理器根據(jù)所述預設的解析函數(shù)將所述數(shù)據(jù)集合的數(shù)據(jù)轉換成所述解析函數(shù)指定的滿足邏輯運算的數(shù)據(jù)格式。
4.根據(jù)權利要求3所述的方法,其特征在于,所述方法還包括: 當所述第一緩沖區(qū)對所述數(shù)據(jù)集合的數(shù)據(jù)的存儲格式與所述GPU中對數(shù)據(jù)的存儲格式不一致時,所述將轉換后的數(shù)據(jù)集合生成數(shù)據(jù)塊后包括: 所述數(shù)據(jù)預處理器將所述數(shù)據(jù)塊中的數(shù)據(jù)轉換成所述GPU中的存儲格式。
5.根據(jù)權利要求1?4任一項所述的方法,其特征在于, 所述數(shù)據(jù)集合具體由所述數(shù)據(jù)分片中的多個鍵值對的值拼接組成。
6.根據(jù)權利要求1?4任一項所述的方法,其特征在于, 所述第一緩沖區(qū)和所述第二緩沖區(qū)由所述CPU自動分配和回收,所述第一緩沖區(qū)的生存周期為一個數(shù)據(jù)分片的處理時間,所述第二緩沖區(qū)的生存周期為一個數(shù)據(jù)集合的處理時間。
7.一種數(shù)據(jù)處理方法,其特征在于,應用于MapReduce架構下的Hadoop集群,所述Hadoop集群包括主節(jié)點設備和從節(jié)點設備,所述從節(jié)點設備包括處理器CPU和圖形處理器GPU,所述從節(jié)點設備從所述主節(jié)點設備獲取數(shù)據(jù)分片,所述CPU中設置有數(shù)據(jù)預處理器和數(shù)據(jù)拼接器,所述方法包括: 所述數(shù)據(jù)拼接器從所述CPU的第二緩沖區(qū)讀取所述數(shù)據(jù)預處理器生成的數(shù)據(jù)塊; 所述數(shù)據(jù)拼接器將所述數(shù)據(jù)塊拼接到所述GPU中被分配存儲數(shù)據(jù)塊的工作緩沖區(qū)。
8.根據(jù)權利要求7所述的方法,其特征在于,所述方法還包括: 當所述數(shù)據(jù)拼接器將所述數(shù)據(jù)塊拼接到所述GPU中被分配存儲數(shù)據(jù)塊的工作緩沖區(qū)失敗時,則暫停拼接所述數(shù)據(jù)塊,并觸發(fā)所述GPU處理所述工作緩沖區(qū)存儲的數(shù)據(jù)塊。
9.根據(jù)權利要求7或8所述的方法,其特征在于,所述數(shù)據(jù)拼接器將所述數(shù)據(jù)塊拼接到所述GPU中被分配存儲數(shù)據(jù)塊的工作緩沖區(qū)包括: 所述數(shù)據(jù)拼接器從游標參數(shù)指示的起始地址開始拼接所述數(shù)據(jù)塊,所述游標參數(shù)用于指示所述GPU中被分配存儲數(shù)據(jù)塊的工作緩沖區(qū)中可用于存儲數(shù)據(jù)塊的起始地址。
10.根據(jù)權利要求9所述的方法,其特征在于,當拼接所述數(shù)據(jù)塊成功后,所述方法還包括: 所述數(shù)據(jù)拼接器通知所述GPU所述數(shù)據(jù)塊的大?。? 所述數(shù)據(jù)拼接器更新所述游標參數(shù)。
11.一種數(shù)據(jù)預處理器,其特征在于,包括: 第一讀取單元,用于從所述CPU的第一緩沖區(qū)讀取元數(shù)據(jù);其中,當從數(shù)據(jù)分片獲取的數(shù)據(jù)集合存儲進所述第一緩沖區(qū)時,在所述第一緩沖區(qū)頭部為所述數(shù)據(jù)集合添加元數(shù)據(jù),所述元數(shù)據(jù)中包括所述數(shù)據(jù)集合的數(shù)據(jù)在所述第一緩沖區(qū)的存儲地址; 第二讀取單元,用于根據(jù)所述元數(shù)據(jù)所指示的存儲地址從所述第一緩沖區(qū)讀取所述數(shù)據(jù)集合的數(shù)據(jù); 轉換單元,用于根據(jù)預設解析函數(shù),將所述數(shù)據(jù)集合的數(shù)據(jù)轉換成所述預設解析函數(shù)所指示的數(shù)據(jù)格式,并將轉換后的數(shù)據(jù)集合生成數(shù)據(jù)塊; 存儲單元,用于將所述數(shù)據(jù)塊存儲在所述CPU的第二緩沖區(qū),以使得所述數(shù)據(jù)拼接器從所述第二緩沖區(qū)讀取所述數(shù)據(jù)塊拼接到所述GPU。
12.根據(jù)權利要求11所述的數(shù)據(jù)預處理器,其特征在于,所述元數(shù)據(jù)具體包括地址索引數(shù)組,所述地址索引數(shù)組包含有與所述數(shù)據(jù)集合的數(shù)據(jù)一一對應的數(shù)據(jù)元素,所述數(shù)據(jù)元素用于指示所述數(shù)據(jù)集合的數(shù)據(jù)在所述第一緩沖區(qū)的存儲地址,進而所述第二讀取單元包括: 數(shù)據(jù)讀取單元,用于從所述地址索引數(shù)組的數(shù)據(jù)元素指示在第一緩沖區(qū)的存儲地址開始讀取,直到下一個數(shù)據(jù)元素指示的存儲地址或所述第一緩沖區(qū)末端結束讀取數(shù)據(jù)。
13.根據(jù)權利要求11或12所述的數(shù)據(jù)預處理器,其特征在于,所述解析單元包括: 數(shù)據(jù)格式轉換單元,用于通過預設的解析函數(shù)將所述數(shù)據(jù)集合的數(shù)據(jù)轉換成所述解析函數(shù)指定的滿足邏輯運算的數(shù)據(jù)格式 生成單元,用于將轉換的數(shù)據(jù)集合生成數(shù)據(jù)塊。
14.根據(jù)權利要求11所述的數(shù)據(jù)預處理器,其特征在于,所述解析單元還包括: 格式轉換單元,用于當所述第一緩沖區(qū)對所述數(shù)據(jù)集合的數(shù)據(jù)的存儲格式與所述GPU中對數(shù)據(jù)的存儲格式不一致時,將所述數(shù)據(jù)塊中的數(shù)據(jù)轉換成所述GPU中的存儲格式。
15.一種數(shù)據(jù)拼接器,其特征在于,包括: 第三讀取單元,用于從所述CPU的第二緩沖區(qū)讀取所述數(shù)據(jù)預處理器生成的數(shù)據(jù)塊; 拼接處理單元,用于將所述數(shù)據(jù)塊拼接到所述GPU中被分配存儲數(shù)據(jù)塊的工作緩沖區(qū)。
16.根據(jù)權利要求15所述的數(shù)據(jù)拼接器,其特征在于,所述數(shù)據(jù)拼接器還包括: 觸發(fā)處理單元,用于當所述數(shù)據(jù)拼接器將所述數(shù)據(jù)塊拼接到所述GPU中被分配存儲數(shù)據(jù)塊的工作緩沖區(qū)失敗時,則暫停拼接所述數(shù)據(jù)塊,并觸發(fā)所述GPU處理所述工作緩沖區(qū)存儲的數(shù)據(jù)塊。
17.根據(jù)權利要求15或16所述的數(shù)據(jù)拼接器,其特征在于,所述拼接處理單元具體用于從游標參數(shù)指示的起始地址開始拼接所述數(shù)據(jù)塊,所述游標參數(shù)用于指示所述GPU中被分配存儲數(shù)據(jù)塊的工作緩沖區(qū)中可用于存儲數(shù)據(jù)塊的起始地址。
18.根據(jù)權利要求17所述的數(shù)據(jù)拼接器,其特征在于,所述數(shù)據(jù)拼接器還包括: 通知單元,用于通知所述GPU所述數(shù)據(jù)塊的大小; 更新單元,用于更新所述游標參數(shù)。
19.一種處理器,其特征在于,包括:如權利要求11所述的數(shù)據(jù)預處理器和權利要求15所述的數(shù)據(jù)拼接器。
20.根據(jù)權利要求19所述的處理器,其特征在于,所述處理器還包括: 自動分配和回收所述第一緩沖區(qū)和所述第二緩沖區(qū),所述第一緩沖區(qū)的生存周期為一個數(shù)據(jù)分片的處理時間,所述第二緩沖區(qū)的生存周期為一個數(shù)據(jù)集合的處理時間。
21.一種從節(jié)點設備,其特征在于,所述從節(jié)點設備為Hadoop集群中的從節(jié)點設備,所述Hadoop集群還包括主節(jié)點設備,所述從節(jié)點設備從所述Hadoop集群接收數(shù)據(jù)分片,所述從節(jié)點設備包括:圖形處理器GPU以及如權利要求19所述的處理器CPU ; 其中,所述CPU中的數(shù)據(jù)預處理器用于將從數(shù)據(jù)分片獲取的數(shù)據(jù)集合轉換數(shù)據(jù)格式,并將轉換數(shù)據(jù)格式后的數(shù)據(jù)集合生成數(shù)據(jù)塊,通過所述CPU中的數(shù)據(jù)拼接器將所述數(shù)據(jù)塊拼接到所述GPU中分配存儲數(shù)據(jù)塊的工作緩沖區(qū)中; 所述GPU用于對所述數(shù)據(jù)塊進行處理得到處理結果,之后將所述處理結果返回給所述CPU。
22.根據(jù)權利要求21所述的從節(jié)點設備,其特征在于,所述GPU還包括: 自動分配和回收所述工作緩沖區(qū),所述工作緩沖區(qū)的生存周期為一個數(shù)據(jù)分片的處理時間。
【專利摘要】本發(fā)明實施例公開了一種數(shù)據(jù)處理方法及相關設備,實現(xiàn)Hadoop從節(jié)點設備中對數(shù)據(jù)自動轉換數(shù)據(jù)格式和自動拼接,簡化程序員的編程工作,有利于后續(xù)優(yōu)化MapReduce架構。該方法主要包括:數(shù)據(jù)預處理器從所述CPU的第一緩沖區(qū)讀取元數(shù)據(jù);所述數(shù)據(jù)預處理器根據(jù)所述元數(shù)據(jù)所指示的存儲地址從所述第一緩沖區(qū)讀取所述數(shù)據(jù)集合的數(shù)據(jù);所述數(shù)據(jù)預處理器根據(jù)預設解析函數(shù),將所述數(shù)據(jù)集合的數(shù)據(jù)轉換成所述預設解析函數(shù)所指示的數(shù)據(jù)格式,并將轉換后的數(shù)據(jù)集合生成數(shù)據(jù)塊后存儲在所述CPU的第二緩沖區(qū),以使得所述數(shù)據(jù)拼接器從所述第二緩沖區(qū)讀取所述數(shù)據(jù)塊拼接到所述GPU。
【IPC分類】G06F9-44, G06F9-50, H04L29-08
【公開號】CN104731569
【申請?zhí)枴緾N201310719857
【發(fā)明人】崔慧敏, 謝睿, 阮功, 楊文森
【申請人】華為技術有限公司, 中國科學院計算技術研究所
【公開日】2015年6月24日
【申請日】2013年12月23日
【公告號】WO2015096649A1