《大数据》2015年第3期“研究”——大数据流式计算:应用特征和技术挑战
大數據流式計算:應用特征和技術挑戰
孫大為
(中國地質大學信息工程學院 北京 100083)
摘要:在大數據時代,數據的時效性日益突出,數據的流式特征更加明顯,越來越多的應用場景需要部署在流式計算平臺中。大數據流式計算作為大數據計算的一種形態,其重要性也不斷提升。針對大數據環境中流式計算應用所呈現出的諸多鮮明特征進行了系統化的分析,并從系統架構的角度,給出了大數據流式計算系統構建的原則性策略。結合當前比較典型的流式計算平臺,重點研究了當前大數據流式計算在在線環境下的資源調度和節點依賴環境下的容錯策略等方面的技術挑戰。
關鍵詞:大數據;流式計算;應用特征;在線調度;系統容錯
doi: 10.11959/j.issn.2096-0271.2015032
Big Data Stream Computing: Features and Challenges
Sun Dawei
(School of Information Engineering, China University of Geosciences, Beijing 100083,China)
Abstract: In big data era, the timeliness of data has become one of the most important factors, and the streaming feature of data has become more obvious. More and more applications need to be deployed in stream computing platforms. Big data stream computing as a major form of big data computing has become more and more important. The features of big data stream computing application were systematically analyzed. The principle strategies to build a big data stream computing system were given from the perspective of system architecture.Combined with some typical big data stream computing systems, some technology challenges in big data stream computing environments were focused, such as resource scheduling in online environments, fault tolerance strategy innode-dependence environments.
Key words: big data, stream computing,application feature, online scheduling, system fault tolerance
論文引用格式:孫大為.大數據流式計算:應用特征和技術挑戰.大數據,2015032
Sun D W. Big data stream computing: features and challenges. Big Data Research, 2015032
1 引言
云計算、物聯網等新興信息技術和應用模式的快速發展,推動人類社會邁入大數據新時代[1~3]。一般意義上,大數據是指利用現有理論、方法、技術和工具難以在可接受的時間內完成分析計算、整體呈現高價值的海量復雜數據集合。大數據蘊含大信息,大信息提煉大知識,大知識將在更高的層面、以更廣的視角、在更大的范圍內幫助用戶提高洞察力、提升決策力,為人類社會創造前所未有的大價值。但與此同時,這些總量極大的價值往往隱藏在大數據中,表現出了價值密度極低、分布極其不規律、信息隱藏程度極深、發現有用價值極其困難等鮮明特性,這些特征必然為大數據的計算帶來前所未有的挑戰和機遇。
大數據的計算模式[2~5]主要分為批量計算(batch computing)、流式計算(stream computing)、交互計算(interactive computing)、圖計算(graph computing)等。其中,流式計算和批量計算是兩種主要的大數據計算模式,分別適用于不同的大數據應用場景。對于先存儲后計算,實時性要求不高,同時數據的準確性、全面性更為重要的應用場景,批量計算更加適合;對于無需先存儲,可以直接進行數據計算,實時性要求很嚴格,但數據的精確度往往不太苛刻的應用場景,流式計算具有明顯優勢。流式計算中,數據往往是最近一個時間窗口內的增量數據,因此數據時延往往較短,實時性較強,但數據的信息量往往相對較少,只限于一個時間窗口內的信息,不具有全量信息。流式計算和批量計算具有明顯的優劣互補特征,在多種應用場合下可以將兩者結合起來使用,通過發揮流式計算的實時性優勢和批量計算的計算精度優勢,滿足多種應用場景在不同階段的數據計算要求。
在大數據時代,數據的時效性日益突出,數據的流式特征更加明顯,越來越多的應用場景需要部署在流式計算平臺中。大數據流式計算作為大數據計算的一種形態,其重要性也在不斷提升。大數據時代的流式計算呈現出了鮮明的高帶寬、低時延的應用需求,傳統的流式計算平臺的構建往往是以數據庫為基礎,且數據規模較小,數據對象較單一,無法滿足大數據流式計算需求。如何構建低時延、高帶寬、持續可靠、長期運行的大數據流式計算系統是當前亟待解決的問題。本文針對大數據環境中,流式計算應用所呈現出的諸多鮮明特征進行了系統化的分析,并從系統架構的角度,給出了大數據流式計算系統構建的原則性策略。結合當前比較典型的流式計算平臺,重點研究了當前大數據流式計算在在線環境下的資源調度和節點依賴環境下的容錯策略等方面的技術挑戰。
2 流式應用分析
大數據流式計算有著悠久的應用歷史,早在20世紀80年代就有部署和應用,在今天的大數據時代,其應用的領域和范圍在不斷地擴大,也呈現出了諸多新的特征和要求[6~9]。本節將從大數據流式計算的典型應用場景出發,系統地分析大數據環境中流式應用所呈現出來的諸多鮮明特征,并從系統架構的角度,給出大數據流式計算系統建設的原則性策略。
2.1 應用及特征
口口大數據流式計算可以廣泛應用于金融銀行、互聯網、物聯網等諸多領域,如股市實時分析、插入式廣告投放、交通流量實時預警等場景,主要是為了滿足該場景下的實時應用需求。數據往往以數據流的形式持續到達數據計算系統,計算功能的實現是通過有向任務圖的形式進行描述,數據流在有向任務圖中流過后,會實時產生相應的計算結果。整個數據流的處理過程往往是在毫秒級的時間內完成的。
口口通常情況下,大數據流式計算場景具有以下鮮明特征。
口口●在流式計算環境中,數據是以元組為單位,以連續數據流的形態,持續地到達大數據流式計算平臺。數據并不是一次全部可用,不能夠一次得到全量數據,只能在不同的時間點,以增量的方式,逐步得到相應數據。
口口●數據源往往是多個,在進行數據流重放的過程中,數據流中各個元組間的相對順序是不能控制的。也就是說,在數據流重放過程中,得到完全相同的數據流(相同的數據元組和相同的元組順序)是很困難的,甚至是不可能的。
口口●數據流的流速是高速的,且隨著時間在不斷動態變化。這種變化主要體現在兩個方面,一個方面是數據流流速大小在不同時間點的變化,這就需要系統可以彈性、動態地適應數據流的變化,實現系統中資源、能耗的高效利用;另一方面是數據流中各個元組內容(語義)在不同時間點的變化,即概念漂移,這就需要處理數據流的有向任務圖可以及時識別、動態更新和有效適應這種語義層面上的變化。
口口●實時分析和處理數據流是至關重要的,在數據流中,其生命周期的時效性往往很短,數據的時間價值也更加重要。所有數據流到來后,均需要實時處理,并實時產生相應結果,進行反饋,所有的數據元組也僅會被處理一次。雖然部分數據可能以批量的形式被存儲下來,但也只是為了滿足后續其他場景下的應用需求。
口口●數據流是無窮無盡的,只要有數據源在不斷產生數據,數據流就會持續不斷地到來。這也就需要流式計算系統永遠在線運行,時刻準備接收和處理到來的數據流。在線運行是流式計算系統的一個常態,一旦系統上線后,所有對該系統的調整和優化也將在在線環境中開展和完成。
口口●多個不同應用會通過各自的有向任務圖進行表示,并將被部署在一個大數據計算平臺中,如圖1所示,這就需要整個計算平臺可以有效地為各個有向任務圖分配合理資源,并保證滿足用戶服務級目標。同時各個資源間需要公平地競爭資源、合理地共享資源,特別是要滿足不同時間點各應用間系統資源的公平使用。
圖 1 大數據流式應用部署
2.2 流式計算系統構建原則
在大數據流式計算系統架構方面,由于大數據流式計算、批量計算、圖計算等模式間存在顯著不同,在一個計算平臺中,試圖將大數據批量計算、流式計算、圖計算等多種不同計算形態集成起來,往往是很困難的。其中,也有些平臺試圖做這樣的工作,如在大數據批量計算平臺Spark中,加入了流式計算功能,形成了Spark Streaming子系統,其實現的關鍵是將Spark中任務處理步長盡可能地縮短,從而降低數據處理的時延。但Spark Streaming也只能達到亞秒級的用戶響應,并不能真正滿足流式計算需要。此外, YARN等平臺也試圖對不同的計算形態進行集成,由于這些計算形態差異很大,應用場景截然不同,需要提供的體系結構、資源管理等各方面也不完全一樣,所以必須針對具體的計算場景,開展針對性的計算平臺的研究,才能更好地適應實際需要。
大數據流式計算系統的體系結構需要重點考慮以下因素。
(1)分布式體系結構
集中式體系結構對于大數據流式計算系統往往很難滿足其可擴展性的需要,人們往往會優先采用分布式體系結構來構建流式計算系統,這樣可以可擴展地適應數據流壓力的動態變化,靈活地進行系統的伸展和收縮,實現對相關資源和任務在在線環境中的調整和優化。
(2)內存計算是首要考慮因素
當一個有向任務圖被提交到系統中后,該有向任務圖將常駐內存,并將永遠在線運行(除非被顯示終止或系統崩潰),所有數據流到達系統后,也將直接在內存中完成相關計算,并實時產生和輸出計算結果。部分數據可能會被選擇性地存儲在外存介質上,顯然內存成為這個數據計算過程中的主要場所和重要位置。因此,在系統結構的設計過程中,需要合理、高效地利用內存資源。
(3)時效性是系統設計的首要目標
大數據流式計算環境中,數據的時間價值是首要的,當數據流到來后,必須在毫秒級的時間內完成對數據流中相應知識的發現,這個過程中時效性是首要的,準確性是次要的,部分、及時、相對準確的計算結果是好于全面、延遲、精確的計算結果的。根據具體場景的需要,數據流可以被選擇性地存儲起來,后續可以進行批量計算,更為準確、全面地發現其中的知識,實現大數據流式計算和批量計算間的優勢互補。
(4)在線運行環境將是系統的常態
所有關于系統的調整和優化將會在在線環境中開展,這種情況下,需要將系統的優化性能、穩定性、波動等因素綜合考慮進來,最優的方案在在線環境中進行調整未必是最合理的,當前這一時刻對于系統而言,可能是最優的,但是要達到這種最優狀態需要調整過多的系統資源,可能會對系統的穩定性產生影響。而且,在下一時刻,數據流壓力發生變化后,這種當前的最優方案可能又變為非最優狀態了。因此,對系統性能有所改善的方案可能會達到更佳效果,要綜合權衡系統性能、穩定性、動態在線變化等多個方面的因素。
3 技術挑戰
大數據流式計算系統存在諸多挑戰[9~13],如資源調度、系統容錯、動態時間窗口、高效索引策略等諸多方面。本節將從大數據流式計算系統架構的角度,針對當前大數據流式計算環境中存在的兩個方面的典型問題進行系統化的分析,即在線環境下的資源調度問題和節點依賴環境下的容錯策略問題,并原則性地分別給出了兩類問題的解決策略。
3.1 在線環境下的資源調度
資源調度是分布式系統中資源管理的關鍵與核心,也是NP難問題,制約著整個系統的高效運行。在大數據流式計算環境中,在線環境中的資源調度又更加困難,任何一個資源或要素的調整,都會對運行著的系統產生實時影響,也會對整個系統的穩定性帶來一定程度上的波動。Storm系統作為業界最具影響力的大數據流式計算系統,目前其所選用的資源調度策略為輪詢方式,只是簡單地將有向任務圖中各個節點按照一定的拓撲序列放置到各個物理機器上去,這個調度策略沒有考慮物理機器的性能以及物理機器間的拓撲結構,沒有考慮有向任務圖中各個節點的計算壓力和節點間的通信壓力。在在線調整過程中,這個調度策略沒有考慮當前各個節點的資源分配情況,也就是說在實現對新的環境優化和適應的過程中,沒有考慮盡可能地減少系統中節點的變動,提升系統的穩定性。這些因素的缺失,對于Storm系統的性能必然帶來一定程度上的損傷。
在資源調度方面,針對大數據流式計算環境中,應用均是通過有向任務圖進行描述的客觀事實,需要構建一個彈性、自適應的在線調度策略,滿足大數據流式應用一旦開啟將永遠運行下去的在線場景下的資源調度需要,即一方面要有效地適應數據流、資源等各方面的動態變化,另一方面也要保持系統的穩定性,避免因調整導致的系統大幅度波動,影響系統的穩定性。具體包括以下內容:在有向任務圖節點計算量和節點通信量的量化方面,節點處理時延影響因素有邏輯節點的功能、數據處理功能、數據流流速大小等;節點間傳輸時延影響因素有節點間傳輸數據流大小、網絡帶寬,物理距離等。整個有向任務圖在任何一個時刻都會存在一條關鍵路徑,其時延也是由該圖的當前關鍵路徑決定的,關鍵路徑將是整個有向任務圖的核心和瓶頸,明確了當前的關鍵路徑,就可以找到改善系統性能的要害。同時隨著不同數據流壓力的變化,各個節點的計算時延和傳輸時延也會發生變化,這樣不同數據流壓力情況下的有向任務圖的關鍵路徑也會動態變化。在有向任務圖到系統資源的放置策略以及在線調整方面,對于一個經過優化和調整后的任務拓撲結構的實例圖,隨著數據流和系統環境的在線和實時變化,以關鍵路徑為核心,動態地調整任務拓撲圖中各節點實例在各臺物理機器間的分配策略(如圖2所示),可以實現對系統響應時間的顯著改善。同時,當數據流壓力發生變化后,只需要調整關鍵路徑上的部分節點,就可以實現對系統性能的改善,這樣就可以在盡可能地保持系統穩定性的前提下,最大程度地改善系統性能,在動態調整和優化過程中,實現對歷史成量信息的最大利用。在多個有向任務圖分別被提交到系統中后,需要保證在不同時間點提交的各個有向任務圖可以公平地使用系統資源,這就需要明確各物理機器的計算壓力和拓撲結構、各個有向任務圖中節點的計算壓力和傳輸壓力,并通過一定的分配策略,實現資源的合理利用以及各有向任務圖間的資源公平占有和動態調整。
圖 2 資源分配和動態調整
3.2 節點依賴環境下的容錯策略
系統容錯是分布式系統必不可少的一部分,特別是對于大數據流式計算系統而言,容錯的價值顯得尤為突出。在大數據流式計算環境中,數據流到來后往往只有一次處理的機會,重放數據流是很困難的,甚至是不可能的。這僅有的一次機會給容錯帶來了更高的挑戰。另外,系統的實時性是大數據流式計算系統的首要目標,這也為容錯策略提出了更高的要求,當高效的容錯策略需要過長的時延時,會導致容錯變得沒有意義。Storm系統通過系統級組件Acker實現對數據流的全局計算路徑的跟蹤,并保證該數據流被完全執行。錯誤的檢查是通過超時機制實現的,默認的超時時間為30 s。很顯然,這么長的時延在流式應用中顯得毫無意義了。
在系統容錯方面,針對大數據流式計算環境中數據到來后立即進行處理,重現數據往往很困難的客觀事實,需要構建一個輕量級、快速的系統容錯策略,滿足大數據流式計算環境中對系統容錯的要求。具體研究內容包括:研究在不同應用場景下的系統容錯精度方案,并對具體案例進行分析方面,主要是考慮用戶的具體應用場景對容錯精度的需求,進行相應容錯精度方案的設計;在建立有向任務圖故障節點最小依賴集合的容錯策略方面,當各個節點都進行了中間狀態存儲、檢查點等信息的存儲后,在具體的故障恢復過程中,可以選用更加高效的故障節點、最小依賴集合的容錯策略,將容錯的范圍縮小到最小的節點集合中,如圖3所示。根據有向任務圖中各個節點及節點間上下游的關系以及每個節點所在的物理機器性能特征等多方面因素,為不同的節點設置有區分的、有差異的檢查點頻率以及不同的全量和增量式容錯策略。
圖 3 故障節點最小依賴集合的容錯策略
4 結束語
在大數據時代,隨著越來越多的應用場景對時效性的要求不斷增強,大數據流式計算作為大數據計算的一種形態,其重要性也在不斷增強。本文針對大數據環境中流式計算應用所呈現出的諸多鮮明特征進行了系統化的分析,并從系統架構的角度,給出了大數據流式計算系統構建的原則性策略。結合當前比較典型的流式計算平臺,重點研究了當前大數據流式計算在在線環境下的資源調度和節點依賴環境下的容錯策略等方面的技術挑戰。在未來的工作中,將結合應用場景的需求,開展系統架構的優化,改善整個系統的可擴展性、穩定性等多方面的特征。同時,針對應用的要求,開展上層應用同系統架構、數據流之間的動態、彈性自適應性的優化。
參考文獻
[1] Assun??o M D, Calheiros R N, Bianchi S, et al.Big data computing and clouds: trends and future directions. Journal of Parallel and Distributed Computing, 2015(79~80): 3~15
[2] Chen C L P, Zhang C Y. Data-intensive applications, challenges, techniques and technologies: a survey on big data.Information Sciences, 2014, 275(11): 314~347
[3] Kambatla K, Kollias G, Kumar V, et al. Trends in big data analytics. Journal of Parallel and Distributed Computing, 2014, 74(7):2561~2573
[4] 李學龍, 龔海剛. 大數據系統綜述. 中國科學: 信息科學, 2015, 45(1): 1~44
Li X L, Gong H G. A survey on big data systems. Science China: Information Sciences, 2015, 45(1): 1~44
[5] 孟小峰, 慈祥. 大數據管理: 概念、技術與挑戰. 計算機研究與發展, 2013, 50(1), 146~169
Meng X F, Ci X. Big data management: concepts,techniques and challenges. Journal of Computer Research and Development, 2013,50(1): 146~169
[6] Dehne F, Kong Q, Rau-Chaplin A, et al. Scalablereal-time OLAP on cloud architectures. Journal of Parallel and DistributedComputing, 2015(79~80): 1920~1948
[7] Zhang H, Chen G, Ooi B C, et al. In-memory big data management and processing: a survey. IEEE Transactions on Knowledge and Data Engineering, 2015, 27(7): 1920~1948
[8] Zaharia M, Das T, Li H Y, et al. Discretized streams: fault-tolerant streaming computation at scale. Proceedings of the 24th ACM Symposium on Operating Systems Principles, California, USA, 2013: 423~438
[9] Lv Y S, Duan Y J, Kang W W, et al. Traffic flow prediction with big data: a deep learning approach. IEEE Transactions on Intelligent Transportation Systems, 2015, 16(2): 865~873
[10] Agerri R, Artola X, Beloki Z, et al. Big data for natural language processing: a streaming approach. Knowledge-Based Systems,2015(79): 36~42
[11] Sfrent A, Pop F. Asymptotic scheduling for manytask computing in big data platforms. Information Sciences, 2015(319): 71~91
[12] Yang F, Qian Z P, Chen X W, et al. Sonora: aplatform for continuous mobile-cloud computing.http://research.microsoft.com/apps/pubs/ default.aspx?id=161446, 2012
[13] Andreolini M, Colajanni M, Pietri M, et al.Adaptive, scalable and reliable monitoring of big data on clouds. Journal of Parallel and Distributed Computing, 2015(79~80): 67~79
總結
以上是生活随笔為你收集整理的《大数据》2015年第3期“研究”——大数据流式计算:应用特征和技术挑战的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ASP.Net全局变量的设置和读取方法
- 下一篇: visual studio 2008快捷