王家興,林學(xué)練,申 陽,張 韻,張明明,馬 帥
1.北京航空航天大學(xué) 計(jì)算機(jī)學(xué)院,北京 100191
2.上海通用識(shí)別技術(shù)研究所,上海 201100
面向流式處理系統(tǒng)的對象管理方法*
王家興1+,林學(xué)練1,申 陽1,張 韻2,張明明1,馬 帥1
1.北京航空航天大學(xué) 計(jì)算機(jī)學(xué)院,北京 100191
2.上海通用識(shí)別技術(shù)研究所,上海 201100
WANG Jiaxing,LIN Xuelian,SHEN Yang,et al.Data object managing method in stream processing system. Journal of Frontiers of Computer Science and Technology,2016,10(11):1512-1523.
在車聯(lián)網(wǎng)的應(yīng)用實(shí)踐中,人們將分析車輛數(shù)據(jù)的任務(wù)運(yùn)行在流式計(jì)算系統(tǒng)中。在運(yùn)行分析中發(fā)現(xiàn),這些任務(wù)具有運(yùn)行周期長,處理延遲低,任務(wù)有狀態(tài)等需求和特點(diǎn),并且計(jì)算過程中需要在內(nèi)存中保存大量計(jì)算參數(shù)和中間狀態(tài)等數(shù)據(jù)對象,其中大量的數(shù)據(jù)對象并不活躍,任由其占用內(nèi)存造成了系統(tǒng)資源的浪費(fèi)。針對該問題開展研究,給出了流式任務(wù)的數(shù)據(jù)對象管理方法,優(yōu)化了內(nèi)存的使用。為流式數(shù)據(jù)對象建立生命周期模型,采用應(yīng)用驅(qū)動(dòng)、數(shù)據(jù)驅(qū)動(dòng)的模型參數(shù)確定方法為流式數(shù)據(jù)對象設(shè)置合適的過期參數(shù),設(shè)計(jì)車聯(lián)網(wǎng)測試用例,驗(yàn)證該生命周期管理方法的有效性。實(shí)驗(yàn)結(jié)果表明,該方法在用戶可接受的處理延遲范圍內(nèi),能夠有效地減少流式系統(tǒng)中不活躍對象的數(shù)目,達(dá)到了優(yōu)化內(nèi)存,降低資源開銷的目的。
車聯(lián)網(wǎng);流式系統(tǒng);不活躍對象;生命周期管理;數(shù)據(jù)驅(qū)動(dòng)模型
車聯(lián)網(wǎng)是綜合電子信息技術(shù),它將每一輛車作為一個(gè)信息源,利用無線通信手段建立以車為節(jié)點(diǎn)的信息系統(tǒng)。通過人、車、路間的交互,實(shí)現(xiàn)人-車-路的和諧統(tǒng)一發(fā)展[1]。
車聯(lián)網(wǎng)場景下,車載設(shè)備上傳GPS數(shù)據(jù)和OBD(on-board diagnostics,發(fā)送的數(shù)據(jù)內(nèi)容包括車輛位置、發(fā)動(dòng)機(jī)參數(shù)等)數(shù)據(jù);服務(wù)器端持續(xù)地接收數(shù)據(jù),并實(shí)時(shí)地對數(shù)據(jù)進(jìn)行分析,從而為不同類型的用戶提供相應(yīng)的服務(wù)。例如,為普通用戶提供電子圍欄服務(wù)、路線規(guī)劃和推薦服務(wù)、駕駛員駕駛行為分析;為租車運(yùn)營商提供車輛實(shí)時(shí)位置監(jiān)控服務(wù),根據(jù)駕駛員的駕駛行為分析結(jié)果進(jìn)一步為運(yùn)營商提供司機(jī)績效考評服務(wù),從而為其提出運(yùn)營和管理建議;分析和預(yù)測一定范圍、一段時(shí)間內(nèi)的道路流量情況,以便有效地進(jìn)行分流、調(diào)度和指揮,輔助國家車管部門工作。
本文采用流式處理系統(tǒng)[2]作為基礎(chǔ)平臺(tái),開發(fā)數(shù)據(jù)計(jì)算任務(wù)以處理車聯(lián)網(wǎng)數(shù)據(jù)。針對持續(xù)產(chǎn)生的數(shù)據(jù)流,流式系統(tǒng)完成實(shí)時(shí)(準(zhǔn)實(shí)時(shí))的計(jì)算,能夠滿足人們對線上業(yè)務(wù)的運(yùn)行需求。通過對約兩萬輛車的數(shù)據(jù)進(jìn)行處理,發(fā)現(xiàn)一些車聯(lián)網(wǎng)計(jì)算任務(wù)有以下3個(gè)特點(diǎn):
(1)任務(wù)需要長時(shí)間運(yùn)行。車聯(lián)網(wǎng)應(yīng)用面向的是車載終端持續(xù)產(chǎn)生的GPS數(shù)據(jù)和OBD數(shù)據(jù),因此處理該應(yīng)用的任務(wù)需要長時(shí)間運(yùn)行。一旦任務(wù)下線,則持續(xù)產(chǎn)生的數(shù)據(jù)不能得到及時(shí)的處理,也就不能為用戶提供持續(xù)的服務(wù)。
(2)處理延遲低,響應(yīng)速度快。汽車高速行駛帶來了實(shí)時(shí)性要求高的特點(diǎn),且汽車的安全行駛事關(guān)車內(nèi)人員的生命和財(cái)產(chǎn)安全。如電子圍欄應(yīng)用是為了車主能夠監(jiān)控車輛是否處于自己劃定的圍欄內(nèi),目的是監(jiān)控車輛安全,若實(shí)時(shí)性不能保證,則會(huì)造成早已駛出監(jiān)控范圍很遠(yuǎn)之后才報(bào)警的情況,車輛安全不能得到保證。同時(shí),如路線推薦、駕駛員行為分析等應(yīng)用,處理-響應(yīng)時(shí)間直接關(guān)系到用戶體驗(yàn),因此車聯(lián)網(wǎng)應(yīng)用必須保證實(shí)時(shí)性要求。
(3)任務(wù)有狀態(tài)。任務(wù)需要保存一定的內(nèi)存狀態(tài),如電子圍欄應(yīng)用中,需要保存所有車輛的電子圍欄數(shù)據(jù),從而在接收到GPS數(shù)據(jù)后馬上得到是否越過圍欄的反饋;而在疲勞駕駛提醒的應(yīng)用中,需要保存車輛自開始行駛到現(xiàn)在的持續(xù)狀態(tài),車輛行程不結(jié)束,狀態(tài)不能從內(nèi)存中刪除。實(shí)際開發(fā)中,發(fā)現(xiàn)這里的狀態(tài)還有一些計(jì)數(shù)值和緩存(如為提高數(shù)據(jù)庫寫入率,采取批量寫入時(shí)在內(nèi)存中緩存的數(shù)據(jù))。
由于車聯(lián)網(wǎng)數(shù)據(jù)和計(jì)算具有上述特點(diǎn),并且車聯(lián)網(wǎng)場景下用戶基數(shù)大但在線用戶比例低,流式系統(tǒng)中這些任務(wù)運(yùn)行一段時(shí)間后,內(nèi)存中存在大量不活躍的數(shù)據(jù)對象。
目前,國內(nèi)外流式系統(tǒng)層出不窮,主流系統(tǒng)包括Storm[3]、Yahool!S4[4]、Spark Streaming[5]等,目前還沒有關(guān)于流式系統(tǒng)中的不活躍對象管理的重要研究及成果。當(dāng)然,對長周期任務(wù)中不活躍數(shù)據(jù)的研究并不是新問題,Corba[6]、J2EE[7]等中間件上運(yùn)行著大量的長周期服務(wù),為了防止過多的會(huì)話、連接浪費(fèi)內(nèi)存,它們均為數(shù)據(jù)對象提供了生命周期服務(wù)。
本文分析了車聯(lián)網(wǎng)流式數(shù)據(jù)的特點(diǎn),建立了車聯(lián)網(wǎng)數(shù)據(jù)對象的生命周期模型;借鑒中間件技術(shù)的對象生命周期管理方法,設(shè)計(jì)和實(shí)現(xiàn)了流式系統(tǒng)的數(shù)據(jù)對象管理方法,為流式處理系統(tǒng)提供了一套內(nèi)存優(yōu)化方法,有效地解決了任務(wù)因長期運(yùn)行而造成的大量不活躍對象無限占用內(nèi)存的問題。本文研究雖然針對車聯(lián)網(wǎng)數(shù)據(jù),但本文設(shè)計(jì)的方案有很好的普適性,可以很方便地推廣到其他流式數(shù)據(jù)處理場景中,比如社交網(wǎng)絡(luò)的用戶分析和事件分析。
本文的研究內(nèi)容和成果包含以下幾個(gè)方面:
(1)經(jīng)過對車聯(lián)網(wǎng)數(shù)據(jù)的分析,本文定位到流式系統(tǒng)中存在的大量不活躍對象占用內(nèi)存的問題,將主流中間件系統(tǒng)(Corba/J2EE)采用的對象生命周期服務(wù)引入到流式處理系統(tǒng)中。
(2)針對傳統(tǒng)生命周期服務(wù)中采用經(jīng)驗(yàn)值設(shè)定參數(shù)的方式,提出一套應(yīng)用和數(shù)據(jù)雙驅(qū)動(dòng)的過期參數(shù)確定方法,為對象生命周期服務(wù)提供更合適的參數(shù),達(dá)到內(nèi)存優(yōu)化的最優(yōu)效果。
(3)將數(shù)據(jù)對象生命周期模塊集成到JStorm系統(tǒng),并且結(jié)合車聯(lián)網(wǎng)場景的真實(shí)用例和數(shù)據(jù),驗(yàn)證本文方法對流式系統(tǒng)的優(yōu)化效果。
本文組織結(jié)構(gòu)如下:第2章介紹了車聯(lián)網(wǎng)的數(shù)據(jù)處理需求、目前各流式系統(tǒng)基本情況和內(nèi)存使用情況的相關(guān)工作;第3章對車聯(lián)網(wǎng)數(shù)據(jù)進(jìn)行研究,著重分析了數(shù)據(jù)的活躍程度;第4章介紹了流式數(shù)據(jù)對象的生命周期模型和數(shù)據(jù)對象過期策略;第5章將流式數(shù)據(jù)對象管理作為單獨(dú)的模塊集成到JStorm系統(tǒng)中;第6章以電子圍欄應(yīng)用為例建模、實(shí)驗(yàn)并分析結(jié)果;第7章是結(jié)論和今后的工作介紹。
2.1 車聯(lián)網(wǎng)及其數(shù)據(jù)處理
近年來,車聯(lián)網(wǎng)作為物聯(lián)網(wǎng)的重要組成部分,得到了空前的發(fā)展。車聯(lián)網(wǎng)是保證道路安全,優(yōu)化公共交通資源的關(guān)鍵。通過車聯(lián)網(wǎng),可以提供車輛安全、事故管理、車輛監(jiān)控、流量調(diào)度、電子收費(fèi)、信息娛樂等方面的服務(wù)。開發(fā)車聯(lián)網(wǎng)相關(guān)產(chǎn)品,借此發(fā)展與其相關(guān)的汽車類電子產(chǎn)業(yè),推動(dòng)相關(guān)領(lǐng)域的經(jīng)濟(jì)變革,是對“互聯(lián)網(wǎng)+”的一次有效嘗試。
目前在車聯(lián)網(wǎng)方面的研究主要關(guān)注在移動(dòng)無線通信[8-9]、大規(guī)模移動(dòng)對象管理[10-11]、基于車聯(lián)網(wǎng)的數(shù)據(jù)挖掘[12]等方面。本文關(guān)注基于車聯(lián)網(wǎng)的大數(shù)據(jù)處理平臺(tái),希望針對車聯(lián)網(wǎng)數(shù)據(jù)特點(diǎn),提供更合適的數(shù)據(jù)處理系統(tǒng)。
車輛的高速行駛直接關(guān)系到車內(nèi)人員的生命財(cái)產(chǎn)安全,相比于其他網(wǎng)絡(luò)應(yīng)用,車聯(lián)網(wǎng)應(yīng)用具有更高的實(shí)時(shí)性需求。本文使用流式處理系統(tǒng)來滿足車聯(lián)網(wǎng)數(shù)據(jù)的流式處理需求,當(dāng)然車聯(lián)網(wǎng)場景下,也有批量計(jì)算、迭代計(jì)算的處理需求,但這并不是本文關(guān)注的重點(diǎn)。
車聯(lián)網(wǎng)下的流式應(yīng)用主要分為以下幾類:
(1)基礎(chǔ)統(tǒng)計(jì)?;A(chǔ)統(tǒng)計(jì)包括總數(shù)據(jù)量統(tǒng)計(jì)、用戶活躍性統(tǒng)計(jì)、錯(cuò)誤數(shù)據(jù)等各種特征數(shù)據(jù)統(tǒng)計(jì)。
(2)單條數(shù)據(jù)處理。對單條數(shù)據(jù)的簡單處理包括數(shù)據(jù)解析、錯(cuò)誤數(shù)據(jù)過濾,稍復(fù)雜的有電子圍欄應(yīng)用、車輛所屬行政區(qū)劃監(jiān)控等。
(3)序列提取,從流式的數(shù)據(jù)序列中提取到所需的數(shù)據(jù)序列。例如,行程分段算法將流式數(shù)據(jù)按照分段規(guī)則分成一段一段的行程,行程分段算法是疲勞駕駛提醒服務(wù)的基礎(chǔ)算法。同理可在數(shù)據(jù)流中提取到低速行駛段,可結(jié)合訂單數(shù)據(jù)為車輛提供實(shí)時(shí)計(jì)價(jià)。
2.2 流式處理系統(tǒng)
目前,工業(yè)界和產(chǎn)業(yè)界推出的較為成型的流式系統(tǒng)實(shí)例有:Yahoo!為提高搜索廣告有效點(diǎn)擊率的問題而開發(fā)的S4[4],安裝和使用最多的流式系統(tǒng)Twitter Storm[3],UC Berkeley建立在Spark[5]上的流式應(yīng)用框架Spark Streaming,Microsoft StreamInsight[13]針對并行、彈性替換和容錯(cuò)改進(jìn)之后的升級(jí)版本TimeStream[14],融合了流處理、批處理、圖處理的Microsoft Naiad[15],數(shù)據(jù)傳輸通道和流式數(shù)據(jù)處理系統(tǒng)Data Freeway and Puma[16],分布式實(shí)時(shí)統(tǒng)計(jì)系統(tǒng)Twitter Rainbird[17]等。研究多關(guān)注在系統(tǒng)框架、編程模型、可靠性、容錯(cuò)上,并沒有專門的研究關(guān)注到流式系統(tǒng)中的不活躍數(shù)據(jù)問題。
在流式系統(tǒng)上專門針對內(nèi)存使用方面的研究非常少,Storm等多數(shù)流式系統(tǒng)完全依賴于JVM(Java virtual machine)進(jìn)行內(nèi)存管理和回收,而對于不活躍數(shù)據(jù)對象,并不能也不應(yīng)該被JVM的GC(garbage collection)機(jī)制回收[18];S4任務(wù)重啟并恢復(fù)狀態(tài)時(shí),采用PE懶恢復(fù)方法,即直到再次用到PE時(shí),才恢復(fù)其狀態(tài),懶恢復(fù)使得S4在重啟任務(wù)時(shí)過濾掉了一部分不活躍的內(nèi)存數(shù)據(jù);Spark Streaming以RDD(resilient distributed datasets)[19]的形式來管理數(shù)據(jù),RDD一般保存在內(nèi)存中,但如果內(nèi)存不夠,可將其持久化到磁盤上。
2.3 生命周期服務(wù)
對長周期任務(wù)中不活躍數(shù)據(jù)的研究并不是新問題,Corba、J2EE等中間件系統(tǒng)上運(yùn)行著大量的長周期服務(wù)。Corba、J2EE都為數(shù)據(jù)對象(EJB/Servant)提供了生命周期服務(wù),對象處于活躍態(tài)時(shí)將其放在內(nèi)存中,轉(zhuǎn)為不活躍態(tài)時(shí)將其持久化到可靠存儲(chǔ)中。
J2EE中采用EJB[20-21]容器來限制內(nèi)存中EJB數(shù)量,這讓EJB容器能夠有效地利用內(nèi)存、數(shù)據(jù)庫連接、Socket連接等資源,同時(shí)增加EJB系統(tǒng)的可伸縮性。EJB容器通過掛起激活Bean實(shí)例,有效地完成Bean實(shí)例的生命周期管理。
合理的過期參數(shù)是生命周期服務(wù)是否起作用的基礎(chǔ)。然而,這些系統(tǒng)中對過期策略參數(shù)由用戶通過配置文件自行定制(一般設(shè)為經(jīng)驗(yàn)值)。文獻(xiàn)[22-23]指出應(yīng)通過模型驅(qū)動(dòng)確定參數(shù),但其是從系統(tǒng)角度做出調(diào)整以支持動(dòng)態(tài)參數(shù)變化,并沒有給出一套行之有效的參數(shù)確定方法。本文認(rèn)為過期參數(shù)應(yīng)該視應(yīng)用類型、數(shù)據(jù)到達(dá)情況而定,因此本文將在第4章給出由數(shù)據(jù)驅(qū)動(dòng)的過期時(shí)間確定方法。
3.1 數(shù)據(jù)概述
本文的數(shù)據(jù)來自國內(nèi)某租車公司的20 973輛車,月活躍車輛數(shù)約18 225輛,日活躍車輛數(shù)約為15 200臺(tái),每天的數(shù)據(jù)量約為6 000萬條。
本文處理的車聯(lián)網(wǎng)數(shù)據(jù)主要包括3種類型:GPS數(shù)據(jù)、OBD數(shù)據(jù)和用戶請求數(shù)據(jù)。其中,GPS數(shù)據(jù)包括該車的經(jīng)緯度、行駛速度、行駛方向等;OBD數(shù)據(jù)包括車輛的剩余油量、發(fā)動(dòng)機(jī)轉(zhuǎn)速、行駛里程等車輛狀態(tài)數(shù)據(jù);用戶請求數(shù)據(jù)即是對車聯(lián)網(wǎng)應(yīng)用發(fā)出的定制、取消定制請求,以及對應(yīng)用的參數(shù)設(shè)定等。
圖1(a)為月均單日GPS數(shù)據(jù)量隨時(shí)間變化曲線。從圖中可以看到明顯的早、晚高峰,早高峰數(shù)據(jù)流量約為170萬條/小時(shí),晚高峰約為210萬條/小時(shí),凌晨3點(diǎn)到5點(diǎn)數(shù)據(jù)流量最低(不到20萬條/小時(shí))。上述大規(guī)模、高密度數(shù)據(jù)除了能夠表示車輛本身狀態(tài)和行駛狀態(tài)外,還能夠刻畫一個(gè)城市各個(gè)道路的流量、污染排放等情況。
與微博等社交網(wǎng)站相比,車聯(lián)網(wǎng)數(shù)據(jù)有如下特征:第一,數(shù)據(jù)均為結(jié)構(gòu)化數(shù)據(jù);第二,數(shù)據(jù)反映車輛狀態(tài),本身不具有情感色彩;第三,數(shù)據(jù)上傳頻率更高,車輛在活躍期間會(huì)持續(xù)上傳數(shù)據(jù),因此在用戶數(shù)相同的情況下,車聯(lián)網(wǎng)數(shù)據(jù)量要比微博數(shù)據(jù)量大得多;第四,車聯(lián)網(wǎng)的用戶粘性更大,活躍頻率更高,經(jīng)統(tǒng)計(jì),超過50%車輛的月活躍天數(shù)達(dá)到28天以上。由統(tǒng)計(jì)[24]可知,截止2014年末,我國汽車保有量約1.4億,其中北京市汽車保有量為537萬輛。如果車聯(lián)網(wǎng)得到進(jìn)一步推廣,按照目前的數(shù)據(jù)情況推算,車聯(lián)網(wǎng)的數(shù)據(jù)規(guī)模將明顯超過微博等各大社交平臺(tái)。
3.2 車輛活躍度分析
對于車聯(lián)網(wǎng)數(shù)據(jù),本文尤其關(guān)注車輛的活躍性,這里認(rèn)為車輛有數(shù)據(jù)上傳就是活躍的。人們希望知道每一輛車何時(shí)活躍,一次活躍會(huì)持續(xù)多久,總結(jié)出每一輛車的活躍規(guī)律,從而為車輛提供個(gè)性化的服務(wù),同時(shí)也可以在后臺(tái)計(jì)算上采取差異化的處置措施,以達(dá)到最佳的處理效果。然而,在數(shù)據(jù)分析階段,單獨(dú)統(tǒng)計(jì)一輛車的數(shù)據(jù)并不具有代表性,因此本文圍繞數(shù)據(jù)活躍性問題,對數(shù)據(jù)進(jìn)行了車輛月活躍天數(shù)、月平均每天活躍時(shí)間、單次活躍持續(xù)時(shí)間3項(xiàng)統(tǒng)計(jì)。
圖1(b)為所有車輛一個(gè)月內(nèi)活躍天數(shù)的比例分布。由圖可知,車輛中約57%的車輛月活躍天數(shù)超過27天,其中每天都活躍的車輛約占28%,另外活躍頻率為1~22天/月的車輛比例都非常低,共約占18%。圖1(c)統(tǒng)計(jì)了一輛車平均每天活躍時(shí)間的分布情況。由圖可知,每天活躍3~5 h的車輛最多,占總車輛的27%,約50%車輛每天活躍時(shí)間低于5 h,活躍時(shí)間7 h以下的占75%。圖1(b)和圖1(c)的統(tǒng)計(jì)說明雖然車輛幾乎都是每天活躍,但是平均每天活躍的時(shí)間仍較低。若在處理時(shí)將所有對象都保存在內(nèi)存中,那么一天中的每個(gè)時(shí)間點(diǎn)都會(huì)有大量對象處于不活躍狀態(tài)。因此,本文將不活躍對象暫時(shí)清出內(nèi)存,防止不必要的內(nèi)存浪費(fèi)。
圖1(d)統(tǒng)計(jì)了單段活躍持續(xù)時(shí)間的分布。由圖可知,約18%的活躍持續(xù)時(shí)間為0,即車輛突然上傳一條數(shù)據(jù),之后一段時(shí)間內(nèi)沒有再次產(chǎn)生數(shù)據(jù),將這種活躍叫作點(diǎn)狀活躍;與點(diǎn)狀活躍相對應(yīng),將持續(xù)一段時(shí)間保持活躍的狀態(tài)叫作段狀活躍,37%活躍持續(xù)時(shí)間在0.5 h以內(nèi),90%在2 h以內(nèi),約3%的行程超過4 h。由此可知,車輛活躍的段狀特征明顯,同時(shí)有部分?jǐn)?shù)據(jù)以零散點(diǎn)狀方式上傳。當(dāng)數(shù)據(jù)表現(xiàn)為明顯的段狀活躍特征時(shí),說明對象在一次活躍后,短時(shí)間內(nèi)很可能被多次訪問,那么可以做出預(yù)測:下一次被訪問的對象很可能是最近剛被訪問過的對象。4.2節(jié)將基于這一預(yù)測設(shè)置數(shù)據(jù)對象的過期策略。
Fig.1 Statistics for IoV data圖1 車聯(lián)網(wǎng)數(shù)據(jù)統(tǒng)計(jì)結(jié)果
針對流式系統(tǒng)中存在大量不活躍對象問題,本文給出了流式系統(tǒng)的數(shù)據(jù)對象管理方法,該方法應(yīng)具有如下特點(diǎn):
(1)受管對象可以是流式系統(tǒng)中的任何Java對象,對于自定義對象,用戶須為其提供相應(yīng)的序列化方法。
(2)能夠自動(dòng)檢測不活躍對象,并將其持久化到可靠存儲(chǔ)中,防止因不必要的內(nèi)存占用而浪費(fèi)資源;當(dāng)對象恢復(fù)活躍時(shí),能夠較快地恢復(fù)內(nèi)存狀態(tài),正常地為流式系統(tǒng)提供服務(wù)。
為方便敘述,將此類受管對象統(tǒng)一命名為流數(shù)據(jù)對象(streaming data object,SDO)。流式系統(tǒng)使用SDO容器(SDOContainer)組織和管理SDO。SDOContainer功能包括SDO組織和SDO生命周期管理。
4.1 SDO狀態(tài)及狀態(tài)轉(zhuǎn)移
本文將每個(gè)SDO的生命周期分為3個(gè)階段。
(1)不存在(Does not exist):SDO還沒有被實(shí)例化,不在內(nèi)存中;
(2)活躍態(tài)(Ready):在此狀態(tài)下,SDO可正常被流式系統(tǒng)使用;
(3)不活躍態(tài)(Inactive):SDO從內(nèi)存中移除,并持久化到磁盤中,可以恢復(fù)內(nèi)存狀態(tài)并為流式系統(tǒng)提供服務(wù)。
圖2是SDO生命周期的狀態(tài)轉(zhuǎn)換圖。
Fig.2 SDO’s state machine during its lifecycle圖2 SDO生命周期狀態(tài)機(jī)
(1)Does not exist?Ready:當(dāng)流式系統(tǒng)用戶創(chuàng)建新的SDO實(shí)例時(shí),SDO的生命周期開始,完成初始化后,SDO保存在內(nèi)存里開始為流式系統(tǒng)使用。
(2)Ready?Inactive:SDO被檢測為不活躍對象,SDO被去活,去活之前先釋放SDO可能持有的所有資源,去活SDO后,SDO容器將SDO的狀態(tài)持久化到硬盤或其他存儲(chǔ)源中。默認(rèn)情況下,將SDO序列化、持久化到硬盤。
(3)Inactive?Ready:被去活的SDO可能再次被激活,這時(shí)需要載入并恢復(fù)其被持久化的狀態(tài);激活之前SDO須恢復(fù)去活時(shí)釋放的資源,雖然此時(shí)的SDO實(shí)例已經(jīng)不是被去活之前的SDO實(shí)例,但是這一切對流式應(yīng)用是透明的。
(4)Ready/Inactive?Does not exist:SDO被顯式移除。
4.2 SDO過期策略
基于3.2節(jié)對車聯(lián)網(wǎng)數(shù)據(jù)活躍規(guī)律的分析,對于明顯段狀活躍的數(shù)據(jù),應(yīng)盡量把剛剛訪問過的對象保存在內(nèi)存中,而將那些很久沒有被訪問的SDO從內(nèi)存中移除。基于這種移除方式,SDOContainer提供兩種基本的SDO過期策略。
(1)基于空間的過期策略。SDOContainer設(shè)定一個(gè)SDO數(shù)量上限,當(dāng)?shù)竭_(dá)該上限時(shí),按照最近最少訪問順序來去活對象;此方法是為了防止SDO無限制地占用內(nèi)存,是對系統(tǒng)資源進(jìn)行保護(hù)。SDO的最大數(shù)量根據(jù)系統(tǒng)的資源情況和SDO的大小共同估計(jì)得到。此方式得到的延遲是在保護(hù)系統(tǒng)資源的前提下,為流式任務(wù)提供的最低延遲。
(2)基于時(shí)間的過期策略。SDOContainer對其管理下的SDO設(shè)置一個(gè)超時(shí)時(shí)間,當(dāng)超過這一時(shí)間沒有被訪問時(shí),就將其從內(nèi)存中剔除。這種方法用于防止長時(shí)間未被使用的數(shù)據(jù)對象長期占用內(nèi)存而造成內(nèi)存浪費(fèi)。SDO的過期時(shí)間需根據(jù)應(yīng)用和數(shù)據(jù)情況而建模確定,下一節(jié)將介紹過期時(shí)間的確定方法。此方式能夠保證系統(tǒng)延遲在可接受的范圍內(nèi),將內(nèi)存使用降到最低。
4.3 SDO過期窗口確定方法
相比于中間件中采用的用戶自行設(shè)定過期時(shí)間的方法(設(shè)置經(jīng)驗(yàn)值),本文采用應(yīng)用和數(shù)據(jù)驅(qū)動(dòng)的參數(shù)確定方法,為流式任務(wù)確定“合適的”SDO過期時(shí)間?!昂线m的”過期時(shí)間是指在保證延遲用戶可接受的前提下,最大限度地降低內(nèi)存占用率??梢詫?nèi)存中SDO看成是最近最少使用SDO鏈上的滑動(dòng)窗口范圍內(nèi)的數(shù)據(jù)(如圖3所示),窗口代表著SDO的過期時(shí)間。
本文選擇流式任務(wù)的處理延遲、內(nèi)存占用作為性能指標(biāo),那么需要明確窗口對延遲、內(nèi)存占用的影響。圖4是對內(nèi)存占用、處理延遲隨窗口大小變化的經(jīng)驗(yàn)分析:增大window,導(dǎo)致活躍對象的比例增大,內(nèi)存占用率與活躍對象比例呈正比,因此內(nèi)存占用率相應(yīng)增大;而延遲與內(nèi)存擊中率直接相關(guān),內(nèi)存擊中率受活躍對象比例和數(shù)據(jù)連續(xù)性兩方面共同影響,對于連續(xù)性穩(wěn)定的數(shù)據(jù),整體上內(nèi)存擊中率隨活躍對象比例增大而增大。例如:當(dāng)數(shù)據(jù)隨機(jī)到達(dá)時(shí),內(nèi)存擊中率與活躍對象比例呈正比關(guān)系,數(shù)據(jù)活躍比例一定時(shí),數(shù)據(jù)的連續(xù)性高,內(nèi)存擊中率大。
Fig.3 Sliding window of SDOContainer based on expiring time圖3 SDOContainer基于過期時(shí)間的滑動(dòng)窗口
Fig.4 Influence of window size on processing delay and memory usage圖4 窗口大小對處理延遲和內(nèi)存占用的影響
根據(jù)以上分析,可得目標(biāo)函數(shù)(1):
其中,w為窗口大?。籺為時(shí)間;delay為采用w窗口在t時(shí)刻的處理延遲;hr為擊中緩存的概率,它由窗口大小和該時(shí)刻的數(shù)據(jù)情況決定;dmem為直接從內(nèi)存中取數(shù)據(jù)并投入計(jì)算時(shí)應(yīng)用的處理延時(shí);dload為未擊中內(nèi)存(從可靠存儲(chǔ)中取出并恢復(fù)SDO狀態(tài))時(shí)的數(shù)據(jù)處理延遲。
理論上,用戶給定最大可接受的平均延時(shí),在每個(gè)時(shí)間點(diǎn)會(huì)對應(yīng)一組window值,由于內(nèi)存占用隨window的增大而增大,取這組值中最小值作為window,即可達(dá)到在給定最大可接受處理延遲的前提下,將內(nèi)存占用降到最低。
總結(jié)window的確定方法為:測試式(1)中參數(shù)dload、dmem值,得到處理延遲隨內(nèi)存擊中率變化的函數(shù);給定最大可接受的處理延遲d1,得到相應(yīng)的緩存擊中率hr1;統(tǒng)計(jì)并擬合出hr=P(w,t),取hr=hr1,即可得到隨時(shí)間變化的窗口大小。此window值可以使得在保證用戶設(shè)定平均延遲的前提下,內(nèi)存占用降到最低。
本文將SDO生命周期管理作為單獨(dú)模塊集成進(jìn)入JStorm系統(tǒng)。JStorm是一個(gè)分布式實(shí)時(shí)計(jì)算引擎,它用Java完全重寫Storm內(nèi)核,保持了Storm的編程規(guī)范性、健壯性和拓展性,不僅如此,JStorm重新設(shè)計(jì)了調(diào)度、采樣、監(jiān)控、HA,并對Zookeeper[25]和RPC進(jìn)行大幅改良,從而JStorm比Storm更穩(wěn)定,功能更強(qiáng)。
JStorm系統(tǒng)由3類節(jié)點(diǎn)組成(如圖5所示)。
(1)Zookeeper:JStorm集群資源協(xié)調(diào)者。Supervisor、任務(wù)task定期向Zookeeper發(fā)送心跳,Nimbus通過檢測Zookeeper上的心跳數(shù)據(jù)來監(jiān)控集群的資源情況和任務(wù)的執(zhí)行情況。
(2)Nimbus:任務(wù)分配器。Client向Nimbus提交任務(wù)后,Nimbus為任務(wù)進(jìn)行資源分配并寫入Zookeeper,Supervisor從Zookeeper上獲取分配給自己的任務(wù)并啟動(dòng)相應(yīng)的進(jìn)程、線程。
(3)Supervisor:JStorm的工作節(jié)點(diǎn)。Supervisor啟動(dòng)Worker執(zhí)行分配給自己的任務(wù),Supervisor監(jiān)控本地Worker的狀態(tài),以便及時(shí)地進(jìn)行故障恢復(fù)。
運(yùn)行于Supervisor上的Worker進(jìn)程是任務(wù)的實(shí)際執(zhí)行者。圖的下半部分是Worker對消息的處理流程,tuple首先進(jìn)入task的接收隊(duì)列,BoltExcutor線程根據(jù)處理速度從接收隊(duì)列取出tuple并做處理,向外發(fā)送的tuple被放入序列化隊(duì)列待序列化后發(fā)送到下級(jí)bolt。
SDOContainer作為一個(gè)單獨(dú)的模塊集成到JStorm中,當(dāng)開發(fā)者需要生命周期管理服務(wù)時(shí),可申請相應(yīng)的SDOContainer,將需要被管理的中間結(jié)果或任何數(shù)據(jù)放入其中。同時(shí)設(shè)置SDOContainer的過期參數(shù)、可靠存儲(chǔ)的相應(yīng)參數(shù),SDOContianer即可自動(dòng)地完成對其內(nèi)部SDO的生命周期管理。
默認(rèn)狀態(tài)下,SDOContainer將Inactive狀態(tài)的SDO寫入到外存中,為用戶提供持久化接口,用戶通過連接(Connect)、關(guān)閉(Close)、寫入(Store)、讀?。↙oad)4個(gè)函數(shù),即可實(shí)現(xiàn)內(nèi)存數(shù)據(jù)和任何存儲(chǔ)介質(zhì)的數(shù)據(jù)交換。
Fig.5 JStorm+SDOContainer system圖5 JStorm+SDOContainer系統(tǒng)
6.1 集群配置和使用
測試資源包括兩個(gè)物理節(jié)點(diǎn)(test1/test2),每個(gè)節(jié)點(diǎn)的配置是:8核2.80 GHz Intel?CoreTMi7 CPU860,16 GB內(nèi)存和1 TB的SATA硬盤。其中,test1單純作為JStorm的工作節(jié)點(diǎn)(包含Supervisor進(jìn)程和Worker進(jìn)程);test2除作為JStorm的任務(wù)分配節(jié)點(diǎn)(啟動(dòng)Nimbus進(jìn)程)外,還安裝了MySQL數(shù)據(jù)庫作為可靠存儲(chǔ)。
測試中,SDOContainer采用默認(rèn)持久化策略,將不活躍SDO通過序列化工具Kryo序列化并存儲(chǔ)到MySQL數(shù)據(jù)庫中。
6.2 實(shí)驗(yàn)設(shè)計(jì)
6.2.1 用例描述
電子圍欄應(yīng)用是車聯(lián)網(wǎng)場景下的一個(gè)流式應(yīng)用。管理員為車輛設(shè)置電子圍欄范圍,車輛持續(xù)向服務(wù)器端發(fā)送GPS位置數(shù)據(jù),服務(wù)器端實(shí)時(shí)判斷車輛是否越過電子圍欄,若超出或重新進(jìn)入圍欄,為車輛管理員發(fā)送狀態(tài)變更提醒。該應(yīng)用用于滿足租車運(yùn)營商或普通車主的車輛安全需求。
圖6為電子圍欄用例的任務(wù)拓?fù)鋱D,Storm拓?fù)渲泄灿?個(gè)邏輯節(jié)點(diǎn),其中2個(gè)Spout作為數(shù)據(jù)源和2個(gè)Bolt作為數(shù)據(jù)處理節(jié)點(diǎn)。
Fig.6 Topology of electronic-fence application圖6 電子圍欄任務(wù)拓?fù)?/p>
(1)Fence_spout(S1):接收管理員對電子圍欄的設(shè)置,發(fā)送圍欄數(shù)據(jù)到InFenceMonitor_bolt節(jié)點(diǎn),更改內(nèi)存中車輛的圍欄設(shè)置。
(2)Location_spout(S2):持續(xù)接收車輛發(fā)送的位置信息,發(fā)送位置數(shù)據(jù)到InFenceMonitor_bolt節(jié)點(diǎn)。
(3)InFenceMonitor_bolt(B1):使用優(yōu)化射線法[26],判斷車輛位置是否超越電子圍欄,若發(fā)生狀態(tài)變更(超出圍欄或重回圍欄),則將結(jié)果發(fā)送到DBvisior_ bolt節(jié)點(diǎn)。
(4)DBvisitor_bolt(B2):數(shù)據(jù)庫訪問節(jié)點(diǎn),將車輛進(jìn)出圍欄時(shí)間寫入到數(shù)據(jù)庫中。
6.2.2 數(shù)據(jù)來源
車輛位置數(shù)據(jù)來源于國內(nèi)某租車公司的20 973輛車,車輛未熄火時(shí)約5~8 s發(fā)送一次GPS數(shù)據(jù),熄火時(shí)不發(fā)送數(shù)據(jù)。
設(shè)置車輛的電子圍欄為注冊城市區(qū)域,城市的GPS區(qū)域通過百度地圖API獲得,平均約為600邊的多邊形。
6.3 SDO過期參數(shù)分析
本節(jié)根據(jù)4.3節(jié)給出的SDO過期參數(shù)確定方法,確定SDOContainer最大容量和SDO過期時(shí)間。
首先,將任務(wù)運(yùn)行在沒有SDOContainer管理的JStorm平臺(tái),內(nèi)存使用量約為10.3 GB,數(shù)據(jù)處理延遲約為13.11 ms。由此可知,任務(wù)未達(dá)到系統(tǒng)內(nèi)存瓶頸,因此不必設(shè)置SDOContainer的最大容量,系統(tǒng)可達(dá)到的最小處理延遲為13.11 ms。
測試得到hr=0.9時(shí),delay=46.79 ms,可知公式中的dload約為349.91 ms/條。因此,目標(biāo)函數(shù)可表示為:
之后,統(tǒng)計(jì)各時(shí)間點(diǎn),內(nèi)存擊中率隨窗口大小的變化hr=P(w,t),該統(tǒng)計(jì)結(jié)果擬合出的應(yīng)為具有二維變量的三維圖形,抽取代表性時(shí)間點(diǎn)的數(shù)據(jù)繪制圖表。由圖7可知,window在0~20 s內(nèi),內(nèi)存擊中率隨window大小急劇增長,幾乎所有時(shí)間點(diǎn)的擊中率都達(dá)到90%以上,當(dāng)window進(jìn)一步增大時(shí),擊中率上升緩慢,最終擊中率為1。
Fig.7 Influence of window size on memory hit rate圖7 內(nèi)存擊中率隨窗口大小變化
所有時(shí)間點(diǎn)的內(nèi)存擊中率隨窗口大小的曲線幾乎重合,因此可采用不隨時(shí)間變化的窗口大小。設(shè)定最大可接受的平均處理延遲為30 ms,此時(shí)需滿足hr>94.49%,根據(jù)圖7的統(tǒng)計(jì)結(jié)果,對應(yīng)的窗口大小為30ms(圖7中,30ms對應(yīng)的平均內(nèi)存擊中率為95.5%)。
沒有加入SDOContainer之前,平均處理延遲為13.11 ms,內(nèi)存占用為10.3 GB;加入SDOContianer,且window=30時(shí),延遲為18.81 ms,內(nèi)存占用為8.3 GB,內(nèi)存占用降低了近20%。
6.4 SDO性能分析
本節(jié)測試使用SDOContainer后,對該應(yīng)用處理延遲、內(nèi)存占用方面的改變,以及選擇window=30 s的合理性。
圖8為處理延遲、內(nèi)存占用隨窗口大小的變化情況。由圖可知,在測試區(qū)間(10~120 s)內(nèi),處理延遲隨窗口的增大而減小,內(nèi)存使用隨窗口增大而增大,要使處理延遲低于30 ms,window需大于30 s。雖然由于測試精度的問題,window取30 s、40 s時(shí)內(nèi)存占用均為8.3 GB,但從理論分析和總體趨勢可以知道,window=30是在滿足處理延遲低于30 ms的前提下,內(nèi)存占用率最低的情況。
Fig.8 Processing delay and memory usage in JStorm and JStorm+SDOContainer圖8 加入/未加入SDOcontainer時(shí)JStorm處理延遲和內(nèi)存占用情況
由上述分析可知,在電子圍欄應(yīng)用中,引入SDOContainer模塊并設(shè)置合適的SDO過期參數(shù)之后,可以為流式系統(tǒng)大幅度地節(jié)省內(nèi)存資源。
本文針對流式系統(tǒng)中存在大量不活躍對象的問題,對流式數(shù)據(jù)對象建立生命周期模型,采用數(shù)據(jù)驅(qū)動(dòng)、應(yīng)用驅(qū)動(dòng)的參數(shù)確定方法,為SDO設(shè)置合適的過期參數(shù)。實(shí)驗(yàn)結(jié)果表明,本文方法在用戶可接受的處理延遲范圍內(nèi),能夠有效減少流式系統(tǒng)中不活躍對象的數(shù)目,節(jié)約系統(tǒng)的內(nèi)存資源,達(dá)到內(nèi)存優(yōu)化的目的。
對于SDOContainer模型中SDO過期參數(shù)明顯隨時(shí)間而變化的用例,本文尚未給出參數(shù)確定方法,這也是本文的后續(xù)工作。
[1]White paper of Internet of vehicles(IoV)[EB/OL].[2015-06-26].http://mddb.apec.org/Documents/2014/TEL/TEL50-PLEN/14_tel50_plen_020.pdf.
[2]Zhu Jianping,Lai Shengqiang.A survey on streaming data mining and future directions in statistical research[J].Statistical Research,2007,24(7):84-87.
[3]Toshniwal A,Taneja S,Shukla A,et al.Storm@twitter[C]// Proceedings of the 2014 ACM SIGMOD International Conference on Management of Data,Snowbird,USA,Jun 22-27,2014.New York:ACM,2014:147-156.
[4]Neumeyer L,Robbins B,Nair A,et al.S4:distributed stream computing platform[C]//Proceedings of the 2010 IEEE International Conference on Data Mining Workshops,Sydney, Australia,Dec 13,2010.Piscataway,USA:IEEE,2010: 170-177.
[5]Zaharia M,Das T,Li Haoyuan,et al.Discretized streams: fault-tolerant streaming computation at scale[C]//Proceedings of the 24th ACM Symposium on Operating Systems Principles,Farmington,USA,Nov 3-6,2013.New York:ACM, 2013:423-438.
[6]Vinoski S.CORBA:integrating diverse applications within distributed heterogeneous environments[J].IEEE Communications Magazine,1997,35(2):46-55.
[7]The white paper of JavaEE7[EB/OL].[2015-06-26].http:// www.oracle.com/technetwork/java/javaee/.
[8]Wu Hao,Tang Hengliang,Dong Lan.A novel routing protocol based on mobile social networks and internet of vehicles [C]//LNCS 8662:Proceedings of the 1st International Conference on Internet of Vehicles-Technologies and Services, Beijing,Sep 1-3,2014.Basel,Switzerland:Springer International Publishing,2014:1-10.
[9]Sch?nfelder R,Leucker M,Walther S.Efficient profile routing for electric vehicles[C]//LNCS 8662:Proceedings of the 1st International Conference on Internet of Vehicles-Technologies and Services,Beijing,Sep 1-3,2014.Basel,Switzerland: Springer International Publishing,2014:21-30.
[10]Hu Haibo,Xu Jianliang,Lee D L.A generic framework for monitoring continuous spatial queries over moving objects [C]//Proceedings of the 2005 ACM SIGMOD International Conference on Management of Data,Baltimore,USA,Jun 14-16,2005.New York:ACM,2005:479-490.
[11]Alamri S,Taniar D,Safar M,et al.A connectivity index for moving objects in an indoor cellular space[J].Personal and Ubiquitous Computing,2014,18(2):287-301.
[12]Shang Jingbo,Zheng Yu,Tong Wenzhu,et al.Inferring gas consumption and pollution emission of vehicles throughout a city[C]//Proceedings of the 20th ACM SIGKDD International Conference on Knowledge Discovery and Data Mining, New York,Aug 24-27,2014.New York:ACM,2014:1027-1036.
[13]Ali M H,Gerea C,Raman B S,et al.Microsoft CEP server and online behavioral targeting[J].Proceedings of the VLDB Endowment,2009,2(2):1558-1561.
[14]Qian Zhengping,He Yong,Su Chunzhi,et al.Timestream: reliable stream computation in the cloud[C]//Proceedings of the 8th ACM European Conference on Computer Systems,Prague,Czech Republi,Apr 15-17,2013.New York: ACM,2013:1-14.
[15]Murray D G,McSherry F,Isaacs R,et al.Naiad:a timely dataflow system[C]//Proceedings of the 24th ACM Symposium on Operating Systems Principles,Farmington,USA, Nov 3-6,2013.New York:ACM,2013:439-455.
[16]Zheng Shao.Data freeway and puma:realtime data streams and analytics[C]//Proceedings of Hadoop in China 2011, Beijing,Dec 2-3,2011.
[17]Rainbird:realtime analytics at twitter[EB/OL].[2015-06-26]. http://www.slideshare.net/kevinweil/rainbird-realtime-analyticsat-twitter-strata-2011.
[18]Liu Yongpo,Jia Xiaoxia,Wu Ji,et al.Analysis of memory usage with low efficiency in Java program[J].Computer Engineering,2008,34(23):84-85.
[19]Zaharia M,Chowdhury M,Das T,et al.Resilient distributed datasets:a fault-tolerant abstraction for in-memory cluster computing[C]//Proceedings of the 9th USENIX Conference on Networked Systems Design and Implementation,San Jose, USA,Apr 25-27,2012.Berkeley,USA:USENIX Association,2012:2.
[20]Sriganesh R P,Brose G,Silverman M.Mastering enterprise JavaBeans 3.0[M].Hoboken,USA:John Wiley&Sons Inc,2005.
[21]Li Huoming.Beginning in EJB3.0[M]//Beijing:Tsinghua University Press,2008.
[22]Bidan C,Issarny V,Saridakis T,et al.A dynamic reconfiguration service for CORBA[C]//Proceedings of the 4thInternational Conference on Configurable Distributed Systems, Annapolis,USA,May 4-6,1998.Piscataway,USA:IEEE, 1998:35-42.
[23]Coulson G,Blair G S,Clarke M,et al.The design of a configurable and reconfigurable middleware platform[J].Distributed Computing,2002,15(2):109-126.
[24]National Bureau of Statistics of China.Statistical communiqué of the People?s Republic of China on the 2014 national economic and social development[EB/OL].[2015-06-26]. http://www.stats.gov.cn/tjsj/zxfb/201502/t20150226_685799. html.
[25]Hunt P,Konar M,Junqueira F P,et al.ZooKeeper:wait-free coordination for Internet-scale systems[C]//USENIX Annual Technical Conference,Boston,USA,Jun 23-25,2010. Berkeley,USA:USENIXAssociation,2010.
[26]Wu Jian,Jiang Hong,Wang Xiaochun.A method for the decision of a point whether in or not in self-intersected polygon[J].Journal of System Simulation,2003,15(11):1592-1594.
附中文參考文獻(xiàn):
[2]朱建平,來升強(qiáng).流式數(shù)據(jù)挖掘的現(xiàn)狀及統(tǒng)計(jì)學(xué)的研究趨勢[J].統(tǒng)計(jì)研究,2007,24(7):84-87.
[18]柳永坡,賈曉霞,吳際,等.Java程序內(nèi)存低效使用問題的分析[J].計(jì)算機(jī)工程,2008,34(23):84-85.
[21]黎活明.EJB3.0入門經(jīng)典[M].北京:清華大學(xué)出版社, 2008.
[24]中華人民共和國國家統(tǒng)計(jì)局.2014年國民經(jīng)濟(jì)和社會(huì)發(fā)展統(tǒng)計(jì)公報(bào)[EB/OL].[2015-06-26].http://www.stats.gov. cn/tjsj/zxfb/201502/t20150226_685799.html.
[26]吳堅(jiān),姜虹,王小椿.快速判斷點(diǎn)是否在自交多邊形內(nèi)的方法[J].系統(tǒng)仿真學(xué)報(bào),2003,15(11):1592-1594.
WANG Jiaxing was born in 1990.She is an M.S.candidate at Beihang University.Her research interests include distributed computing and big data processing.
王家興(1990—),女,遼寧阜新人,北京航空航天大學(xué)碩士研究生,主要研究領(lǐng)域?yàn)榉植际接?jì)算,大數(shù)據(jù)處理。
LIN Xuelian was born in 1978.He received the Ph.D.degree from Beihang University in 2013.Now he is a lecturer at Beihang University.His research interests include distributed computing and middleware.
林學(xué)練(1978—),男,浙江溫州人,2013年于北京航空航天大學(xué)獲得博士學(xué)位,現(xiàn)為北航計(jì)算機(jī)學(xué)院講師,主要研究領(lǐng)域?yàn)榉植际接?jì)算,中間件技術(shù)。
SHEN Yang was born in 1991.He is an M.S.candidate at Beihang University.His research interests include distributed computing and big data processing.
申陽(1991—),男,河北邯鄲人,北京航空航天大學(xué)碩士研究生,主要研究領(lǐng)域?yàn)榉植际接?jì)算,大數(shù)據(jù)處理。
Data Object Managing Method in Stream Processing System?
WANG Jiaxing1+,LIN Xuelian1,SHEN Yang1,ZHANG Yun2,ZHANG Mingming1,MAShuai1
1.School of Computer Science and Engineering,Beihang University,Beijing 100191,China
2.Shanghai General Recognition Technology Research Institute,Shanghai 201100,China
+Corresponding author:E-mail:wangjx@act.buaa.edu.cn
In the practice of Internet of vehicles,people run several computing applications in streaming systems to analyze GPS/OBD data collected from vehicles.These applications have some common requirements and features, which are long-cycle running,low processing delay,and the need for keeping states in memory.However,after a long time running,such kind of streaming job needs to keep a lot of computation parameters,status and other data in memory, and large numbers of data objects are not active among them.If let them occupy memory,it will cause a great waste of system resource.This paper proposes a data object managing method for stream tasks,and hopes to optimize the memory use of streaming system to solve the according problem.This paper establishes lifecycle model for streaming data object(SDO),and uses application-driven,data-driven method to achieve appropriate expire-parameters for SDO. Finally,this paper tests the proposed method in applications of Internet of vehicles.Experiments show that the proposed method can effectively reduce inactive SDO number and improve resource utilization while ensuring the processing delay can be accepted by users.
Internet of vehicles;streaming system;inactive object;lifecycle management;data-driven model
10.3778/j.issn.1673-9418.1509013
A
TP391
*The National Natural Science Foundation of China under Grant No.91118008(國家自然科學(xué)基金).
Received 2015-08,Accepted 2015-10.
CNKI網(wǎng)絡(luò)優(yōu)先出版:2015-10-30,http://www.cnki.net/kcms/detail/11.5602.TP.20151030.1620.006.html