面向?qū)崟r(shí)數(shù)據(jù)分析的流式圖數(shù)據(jù)處理系統(tǒng)及方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明設(shè)及大數(shù)據(jù)處理技術(shù)領(lǐng)域,尤其設(shè)及一種面向?qū)崟r(shí)數(shù)據(jù)分析的流式圖數(shù)據(jù) 處理系統(tǒng)及方法。
【背景技術(shù)】
[0002] 最近幾年,Twitter Jacebook、微博等社交網(wǎng)絡(luò)日漸興起,占據(jù)了互聯(lián)網(wǎng)企業(yè)的重 要席位,人們對(duì)社交網(wǎng)絡(luò)的依賴性日益增強(qiáng),包括和朋友聊天、向別人發(fā)布自己的狀態(tài),W 及了解最新的信息和新聞等等。由于社交網(wǎng)絡(luò)的應(yīng)用需要能夠?qū)Υ笠?guī)模社交網(wǎng)絡(luò)圖進(jìn)行實(shí) 時(shí)分析,例如,需要依據(jù)網(wǎng)絡(luò)拓?fù)鋱D的實(shí)時(shí)變化進(jìn)行朋友推薦、新鮮事排序、廣告投放或者 實(shí)時(shí)捜索,因此社交網(wǎng)絡(luò)的應(yīng)用需要一種實(shí)時(shí)性很高的圖處理系統(tǒng)。
[0003] 目前流行的圖計(jì)算模型是全局的、批量的計(jì)算模型,由于社交網(wǎng)絡(luò)的規(guī)模比較大, 單次基于圖的運(yùn)算需要很長(zhǎng)時(shí)間,因此不能滿足社交網(wǎng)絡(luò)應(yīng)用的實(shí)時(shí)性需求。為滿足實(shí)時(shí) 性需求,圖1為現(xiàn)有的一種流式圖數(shù)據(jù)處理系統(tǒng)結(jié)構(gòu)圖,結(jié)合圖1,該系統(tǒng)對(duì)流式圖數(shù)據(jù)的處 理過(guò)程為:首先數(shù)據(jù)加工節(jié)點(diǎn)(圖示η個(gè))將原始圖數(shù)據(jù)切分后按照索引分配到各個(gè)圖存儲(chǔ) 與計(jì)算節(jié)點(diǎn)(圖示多個(gè))上,圖結(jié)構(gòu)與圖數(shù)據(jù)分開(kāi)保存,在流式更新數(shù)據(jù)(即圖更新數(shù)據(jù))到 來(lái)后,數(shù)據(jù)加工節(jié)點(diǎn)將流式更新數(shù)據(jù)識(shí)別處理為圖結(jié)構(gòu)更新操作后發(fā)送到圖存儲(chǔ)與計(jì)算節(jié) 點(diǎn),同時(shí)在識(shí)別處理圖結(jié)構(gòu)更新操作的過(guò)程中,為該更新操作設(shè)置一個(gè)序號(hào)并將該更新操 作W及對(duì)應(yīng)的序號(hào)發(fā)送至更新進(jìn)度表中,每隔一段時(shí)間,快照產(chǎn)生器會(huì)讀取更新進(jìn)度表中 的數(shù)據(jù)獲取最新操作的序號(hào),然后將小于最新操作的序號(hào)的操作合并后發(fā)送給每一圖存儲(chǔ) 與計(jì)算節(jié)點(diǎn)作為增量算法的輸入,由每一圖存儲(chǔ)與計(jì)算節(jié)點(diǎn)中的計(jì)算單元進(jìn)行計(jì)算。
[0004] 上述流式圖數(shù)據(jù)處理過(guò)程中,由于流式圖數(shù)據(jù)中普遍存在熱點(diǎn)數(shù)據(jù)(如突發(fā)事件、 爆炸性新聞等),熱點(diǎn)數(shù)據(jù)更新頻繁,會(huì)占用大量的計(jì)算資源,因此會(huì)導(dǎo)致計(jì)算傾斜,如某些 圖存儲(chǔ)與計(jì)算節(jié)點(diǎn)的數(shù)據(jù)計(jì)算量遠(yuǎn)高于其他圖存儲(chǔ)與計(jì)算節(jié)點(diǎn)的數(shù)據(jù)計(jì)算量,使得總的處 理時(shí)間延長(zhǎng),處理效率不高。
【發(fā)明內(nèi)容】
[0005] 本發(fā)明提供一種面向?qū)崟r(shí)數(shù)據(jù)分析的流式圖數(shù)據(jù)處理系統(tǒng)及方法,采用熱點(diǎn)檢測(cè) 與熱點(diǎn)數(shù)據(jù)遷移的優(yōu)化方式保證數(shù)據(jù)處理的高效性,從而解決了現(xiàn)有技術(shù)中處理效率不高 的問(wèn)題。
[0006] 第一方面,本發(fā)明提供一種面向?qū)崟r(shí)數(shù)據(jù)分析的流式圖數(shù)據(jù)處理系統(tǒng),包括:
[0007] 原始數(shù)據(jù)分析器、熱點(diǎn)檢測(cè)器、熱點(diǎn)負(fù)載均衡器、協(xié)同調(diào)度器和Ν個(gè)計(jì)算分區(qū),每一 個(gè)計(jì)算分區(qū)包括用于存儲(chǔ)靜態(tài)圖數(shù)據(jù)的圖結(jié)構(gòu)存儲(chǔ)區(qū)和更新操作緩存區(qū);
[000引所述原始數(shù)據(jù)分析器用于:將一個(gè)時(shí)間片內(nèi)接收到的流式更新數(shù)據(jù)轉(zhuǎn)化為圖更新 數(shù)據(jù),并將所述圖更新數(shù)據(jù)發(fā)送到熱點(diǎn)檢測(cè)器,同時(shí)根據(jù)數(shù)據(jù)遷移記錄表和基于索引的切 分方法將所述圖更新數(shù)據(jù)切分為Ν個(gè)數(shù)據(jù)塊,將所述Ν個(gè)數(shù)據(jù)塊發(fā)送到對(duì)應(yīng)的計(jì)算分區(qū)的更 新操作緩存區(qū)中;
[0009] 所述熱點(diǎn)檢測(cè)器用于檢測(cè)所述圖更新數(shù)據(jù)是否為熱點(diǎn)數(shù)據(jù);
[0010] 所述熱點(diǎn)負(fù)載均衡器用于周期性地對(duì)所述熱點(diǎn)檢測(cè)器在預(yù)設(shè)時(shí)間段內(nèi)檢測(cè)到的 所有熱點(diǎn)數(shù)據(jù)進(jìn)行熱點(diǎn)負(fù)載均衡,根據(jù)熱點(diǎn)負(fù)載均衡進(jìn)行計(jì)算分區(qū)之間的數(shù)據(jù)遷移,并將 進(jìn)行數(shù)據(jù)遷移的熱點(diǎn)數(shù)據(jù)通知給所述原始數(shù)據(jù)分析器;
[0011] 所述原始數(shù)據(jù)分析器還用于將進(jìn)行數(shù)據(jù)遷移的熱點(diǎn)數(shù)據(jù)記錄在所述數(shù)據(jù)遷移記 錄表中;
[0012] 所述協(xié)同調(diào)度器用于:檢測(cè)到有應(yīng)用發(fā)出計(jì)算請(qǐng)求后,根據(jù)所有計(jì)算分區(qū)中的數(shù) 據(jù)得到當(dāng)前圖結(jié)構(gòu)數(shù)據(jù),調(diào)用所述應(yīng)用的算法并將所述當(dāng)前圖結(jié)構(gòu)數(shù)據(jù)作為輸入執(zhí)行所述 應(yīng)用的算法。
[0013] 進(jìn)一步地,所述協(xié)同調(diào)度器具體用于:
[0014] 通知每個(gè)計(jì)算分區(qū)將自身的更新操作緩存區(qū)中的數(shù)據(jù)塊合并到圖結(jié)構(gòu)存儲(chǔ)區(qū)中, 將所有計(jì)算分區(qū)的圖結(jié)構(gòu)存儲(chǔ)區(qū)中的數(shù)據(jù)進(jìn)行合并得到所述當(dāng)前圖結(jié)構(gòu)數(shù)據(jù)。
[0015] 進(jìn)一步地,所述熱點(diǎn)檢測(cè)器具體用于:
[0016] 統(tǒng)計(jì)所述圖更新數(shù)據(jù)在t到t+1時(shí)刻的更新次數(shù)UT(t+l),通過(guò)如下公式計(jì)算所述 圖更新數(shù)據(jù)在t+1時(shí)刻的熱度HR(t+l):
[0017] HR(t+l)=AHR(t)+UT(t+l);
[0018] 接著通過(guò)公式:
計(jì)算所述圖更新數(shù)據(jù)的標(biāo)準(zhǔn)分score;
[0019 ]其中,λ為熱度的衰減系數(shù),λ< 1,μ (t)與σ (t)分別為t時(shí)刻HR( t)的均值與標(biāo)準(zhǔn)差;
[0020] 若score的值大于預(yù)設(shè)闊值,則確定所述圖更新數(shù)據(jù)是熱點(diǎn)數(shù)據(jù),若否,則確定所 述圖更新數(shù)據(jù)不是熱點(diǎn)數(shù)據(jù)。
[0021] 進(jìn)一步地,所述熱點(diǎn)負(fù)載均衡器具體用于:
[0022] 通過(guò)公式cost =皿· AEdges%十算在預(yù)設(shè)時(shí)間段內(nèi)檢測(cè)到的所有熱點(diǎn)數(shù)據(jù)的計(jì)算 開(kāi)銷cost,其中,AEdges為熱點(diǎn)數(shù)據(jù)的鄰接的邊的數(shù)目,α為傳播系數(shù);
[0023] 確定是否是第一次執(zhí)行負(fù)載均衡操作,若是,則將全部熱點(diǎn)數(shù)據(jù)按照cost從大到 小排序,遍歷全部熱點(diǎn)數(shù)據(jù),對(duì)于每個(gè)熱點(diǎn)數(shù)據(jù),將其分配給當(dāng)前已分配的總計(jì)算開(kāi)銷最小 的計(jì)算分區(qū);
[0024] 若否,循環(huán)執(zhí)行如下操作:
[0025] S1、將已分配到每個(gè)計(jì)算分區(qū)的熱點(diǎn)數(shù)據(jù)按照cost從大到小排序,確定出總cost 最大的和總cost最小的計(jì)算分區(qū);
[00%] S2、確定出k,滿足排在前k的熱點(diǎn)數(shù)據(jù)的cost總和大于總cost最小的計(jì)算分區(qū)的 總cost;
[0027] S3、若k小于總cost最小的計(jì)算分區(qū)的熱點(diǎn)數(shù)據(jù)個(gè)數(shù),將cost排在第k+1的熱點(diǎn)數(shù) 據(jù)遷移到總cost最小的計(jì)算分區(qū)上,繼續(xù)執(zhí)行S1;
[002引 S4、否則,循環(huán)終止。
[0029] 進(jìn)一步地,所述協(xié)同調(diào)度器包括數(shù)據(jù)存儲(chǔ)單元,所述數(shù)據(jù)存儲(chǔ)單元用于存儲(chǔ)注冊(cè) 到所述系統(tǒng)的每一應(yīng)用的計(jì)算執(zhí)行頻率和上一次的執(zhí)行時(shí)刻:
[0030] 所述協(xié)同調(diào)度器還用于:
[0031] 檢測(cè)到有多個(gè)應(yīng)用發(fā)出計(jì)算請(qǐng)求時(shí),調(diào)度多個(gè)應(yīng)用依次執(zhí)行,在調(diào)度每一應(yīng)用執(zhí) 行時(shí),通知每個(gè)計(jì)算分區(qū)將自身的更新操作緩存區(qū)中從上一次執(zhí)行時(shí)刻到當(dāng)前時(shí)刻的全部 數(shù)據(jù)塊合并到圖結(jié)構(gòu)存儲(chǔ)區(qū)中,將所有計(jì)算分區(qū)的圖結(jié)構(gòu)存儲(chǔ)區(qū)中的數(shù)據(jù)進(jìn)行合并得到所 述當(dāng)前圖結(jié)構(gòu)數(shù)據(jù)。
[0032] 第二方面,本發(fā)明提供一種面向?qū)崟r(shí)數(shù)據(jù)分析的流式圖數(shù)據(jù)處理方法,包括:
[0033] 將一個(gè)時(shí)間片內(nèi)接收到的流式更新數(shù)據(jù)轉(zhuǎn)化為圖更新數(shù)據(jù);
[0034] 根據(jù)數(shù)據(jù)遷移記錄表和基于索引的切分方法將所述圖更新數(shù)據(jù)切分為N個(gè)數(shù)據(jù) 塊,將所述N個(gè)數(shù)據(jù)塊發(fā)送到對(duì)應(yīng)的計(jì)算分區(qū)的更新操作緩存區(qū)中,所述計(jì)算分區(qū)有N個(gè),每 一個(gè)計(jì)算分區(qū)包括用于存儲(chǔ)靜態(tài)圖數(shù)據(jù)的圖結(jié)構(gòu)存儲(chǔ)區(qū)和更新操作緩存區(qū);
[0035] 檢測(cè)所述圖更新數(shù)據(jù)是否為熱點(diǎn)數(shù)據(jù);
[0036] 周期性地對(duì)在預(yù)設(shè)時(shí)間段內(nèi)檢測(cè)到的所有熱點(diǎn)數(shù)據(jù)進(jìn)行熱點(diǎn)負(fù)載均衡,根據(jù)熱點(diǎn) 負(fù)載均衡進(jìn)行計(jì)算分區(qū)之間的數(shù)據(jù)遷移,并將進(jìn)行數(shù)據(jù)遷移的熱點(diǎn)數(shù)據(jù)記錄在所述數(shù)據(jù)遷 移記錄表中;
[0037] 檢測(cè)到有應(yīng)用發(fā)出計(jì)算請(qǐng)求后,根據(jù)所有計(jì)算分區(qū)中的數(shù)據(jù)得到當(dāng)前圖結(jié)構(gòu)數(shù) 據(jù),調(diào)用所述應(yīng)用的算法并將所述當(dāng)前圖結(jié)構(gòu)數(shù)據(jù)作為輸入執(zhí)行所述應(yīng)用的算法。
[0038] 進(jìn)一步地,所述根據(jù)所有計(jì)算分區(qū)中的數(shù)據(jù)得到當(dāng)前圖結(jié)構(gòu)數(shù)據(jù),包括:
[0039] 通知每個(gè)計(jì)算分區(qū)將自身的更新操作緩存區(qū)中的數(shù)據(jù)塊合并到圖結(jié)構(gòu)存儲(chǔ)區(qū)中, 將所有計(jì)算分區(qū)的圖結(jié)構(gòu)存儲(chǔ)區(qū)中的數(shù)據(jù)進(jìn)行合并得到所述當(dāng)前圖結(jié)構(gòu)數(shù)據(jù)。
[0040] 進(jìn)一步地,所述檢測(cè)所述圖更新數(shù)據(jù)是否為熱點(diǎn)數(shù)據(jù),包括:
[0041] 統(tǒng)計(jì)所述圖更新數(shù)據(jù)在t到t+1時(shí)刻的更新次數(shù)UT(t+l),通過(guò)如下公式計(jì)算所述 圖更新數(shù)據(jù)在t+1時(shí)刻的熱度HR(t+l):
[0042] HR(t+l)=AHR(t)+UT(t+l);
[0043] 接著通過(guò)公式
開(kāi)算所述圖更新數(shù)據(jù)的標(biāo)準(zhǔn)分score;
[0044] 其中,λ為熱度的衰減系數(shù),λ< 1,μ (t)與σ (t)分別為t時(shí)刻HR( t)的均值與標(biāo)準(zhǔn)差;
[0045] 若score的值大于預(yù)設(shè)闊值,則確定所述圖更新數(shù)據(jù)是熱點(diǎn)數(shù)據(jù),若否,則確定所 述圖更新數(shù)據(jù)不是熱點(diǎn)數(shù)據(jù)。
[0046] 進(jìn)一步地,所述周期性地對(duì)在預(yù)設(shè)時(shí)間段內(nèi)檢測(cè)到的所有熱點(diǎn)數(shù)據(jù)進(jìn)行熱點(diǎn)負(fù)載 均衡,根據(jù)熱點(diǎn)負(fù)載均衡進(jìn)行計(jì)算分區(qū)之間的數(shù)據(jù)遷移,包括:
[0047] 通過(guò)公式:cost =皿· AEdges%十算在預(yù)設(shè)時(shí)間段內(nèi)檢測(cè)到的所有熱點(diǎn)數(shù)據(jù)的計(jì) 算開(kāi)銷cost,其中,AEdges為熱點(diǎn)數(shù)據(jù)的鄰接的邊的數(shù)目,α為傳播系數(shù);
[004引確定是否是第一次執(zhí)行負(fù)載均衡操作,若是,則將全部熱點(diǎn)數(shù)據(jù)按照cost從大到 小排序,遍歷全部熱點(diǎn)數(shù)據(jù),對(duì)于每個(gè)熱點(diǎn)數(shù)據(jù),將其分配給當(dāng)前已分配的總計(jì)算開(kāi)銷最小 的計(jì)算分區(qū);
[0049] 若否,循環(huán)執(zhí)行如下操作: