一種數(shù)據(jù)處理方法及相關(guān)設(shè)備的制造方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及信息處理技術(shù)領(lǐng)域,具體涉及一種數(shù)據(jù)處理方法及相關(guān)設(shè)備。
【背景技術(shù)】
[0002]大數(shù)據(jù)與云計算一起,為信息技術(shù)(IT, Informat1n Technology)帶來一場新革命,云計算具備強大的大數(shù)據(jù)計算能力,計算速度非???,可是大數(shù)據(jù)的傳送卻成為其一大難題。
[0003]MapReduce (本領(lǐng)域中暫時沒有統(tǒng)一的中文譯文)是谷歌搜索引擎Google提供的一個著名的云計算架構(gòu),用于大規(guī)模數(shù)據(jù)集(大于1TB)上的并行運算,Hadoop (本領(lǐng)域中暫時沒有統(tǒng)一的中文譯文)是MapReduce架構(gòu)的具體實現(xiàn),在Hadoop集群中分為主節(jié)點設(shè)備和從節(jié)點設(shè)備。其中,在主節(jié)點設(shè)備中利用MapReduce所提供的Map函數(shù)把數(shù)據(jù)集按照大小分割成M片數(shù)據(jù)分片,將數(shù)據(jù)分片分配到多個從節(jié)點設(shè)備上做并行處理。具體地,每個從節(jié)點設(shè)備從數(shù)據(jù)分片中獲取鍵值對的值,將值拼接存儲在從節(jié)點設(shè)備的處理器(Central Processing Unit,簡稱CPU)分配的緩沖區(qū)中,之后,從緩沖區(qū)讀取鍵值對的值進行解析,例如轉(zhuǎn)換鍵值對的值的數(shù)據(jù)格式等,再將解析后的值通過應(yīng)用程序編程接口(API,Applicat1n Programming Interface)拼接到從節(jié)點設(shè)備的圖形處理器(GPU, GraphicsProcessing Unit)分配存儲數(shù)據(jù)的緩沖區(qū)中,由GPU進行計算處理。
[0004]本發(fā)明技術(shù)人員在實現(xiàn)上述方案時發(fā)現(xiàn),由于MapReduce架構(gòu)中沒有提供解析函數(shù),在對鍵值對的值進行解析時,需要依靠于程序員所編寫的相應(yīng)程序;同時,由于CPU分配存儲鍵值對的值的緩沖區(qū)與GPU分配用來存儲數(shù)據(jù)的緩沖區(qū)大小可能不一致,而MapReduce架構(gòu)中沒有提供相應(yīng)的判斷方法,同樣依靠于程序員所編寫的相應(yīng)判斷函數(shù),對CPU和GPU的緩沖區(qū)是否一致進行判斷,降低從節(jié)點設(shè)備的執(zhí)行效率。
【發(fā)明內(nèi)容】
[0005]針對上述缺陷,本發(fā)明實施例提供了一種的數(shù)據(jù)處理方法及相關(guān)設(shè)備,應(yīng)用于MapReduce架構(gòu)下的Hadoop集群,可以提高Hadoop集群中從節(jié)點設(shè)備的工作效率,簡化程序員的編程工作,有利于后續(xù)優(yōu)化MapReduce架構(gòu)。
[0006]第一方面,本發(fā)明提供一種數(shù)據(jù)處理方法,應(yīng)用于MapReduce架構(gòu)下的Hadoop集群,所述Hadoop集群包括主節(jié)點設(shè)備和從節(jié)點設(shè)備,所述從節(jié)點設(shè)備包括處理器CPU和圖形處理器GPU,所述從節(jié)點設(shè)備從所述主節(jié)點設(shè)備獲取數(shù)據(jù)分片,所述CPU中設(shè)置有數(shù)據(jù)預(yù)處理器和數(shù)據(jù)拼接器,所述方法包括:
[0007]所述數(shù)據(jù)預(yù)處理器從所述CPU的第一緩沖區(qū)讀取元數(shù)據(jù);其中,當(dāng)從數(shù)據(jù)分片獲取的數(shù)據(jù)集合存儲進所述第一緩沖區(qū)時,在所述第一緩沖區(qū)頭部為所述數(shù)據(jù)集合添加元數(shù)據(jù),所述元數(shù)據(jù)中包括所述數(shù)據(jù)集合的數(shù)據(jù)在所述第一緩沖區(qū)的存儲地址;
[0008]所述數(shù)據(jù)預(yù)處理器根據(jù)所述元數(shù)據(jù)所指示的存儲地址從所述第一緩沖區(qū)讀取所述數(shù)據(jù)集合的數(shù)據(jù);
[0009]所述數(shù)據(jù)預(yù)處理器根據(jù)預(yù)設(shè)解析函數(shù),將所述數(shù)據(jù)集合的數(shù)據(jù)轉(zhuǎn)換成所述預(yù)設(shè)解析函數(shù)所指示的數(shù)據(jù)格式,并將轉(zhuǎn)換后的數(shù)據(jù)集合生成數(shù)據(jù)塊后存儲在所述CPU的第二緩沖區(qū),以使得所述數(shù)據(jù)拼接器從所述第二緩沖區(qū)讀取所述數(shù)據(jù)塊拼接到所述GPU。
[0010]結(jié)合第一方面,在第一種可能的實現(xiàn)方式中,所述元數(shù)據(jù)具體包括地址索引數(shù)組,所述地址索引數(shù)組包含有與所述數(shù)據(jù)集合的數(shù)據(jù)一一對應(yīng)的數(shù)據(jù)元素,所述數(shù)據(jù)元素用于指示所述數(shù)據(jù)集合的數(shù)據(jù)在所述第一緩沖區(qū)的存儲地址,進而所述數(shù)據(jù)預(yù)處理器根據(jù)所述元數(shù)據(jù)所指示的存儲地址從所述第一緩沖區(qū)讀取數(shù)據(jù)集合中的數(shù)據(jù)包括:所述數(shù)據(jù)預(yù)處理器從所述地址索引數(shù)組的數(shù)據(jù)元素指示在第一緩沖區(qū)的存儲地址開始讀取,直到下一個數(shù)據(jù)元素指示的存儲地址或所述第一緩沖區(qū)末端結(jié)束讀取數(shù)據(jù)。
[0011]結(jié)合第一方面,在第二種可能的實現(xiàn)方式中,所述將所述數(shù)據(jù)集合的數(shù)據(jù)轉(zhuǎn)換成所述預(yù)設(shè)解析函數(shù)所指示的數(shù)據(jù)格式包括:所述數(shù)據(jù)預(yù)處理器根據(jù)所述預(yù)設(shè)的解析函數(shù)將所述數(shù)據(jù)集合的數(shù)據(jù)轉(zhuǎn)換成所述解析函數(shù)指定的滿足邏輯運算的數(shù)據(jù)格式。
[0012]結(jié)合第一方面的第二種可能的實現(xiàn)方式,在第三種可能的實現(xiàn)方式中,當(dāng)所述第一緩沖區(qū)對所述數(shù)據(jù)集合的數(shù)據(jù)的存儲格式與所述GPU中對數(shù)據(jù)的存儲格式不一致時,所述將轉(zhuǎn)換后的數(shù)據(jù)集合生成數(shù)據(jù)塊后包括:所述數(shù)據(jù)預(yù)處理器將所述數(shù)據(jù)塊中的數(shù)據(jù)轉(zhuǎn)換成所述GPU中的存儲格式。
[0013]結(jié)合第一方面,或第一方面的第一種可能的實現(xiàn)方式,或第一方面的第二種可能的實現(xiàn)方式,或第一方面的第三種可能的實現(xiàn)方式,在第四種可能的實現(xiàn)方式中,所述數(shù)據(jù)集合具體由所述數(shù)據(jù)分片中的多個鍵值對的值拼接組成。
[0014]結(jié)合第一方面,或第一方面的第一種可能的實現(xiàn)方式,或第一方面的第二種可能的實現(xiàn)方式,或第一方面的第三種可能的實現(xiàn)方式,在第五種可能的實現(xiàn)方式中,所述第一緩沖區(qū)和所述第二緩沖區(qū)由所述CPU自動分配和回收,所述第一緩沖區(qū)的生存周期為一個數(shù)據(jù)分片的處理時間,所述第二緩沖區(qū)的生存周期為一個數(shù)據(jù)集合的處理時間。
[0015]本發(fā)明第二方面提供一種數(shù)據(jù)處理方法,應(yīng)用于MapReduce架構(gòu)下的Hadoop集群,所述Hadoop集群包括主節(jié)點設(shè)備和從節(jié)點設(shè)備,所述從節(jié)點設(shè)備包括處理器CPU和圖形處理器GPU,所述從節(jié)點設(shè)備從所述主節(jié)點設(shè)備獲取數(shù)據(jù)分片,所述CPU中設(shè)置有數(shù)據(jù)預(yù)處理器和數(shù)據(jù)拼接器,所述方法包括:
[0016]所述數(shù)據(jù)拼接器從所述CPU的第二緩沖區(qū)讀取所述數(shù)據(jù)預(yù)處理器生成的數(shù)據(jù)塊;
[0017]所述數(shù)據(jù)拼接器將所述數(shù)據(jù)塊拼接到所述GPU中被分配存儲數(shù)據(jù)塊的工作緩沖區(qū)。
[0018]結(jié)合第二方面,在第一種可能的實現(xiàn)方式中,當(dāng)所述數(shù)據(jù)拼接器將所述數(shù)據(jù)塊拼接到所述GPU中被分配存儲數(shù)據(jù)塊的工作緩沖區(qū)失敗時,則暫停拼接所述數(shù)據(jù)塊,并觸發(fā)所述GPU處理所述工作緩沖區(qū)存儲的數(shù)據(jù)塊。
[0019]結(jié)合第二方面,或第二方面的第一種可能的實現(xiàn)方式,在第二種可能的實現(xiàn)方式中,所述數(shù)據(jù)拼接器從游標(biāo)參數(shù)指示的起始地址開始拼接所述數(shù)據(jù)塊,所述游標(biāo)參數(shù)用于指示所述GPU中被分配存儲數(shù)據(jù)塊的工作緩沖區(qū)中可用于存儲數(shù)據(jù)塊的起始地址。
[0020]結(jié)合第二方面的第二種可能的實現(xiàn)方式,在第三種可能的實現(xiàn)方式中,當(dāng)拼接所述數(shù)據(jù)塊成功后,所述方法還包括:所述數(shù)據(jù)拼接器通知所述GPU所述數(shù)據(jù)塊的大??;所述數(shù)據(jù)拼接器更新所述游標(biāo)參數(shù)。
[0021]本發(fā)明第三方面提供一種數(shù)據(jù)預(yù)處理器,包括:
[0022]第一讀取單元,用于從所述CPU的第一緩沖區(qū)讀取元數(shù)據(jù);其中,當(dāng)從數(shù)據(jù)分片獲取的數(shù)據(jù)集合存儲進所述第一緩沖區(qū)時,在所述第一緩沖區(qū)頭部為所述數(shù)據(jù)集合添加元數(shù)據(jù),所述元數(shù)據(jù)中包括所述數(shù)據(jù)集合的數(shù)據(jù)在所述第一緩沖區(qū)的存儲地址;
[0023]第二讀取單元,用于根據(jù)所述元數(shù)據(jù)所指示的存儲地址從所述第一緩沖區(qū)讀取所述數(shù)據(jù)集合的數(shù)據(jù);
[0024]轉(zhuǎn)換單元,用于根據(jù)預(yù)設(shè)解析函數(shù),將所述數(shù)據(jù)集合的數(shù)據(jù)轉(zhuǎn)換成所述預(yù)設(shè)解析函數(shù)所指示的數(shù)據(jù)格式,并將轉(zhuǎn)換后的數(shù)據(jù)集合生成數(shù)據(jù)塊;
[0025]存儲單元,用于將所述數(shù)據(jù)塊存儲在所述CPU的第二緩沖區(qū),以使得所述數(shù)據(jù)拼接器從所述第二緩沖區(qū)讀取所述數(shù)據(jù)塊拼接到所述GPU。
[0026]結(jié)合第三方面,在第一種可能的實現(xiàn)方式中,所述元數(shù)據(jù)具體包括地址索引數(shù)組,所述地址索引數(shù)組包含有與所述數(shù)據(jù)集合的數(shù)據(jù)一一對應(yīng)的數(shù)據(jù)元素,所述數(shù)據(jù)元素用于指示所述數(shù)據(jù)集合的數(shù)據(jù)在所述第一緩沖區(qū)的存儲地址,進而所述第二讀取單元包括:數(shù)據(jù)讀取單元,用于從所述地址索引數(shù)組的數(shù)據(jù)元素指示在第一緩沖區(qū)的存儲地址開始讀取,直到下一個數(shù)據(jù)元素指示的存儲地址或所述第一緩沖區(qū)末端結(jié)束讀取數(shù)據(jù)。
[0027]結(jié)合第三方面,或第三方面的第一種可能的實現(xiàn)方式,在第二種可能的實現(xiàn)方式中,所述解析單元包括:數(shù)據(jù)格式轉(zhuǎn)換單元,用于通過預(yù)設(shè)的解析函數(shù)將所述數(shù)據(jù)集合的數(shù)據(jù)轉(zhuǎn)換成所述解析函數(shù)指定的滿足邏輯運算的數(shù)據(jù)格式生成單元,用于將轉(zhuǎn)換的數(shù)據(jù)集合生成數(shù)據(jù)塊。
[0028]結(jié)合第三方面,在第三種可能的實現(xiàn)方式中,所述解析單元還包括:格式轉(zhuǎn)換單元,用于當(dāng)所述第一緩沖區(qū)對所述數(shù)據(jù)集合的數(shù)據(jù)的存儲格式與所述GPU中對數(shù)據(jù)的存儲格式不一致時,將所述數(shù)據(jù)塊中的數(shù)據(jù)轉(zhuǎn)換成所述GPU中的存儲格式。
[0029]本發(fā)明第四方面提供一種數(shù)據(jù)拼接器,包括:
[0030]第三讀取單元,用于從所述CPU的第二緩沖區(qū)讀取所述數(shù)據(jù)預(yù)處理器生成的數(shù)據(jù)塊;
[0031]拼接處理單元,用于將所述數(shù)據(jù)塊拼接到所述GPU中被分配存儲數(shù)據(jù)塊的工作緩沖區(qū)。
[0032]結(jié)合第四方面,在第一種可能的實現(xiàn)方式中,所述數(shù)據(jù)拼接器還包括:觸發(fā)處理單元,用于當(dāng)所述數(shù)據(jù)拼接器將所述數(shù)據(jù)塊拼接到所述GPU中被分配存儲數(shù)據(jù)塊的工作緩沖區(qū)失敗時,則暫停拼接所述數(shù)據(jù)塊,并觸發(fā)所述GPU處理所述工作緩沖區(qū)存儲的數(shù)據(jù)塊。
[0033]結(jié)合第四方面,或第四方面的第一種可能的實現(xiàn)方式,在第二種可能的實現(xiàn)方式中,所述拼接處理單元具體用于從游標(biāo)參數(shù)指示的起始地址開始拼接所述數(shù)據(jù)塊,所述游標(biāo)參數(shù)用于指示所述GPU中被分配存儲數(shù)據(jù)塊的工作緩沖區(qū)中可用于存儲數(shù)據(jù)塊的起始地址。
[0034]結(jié)合第四方面的第二種可能的實現(xiàn)方式,在第三種可能的實現(xiàn)方式中,所述數(shù)據(jù)拼接器還包括:通知單元,用于通知所述GPU所述數(shù)據(jù)塊的大??;更新單元,用于更新所述游標(biāo)參數(shù)。
[0035]本發(fā)明第五方面提供一種處理器,可包括上述第三方面所述的數(shù)據(jù)預(yù)處理器和上述第四方面所述的數(shù)據(jù)拼接器。
[0036]結(jié)合第五方面,在第一種可能的實現(xiàn)方式中,自動分配和回收所述第一緩沖區(qū)和所述第二緩沖區(qū),所述第一緩沖區(qū)的生存周期為一個數(shù)據(jù)分片的處理時間,所述第二緩沖區(qū)的生存周期為一個數(shù)據(jù)集合的處理時間。
[0037]本發(fā)明第六方面提供一種從節(jié)點設(shè)備,可包括上述第五方面所述的處理器CPU,以及圖形處理器GPU ;其中,所述CPU中的數(shù)據(jù)預(yù)處理器用于將從數(shù)據(jù)分片獲取的數(shù)據(jù)集合轉(zhuǎn)換數(shù)據(jù)格式,并將轉(zhuǎn)換數(shù)據(jù)格式后的數(shù)據(jù)集合生成數(shù)據(jù)塊,通過所述(PU中的數(shù)據(jù)拼接器將所述數(shù)據(jù)塊拼接到所述GPU中分配存儲數(shù)據(jù)塊的工作緩沖區(qū)中;所述GPU用于對所述數(shù)據(jù)塊進行處理得到處理結(jié)果,之后將所述處理結(jié)果返回給所述CPU。
[0038]從以上技術(shù)方案可以看出,本發(fā)明實施例具有以下優(yōu)點:
[0039]一方面,本發(fā)明實施例通過在從節(jié)點設(shè)備中設(shè)置數(shù)據(jù)預(yù)處理器和數(shù)據(jù)拼接器,由數(shù)據(jù)預(yù)處理器從CPU的第一緩沖區(qū)讀取元數(shù)據(jù),由于元數(shù)據(jù)是在數(shù)據(jù)集合存儲進第一緩沖區(qū)時為該數(shù)據(jù)集合生成,用于表示該數(shù)據(jù)集合的數(shù)據(jù)在第一緩沖區(qū)的存儲地址,之后數(shù)據(jù)預(yù)處理器能夠根據(jù)元數(shù)據(jù)從第一緩沖區(qū)讀取數(shù)據(jù)集合的數(shù)據(jù),再根據(jù)預(yù)設(shè)的解析函數(shù)對數(shù)據(jù)集合的數(shù)據(jù)進行格式轉(zhuǎn)換,之后將轉(zhuǎn)換后的數(shù)據(jù)集合生成數(shù)據(jù)塊,把數(shù)據(jù)塊存儲到CPU的第二緩沖區(qū)中,以便由數(shù)據(jù)拼接器完成與GPU的數(shù)據(jù)塊拼接。與現(xiàn)有技術(shù)相比,本發(fā)明實施例中通過在將數(shù)據(jù)集合存儲進第一緩沖區(qū)時,為數(shù)據(jù)集合的數(shù)據(jù)添加包括存儲地址的元數(shù)據(jù),數(shù)據(jù)預(yù)處理器可以自動從第一緩沖區(qū)讀取數(shù)據(jù)集合的數(shù)據(jù),不需