本發(fā)明涉及大數(shù)據(jù)分布式運算技術(shù),特別是一種有效提升分布式運算性能的大數(shù)據(jù)均衡切片方法。
背景技術(shù):
:隨著信息技術(shù)的飛速發(fā)展,信息系統(tǒng)產(chǎn)生的數(shù)據(jù)量越來越大,而單機系統(tǒng)在大數(shù)據(jù)處理過程中的處理能力成為巨大的瓶頸。分布式系統(tǒng)以集群技術(shù)和大數(shù)據(jù)技術(shù)為基礎,利用高性能的分布式運算,為處理海量的數(shù)據(jù),提取數(shù)據(jù)中的有用信息提供底層技術(shù)支持。分布式運算的基礎是分布式存儲的原始數(shù)據(jù),而這些原始的數(shù)據(jù)存儲結(jié)構(gòu)一般是按照鍵值對(key-value)的方式設計的。在數(shù)據(jù)開始運算前,就需要把原始的數(shù)據(jù)進行合理的切片(slice),切割成與集群數(shù)量相關(guān)的分片數(shù),然后把這些分片分發(fā)給數(shù)據(jù)處理節(jié)點,按照分布式運算的流程進行計算,再匯總(collect)到數(shù)據(jù)管理節(jié)點,合并后輸出運算的結(jié)果。在整個分布式運算過程中,最重要的就是如何切片可以保證全局運算時間最優(yōu)化。目前主流的技術(shù)是根據(jù)key的分類和集群數(shù)量進行劃分,但這種數(shù)據(jù)切片方法在遇到key的分布不均衡時,會導致嚴重的數(shù)據(jù)切片傾斜(datasliceskew)。發(fā)生數(shù)據(jù)切片傾斜后,某個數(shù)據(jù)處理節(jié)點會分配明顯高于平均水平(averagelevel)的數(shù)據(jù)處理量,導致全局的數(shù)據(jù)處理性能急劇下降。技術(shù)實現(xiàn)要素:本發(fā)明的目的在于:針對分布式數(shù)據(jù)處理過程中數(shù)據(jù)切片傾斜導致的局部數(shù)據(jù)處理量過大,導致全局的數(shù)據(jù)處理性能低下的問題,提供一種有效提升分布式運算性能的大數(shù)據(jù)均衡切片方法。本發(fā)明采用的技術(shù)方案如下:一種有效提升分布式運算性能的大數(shù)據(jù)均衡切片方法,包括以下步驟:s1:將分布式存儲的原始數(shù)據(jù)切片為數(shù)據(jù)處理節(jié)點數(shù)量相同的切片,并以鍵值對的形式標識;s2:計算切片均衡水平,判斷切片能否平衡劃分,不能劃分時添加擴展鍵值對ek到任一切片;否則直接進行下一步;s3:判斷添加擴展鍵值對的切片是否滿足切片均衡狀態(tài),當不滿足切片均衡狀態(tài)時進行下一步,滿足均衡狀態(tài)則跳轉(zhuǎn)至s7;s4:對切片進行信息重構(gòu);s5:利用組合貪心算法迭代計算最優(yōu)切片均衡方案,獲得重新分配后的切片結(jié)構(gòu);s6:依據(jù)重新分配后的切片結(jié)構(gòu),重新對數(shù)據(jù)進行均衡切片;s7:獲得均衡狀態(tài)下的切片數(shù)據(jù)。進一步的,所述步驟s2中判斷切片能否完全平衡劃分的方法為:判斷sc能否被n整除,能整除時切片能平衡劃分,否則不能平衡劃分;其中sc為鍵值對總數(shù),n為數(shù)據(jù)處理節(jié)點數(shù)量。進一步的,所述添加擴展鍵值對ek的數(shù)量為:進一步的,所述判斷切片均衡水平方法為:通過對集群規(guī)模和切片大小的標準分析方法,分析添加擴展鍵值對后所有切片的均衡水平bl和均衡狀態(tài)下單個切片的鍵值對數(shù)量al;其中,所述切片的均衡水平bl為:scn為第n個切片的鍵值對數(shù)量,n為切片數(shù)量;均衡狀態(tài)下切片鍵值對數(shù)量:bl值越大,則均衡水平低,bl=0時表示切片處于均衡狀態(tài)。進一步的,所述切片進行信息重構(gòu)的方法為:依據(jù)均衡狀態(tài)下切片鍵值對數(shù)量al和添加擴展鍵值對以后的切片的鍵值對數(shù)量對所有切片進行劃分:鍵值對數(shù)量大于al的切片劃分為第一切片組sg1;鍵值對數(shù)量小于al的切片劃分第二切片組sg2;鍵值對數(shù)量等于al的切片劃分第三切片組sg0。進一步的,所述最優(yōu)切片均衡方案獲得的具體步驟為:s51:計算第一切片組sg1和第二切片組sg2內(nèi)每個切片的平衡區(qū)間bi:bi=sc'-al;sc'為切片鍵值對數(shù)量;s52:依據(jù)|bi|由大到小分別對第二切片組sg2第一切片組sg1和第二切片組sg2內(nèi)切片進行排序,|bi|為各切片對應平衡區(qū)間絕對值;s53:從第二切片組sg2選擇依序選擇切片,將第一切片組sg1中|bi|與被選擇切片的|bi|最接近的切片中|bi|條鍵值對分配至被選擇切片內(nèi);輪詢第二切片組sg2內(nèi)所有切片;s54:重新計算所有切片的平衡區(qū)間bi,當max(|bi|)=min(|bi|)=al時,獲得重新分配后的切片結(jié)構(gòu);條件不滿足時跳轉(zhuǎn)至s51直至滿足條件。進一步的,所述數(shù)據(jù)進行均衡切片具體為:利用均衡切片結(jié)構(gòu),對每個切片包含的鍵值對重新命名。進一步的,所述擴展鍵值對ek可添加到分布式物理存儲位置的最后一個切片內(nèi)。綜上所述,由于采用了上述技術(shù)方案,本發(fā)明的有益效果是:1.本發(fā)明能有效解決數(shù)據(jù)切片傾斜導致某數(shù)據(jù)處理節(jié)點工作量過高,導致全局的數(shù)據(jù)處理性能下降的問題。2.通過組合貪心算法來均衡數(shù)據(jù)切片的大小,有效解決大數(shù)據(jù)鍵值對分布不均衡導致的數(shù)據(jù)切片傾斜問題,從全局來進行最優(yōu)數(shù)據(jù)均衡方法。3.通過加入擴展鍵值對來讓切片達到理論上的均衡水平,避免方法理論上的漏洞。附圖說明圖1是根據(jù)本發(fā)明實施的大數(shù)據(jù)均衡切片的流程圖;圖2是根據(jù)本發(fā)明實施例示例圖。具體實施方式本說明書中公開的所有特征,除了互相排斥的特征和/或步驟以外,均可以以任何方式組合。下面結(jié)合附圖對本發(fā)明作詳細說明。樣本示例數(shù)據(jù)的鍵值對數(shù)量分布如下:假定分布式集群中的數(shù)據(jù)處理節(jié)點(datanode)數(shù)量為7個,根據(jù)示例數(shù)據(jù)key的分布情況,就需要把示例數(shù)據(jù)中的鍵值對劃分成7個slice,那么每個slice對應的鍵值對數(shù)量如下所示:判斷示例數(shù)據(jù)能否達到完全均衡切片水平;則mod((9+8+7+5+1+2+3),7)=0,可以達到完全均衡。計算al和bl,al=(9+8+7+5+1+2+3)/7=5;bl=|(9-5)|+|(8-5)|+|(7-5)|+|(5-5)|+|(1-5)|+|(2-5)|+|(3-5)|=19;bl=19>0表明數(shù)據(jù)切片不均衡,需要進行切片均衡;對示例數(shù)據(jù)的切片slice進行分組操作,結(jié)果如下:key鍵值對數(shù)量(sc)sliceslicegroupa91sg1b82sg1c73sg1d54/e15sg2f26sg2g37sg2按照bi值對sg進行重新排序:key鍵值對數(shù)量(sc)sliceslicegroupbia91sg14b82sg13c73sg12e15sg24f26sg23g37sg22依據(jù)步驟s5,切片均衡后的鍵值對分布如下∑(bi)=0判定示例數(shù)據(jù)處于均衡切片狀態(tài),結(jié)束迭代。根據(jù)s105的重分配方案,并更換key的命名,作為均衡后的切片分配方案,如下所示:keysc(均衡完成)a′9-4=5b′8-3=5c′7-2=5d′5e′1+4=5f′2+3=5g′3+2=5原始數(shù)據(jù)經(jīng)過完整地均衡切片方法處理后,可以開始后續(xù)的分布式運算流程。當前第1頁12