梁毅 劉飛 常仕祿
摘 要:Spark Streaming是一種典型的批量流式計算平臺,可用于處理持續(xù)到達(dá)的數(shù)據(jù)流。流式數(shù)據(jù)最重要的兩個特征是波動性和時效性。利用動態(tài)調(diào)整系統(tǒng)參數(shù)和動態(tài)調(diào)整資源滿足不同數(shù)據(jù)到達(dá)速率的響應(yīng)延遲,但調(diào)整參數(shù)的方式具有局限性,其用戶成本較大。因此提出一種參數(shù)和資源協(xié)同調(diào)整策略,采用動態(tài)鄰域粒子群算法找到一種滿足SLO目標(biāo)且使用資源最少的系統(tǒng)方案。實驗表明,AdaStreaming與DyBBS相比,延遲性降低了70.1%,在資源使用量上比DRA降低了42.1%。
關(guān)鍵詞:Spark Streaming; 動態(tài)鄰域粒子群;參數(shù)配置;資源分配
DOI:10. 11907/rjdk. 181652
中圖分類號:TP301文獻(xiàn)標(biāo)識碼:A文章編號:1672-7800(2019)001-0045-03
Abstract:Spark Streaming is a typical batched streaming processing system that can be used to process continuously arriving data streams. The two most important characteristics of streaming data are its volatility and timeliness. The method of dynamical parameter configuration and dynamical resource allocation are proposed to guarantee the end to end latency with different data arrival rates. However, the method of dynamical parameter configuration has limitation on scope of application, and the method of dynamical resource allocation will bring greater cost to users. Therefore, this paper proposes a parameter and resource coordination adjustment strategy, using dynamic neighborhood particle swarm algorithm to find a solution that can achieve resource minimization on the premise of meeting the SLO goal. Experiments show that AdaStreaming reduced latency by 59% against DyBBS, and reduced the amount of resources by 34% against DRA.
0 引言
隨著大數(shù)據(jù)應(yīng)用場景的多樣化,各種行業(yè)產(chǎn)生了海量流式數(shù)據(jù)[1-3]。流式數(shù)據(jù)最重要的兩個特征是波動性和時效性,不同時刻流式數(shù)據(jù)到達(dá)的速率是波動的,且需在一定時間內(nèi)完成處理[4]。Spark Streaming[5]是一種典型的批量流式計算平臺,被工業(yè)界和學(xué)術(shù)界廣泛采用。
隨著云計算的發(fā)展,許多流式計算平臺被部署到云上,為用戶提供靈活的服務(wù)[6]。對于這類部署在云上的Spark Streaming平臺,滿足用戶SLO和最小化資源使用以降低用戶成本成為最重要的兩個目標(biāo)[7-8]?,F(xiàn)有研究主要從3方面進行優(yōu)化:①數(shù)據(jù)丟棄[9-11]。但該方法不適用具有“至少執(zhí)行一次”語義保證的應(yīng)用;②動態(tài)調(diào)整參數(shù)配置[12-13]。然而,當(dāng)數(shù)據(jù)速率激增時,當(dāng)前資源分配情況下可能出現(xiàn)調(diào)整參數(shù)無法使延遲滿足需求的情況;③動態(tài)調(diào)整資源。當(dāng)數(shù)據(jù)處理落后于數(shù)據(jù)流入時,會增加分配的資源數(shù)量以提升數(shù)據(jù)處理速率[14]??紤]到云環(huán)境按需付費的服務(wù)模式,該方法會給用戶帶來巨大的成本開銷。
本文通過分析影響Spark Streaming平臺性能的一些因素,提出一種參數(shù)和資源協(xié)同調(diào)整策略AdaStreaming。該策略采用一種動態(tài)鄰域粒子群算法,在滿足SLO的前提下,選擇一種資源使用量最少的參數(shù)和資源調(diào)整方案,并以此為依據(jù)進行系統(tǒng)調(diào)整。實驗表明,與動態(tài)調(diào)整參數(shù)的DyBBS方法相比,本文提出的AdaStreaming在延遲上降低了59%,與動態(tài)調(diào)整資源的DRA方法相比,AdaStreaming在資源使用量上降低了34%。
1 Spark Streaming
Spark Streaming構(gòu)建于Spark[15]之上,其處理流程如圖1所示。流入系統(tǒng)的數(shù)據(jù)以一定的劃分間隔分割成分開的數(shù)據(jù)塊,然后以一定批次的劃分間隔劃分為獨立的批次任務(wù),并按順序提交到Spark引擎中執(zhí)行。根據(jù)上述處理過程,可以看出數(shù)據(jù)塊劃分間隔和批次劃分間隔是影響系統(tǒng)性能的兩個重要參數(shù)。
2 SparkStreaming中參數(shù)與資源協(xié)同調(diào)整策略
2.1 動態(tài)鄰域粒子群算法
粒子群優(yōu)化算法(Particle Swarm Optimization,PSO)是一種基于迭代的優(yōu)化算法,易于實現(xiàn)且無較多參數(shù)需要調(diào)整[16-18]。動態(tài)鄰域粒子群(DNPSO)算法可在不同階段考慮不同目標(biāo),用于多目標(biāo)約束優(yōu)化問題的求解[19-20]。對于兩個目標(biāo)的問題,第一個目標(biāo)[f1]可確定粒子鄰域,第二個目標(biāo)[f2]作為度量粒子質(zhì)量的適應(yīng)度函數(shù)。因此鄰域函數(shù)[f1]找到粒子i的鄰域[Ni]后,粒子i在t+1時刻的個體最優(yōu)位置可由式(1)計算。