離散流處理模型下批次間隔大小的動態(tài)設(shè)置系統(tǒng)及方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及離散流處理模型下批次間隔大小的動態(tài)設(shè)置系統(tǒng)及方法。
【背景技術(shù)】
[0002] 近些年來,人們對于海量數(shù)據(jù)進行分析處理的需求越來越大。尤其是隨著對數(shù)據(jù) 實時性和有效性的理解深刻,"大數(shù)據(jù)"實時處理技術(shù)日益滲透到經(jīng)濟發(fā)展、社會進步和人 類生活的各個領(lǐng)域,成為生產(chǎn)力中活躍的因素。例如,在twitter或者新浪微博中,要實時計 算出最新的熱點話題;電商網(wǎng)站中的推薦系統(tǒng)需要對用戶的購買行為進行分析,進而實時 地對商品進行推送,增加銷量。這些應(yīng)用場景對計算的實時性要求較高,而且要求系統(tǒng)有一 定的容錯性。
[0003] 傳統(tǒng)的分布式流處理模型采用連續(xù)操作的方案,該方案將整個計算過程分解成多 個有狀態(tài)的計算算子的集合,通過更新內(nèi)部狀態(tài)以完成計算。傳統(tǒng)的處理方法在故障恢復 上有一定的困難,缺乏有效的容錯機制。近些年來以Spark為代表的大數(shù)據(jù)計算框架提出了 基于批次的處理模式,基于批次的處理模式將輸入流以及其計算分解成一些小的批處理計 算任務(wù),例如系統(tǒng)設(shè)置2秒為一個批次處理流數(shù)據(jù),那么系統(tǒng)將2秒鐘內(nèi)收集到的流數(shù)據(jù)作 為一個批數(shù)據(jù)傳遞給集群進行處理?;谂蔚牧魈幚硐到y(tǒng)克服了傳統(tǒng)的連續(xù)處理模式下 流處理系統(tǒng)的容錯難這一問題。由于要將流計算分解為周期上的批處理計算,直觀上來講 批處理的粒度劃分決定了系統(tǒng)計算的時延和吞吐率。因而怎樣確定合理的批次劃分,并且 可以根據(jù)資源進行伸縮性調(diào)整成為一個挑戰(zhàn)。
【發(fā)明內(nèi)容】
[0004] 本發(fā)明的目的就是為了解決上述問題,提供一種離散流處理模型下批次間隔大小 的動態(tài)設(shè)置系統(tǒng)及方法,它具有使得端對端延遲和整個流負載吞吐量之間達到權(quán)衡的優(yōu) 點。
[0005] 為了實現(xiàn)上述目的,本發(fā)明采用如下技術(shù)方案:
[0006] 離散流處理模型下批次間隔大小的動態(tài)設(shè)置系統(tǒng),包括:
[0007] 主節(jié)點,其分別與數(shù)據(jù)源和若干工作節(jié)點連接,所述主節(jié)點上部署有接收器和任 務(wù)管理模塊,所述接收器依次通過批次控制模塊和觀察模塊與工作節(jié)點連接;主節(jié)點將從 數(shù)據(jù)源中得到流數(shù)據(jù);
[0008] 所述觀察模塊,用于對集群中的負載信息和網(wǎng)絡(luò)流量信息進行監(jiān)控,計算出符合 設(shè)定條件的批次間隔值;所述批次控制模塊,將批次間隔值傳輸給接收器,按照批次間隔值 對接收器中的流數(shù)據(jù)切分批次;所述任務(wù)管理模塊將每個批次劃分為分布式任務(wù),并分配 到工作節(jié)點中進行計算;所述批次間隔值是指從接收器中取出未被處理的數(shù)據(jù)的時間間 隔;按照批次間隔值進行處理的數(shù)據(jù)叫做間隔值下對應(yīng)的批次。
[0009] 所述數(shù)據(jù)源是主節(jié)點的數(shù)據(jù)獲取的來源;所述接收器包括緩存單元,接收器接收 來自數(shù)據(jù)源的數(shù)據(jù)并將接收到的數(shù)據(jù)存儲到緩存單元中。
[0010] -種基于離散流處理模型下批次間隔大小的動態(tài)設(shè)置系統(tǒng)的批次間隔大小動態(tài) 設(shè)置方法,包括如下步驟:
[0011]步驟(1):設(shè)置系統(tǒng)最小的間隔值為初始間隔值;
[0012] 步驟(2):觀察模塊和批次控制模塊對初始間隔值進行預處理,得到批次處理時間 和批次間隔值,任務(wù)管理模塊按照預處理得到的批次間隔值從接收器中取出該批次間隔值 對應(yīng)的批次數(shù)據(jù),并將批次數(shù)據(jù)轉(zhuǎn)化為批次分布式任務(wù)在集群中進行處理;
[0013] 步驟(3):觀察模塊對步驟(2)的預處理結(jié)果進行判斷,判斷預處理結(jié)果是否達到 臨界條件,若達臨界條件,就轉(zhuǎn)到步驟(4);否則,就返回步驟(2);所述臨界條件是指批次處 理時間小于該批次間隔值大??;
[0014] 步驟(4):觀察模塊和批次控制模塊對預處理后的批次間隔值進行動態(tài)調(diào)整,任務(wù) 管理模塊按照動態(tài)調(diào)整后的批次間隔值從接收器中取出該批次間隔值對應(yīng)的批次數(shù)據(jù),并 將批次數(shù)據(jù)轉(zhuǎn)化為批次分布式任務(wù)在集群中進行處理。
[0015] 所述步驟(2)的過程,包括:
[0016] 步驟(201):按照初始間隔值從接收器中取出初始間隔值對應(yīng)的數(shù)據(jù)作為一個批 次數(shù)據(jù),并記錄初始間隔值對應(yīng)批次的處理時間;
[0017] 步驟(202):判斷初始間隔值下的批次處理時間是否大于等于2倍的初始間隔值; 若是,就進入步驟(203);否則,進入步驟(204);
[0018] 步驟(203):對批次間隔值進行A級調(diào)整:設(shè)定下一個批次間隔值為本次間隔值的 兩倍,按照新計算的下一個間隔值從接收器中取出下一個間隔值的流數(shù)據(jù),并對該流數(shù)據(jù) 進行計算,并記錄下一個間隔值對應(yīng)批次的處理時間,并進入步驟(204);
[0019] 步驟(204):對批次間隔值進行B級調(diào)整:設(shè)定下一批次間隔值是當前批次間隔值2 倍內(nèi)的數(shù),而且批次間隔值隨著運行次數(shù)增加而減少,按照新計算的下一個間隔值從接收 器中取出下一個間隔值的流數(shù)據(jù),并對流數(shù)據(jù)進行計算,并記錄下一個間隔值對應(yīng)批次的 處理時間;
[0020] 步驟(205):當對流數(shù)據(jù)的處理涉及到對多流處理時,會有兩個最佳間隔值,使得 數(shù)據(jù)的處理時間等于間隔大小;選擇較小的最佳間隔值;判斷兩個連續(xù)批次間隔值是否超 過較大的最佳間隔值,若是,就進入步驟(206);若否,就進入步驟(207);
[0021 ]步驟(206):計算新的批次間隔值;按照計算的新的批次間隔值執(zhí)行任務(wù),記錄批 次運行時間,進入步驟(207);
[0022]步驟(207):判斷批次運行時間是否小于批次間隔,若是,就進入步驟(208);若否 就返回步驟(204);
[0023] 步驟(208):按照新的批次間隔值作為C級調(diào)整的輸入值,并對批次間隔值執(zhí)行C級 調(diào)整。
[0024] 所述A級調(diào)整是指:當前批次處理時間2 2倍的當前批次間隔值,那么下一個批次 處理時間為2倍的當前批次間隔值;
[0025] 所述B級調(diào)整是指:下一個批次間隔值為當前批次間隔值的1+U倍;其中,j為當前 B級調(diào)整的次數(shù),j為自然數(shù);κ是〇. 5到1.0之間的常數(shù);
[0026] 所述C級調(diào)整是指:假設(shè)B級調(diào)整運行到某一時刻,滿足某一批次間隔值下批次運 行時間小于或等于當前批次間隔值,那么不再對批次間隔值進行調(diào)整,按照當前批次間隔 值執(zhí)行作為接下來批次的間隔值大小,直到所有緩存中的數(shù)據(jù)計算完成,并把當前批次間 隔值作為步驟(4)的起始間隔值大小。
[0027]在A級調(diào)整階段,始終處于批次處理時間小于批次間隔階段。
[0028]所述步驟(205)中,判斷是否兩個連續(xù)批次超過較大的最佳間隔值的過程為:假設(shè)
連續(xù)批次間隔值大小為,處理時間為Pl、p1+1,若滿足 ,那么這兩個連續(xù) 批次間隔值超過較大的最佳間隔值。
[0029] 所述步驟(4)的步驟如下:
[0030]步驟(401):設(shè)定兩個連續(xù)批次為一組,以組為單位進行調(diào)整;假設(shè)某一組的初始 批次間隔長度t-group;
[0031] 步驟(402):將t-group/p作為本組第一批次間隔值tl的初始值,對間隔值進行調(diào) 整后得到最終本組第一批次間隔值tl,該批次執(zhí)行時間是p(tl);p為調(diào)整因子,為小于1且 大于〇的常數(shù);
[0032] 步驟(403):將p(tl)作為本組第二批次間隔值t2的初始值,對間隔值進行調(diào)整后 得到最終本組第一批次間隔值t2,該批次執(zhí)行時間是p(t2);
[0033] 步驟(404):計算下一組的批次初始間隔值。
[0034]所述步驟(402)中對間隔值進行調(diào)整的方法如下:
[0035] 步驟(4021):設(shè)間隔值11初始值為11 = t-group/p,判斷上一批次處理時間是否小 于或等于批次間隔大小,若是,就進入步驟(4022);若否,就進入步驟(4025);
[0036] 步驟(4022):調(diào)整間隔值,其中P〈e〈l;
[0037] 步驟(4023):判斷是否超過步驟(205)所述的較大間隔值,若是,就進入步驟 (4024) ;若否,就進入步驟(4025);
[0038] 步驟(4024):批次大小調(diào)整為最小批次的Ι-r倍,即丨1 = (11)丨1;進入步驟 (4025) ;
[0039] 步驟(4025):批次間隔值設(shè)置11 = 11 /P;其中,0〈r〈 1;
[0040] 所述步驟(404)中,下一組初始間隔值大小tgrciup-next為:
[0041]
[0042] 其中P(t2)為本組第二批次運行時間,p(tl)為本組第一批次運