流式处理和批处理的区别
流式處理(Stream Processing) 是針對 批處理(Batch Processing)來講的,即它們是兩種截然不同的數據處理模式,具有不同的特點,適用于不同的應用場合。不能簡單地認為其中一種數據處理模式優于另一種數據處理模式。
對于批處理來講,首先數據被不斷地采集,保存到數據庫中,然后進行分析處理(包括SQL查詢)。批處理適用于對大量數據(High Volume)進行處理的場合。人們需要等到整個分析處理任務完成,才能獲得最終結果。由于需要處理的數據集大小以及計算機系統的計算能力的差異,整個過程有時需要耗費相當長的時間,即獲得最終分析處理結果的延遲較大。批處理是最通用的數據處理模式。傳統的關系數據庫系統、Hadoop以及Spark大數據處理平臺等,都采用了這樣的數據處理模式,或者以該處理模式為主。由于需要完整地保存整個數據集,并且在上面進行分析處理,比起流式數據處理系統,人們需要投入更多的硬件資源。
批處理系統可以存取已經入庫的所有數據,人們可以對數據進行復雜深入的分析,分析處理的延遲以分鐘或者小時計。批處理作業(Job)一旦提交,則一直運行,直到獲得最終結果或者失敗退出,無需用戶人工干預。這些作業在整個數據集或者某個子集上執行一系列的分析,產生分析結果。在性能方面,批處理系統主要考慮系統的吞吐能力,而不是單個分析處理任務的處理延遲(Latency)。
在流式數據處理模式里,數據持續到達,系統及時處理新到達的數據,并不斷產生輸出。處理過的數據一般丟棄掉,當然也可以保存起來。流式數據處理模式強調數據處理的速度(Velocity)。部分原因是數據產生的速度很快,需要及時進行處理。由于流式數據處理系統能夠對新到達的數據進行及時的處理,所以它能夠給決策者提供最新的事物發展變化的趨勢,以便對突發事件進行及時響應,調整應對措施。
實時(Real-time)數據處理系統和流式數據處理系統:
對于批量數據處理系統,當分析處理的響應速度快到一定的程度,這樣的系統可以稱為實時系統(響應時間達到毫秒級)或者交互式系統(響應時間達到秒級或者亞秒級)。
流式數據處理模式對每個新到達的數據元素(Data Element)或者一個比較小的時間窗口內的數據元素進行計算。數據上的計算或者分析處理相對來講是比較簡單的,不是復雜的分析處理。完成分析處理的時間,需要達到實時或者接近實時的響應時間要求。不同數據元素上的分析處理,相互之間是獨立的。流式數據處理系統要盡快完成數據的處理。上游數據源無須等待下游流式數據處理系統處理完畢。
即席查詢(Ad-Hoc):
即席查詢是用戶根據自己的需求,靈活的選擇查詢條件,系統能夠根據用戶的選擇生成相應的統計報表。即席查詢與普通應用查詢最大的不同是普通的應用查詢是定制開發的,而即席查詢是由用戶自定義查詢條件的。
例如: 在一個電子商務網站,把每月(周、天)所有的交易記錄保存起來,然后在固定的時間點,比如月末(周末、日終)進行一些SQL查詢分析,這種處理模式就是批處理模式。當然,在系統不斷累積交易記錄的過程中,比如在某天的中午,管理者想看一下某個商品最近一段時間的銷售量,他臨時發起一個SQL查詢,這個查詢就稱為即席查詢。
總結
以上是生活随笔為你收集整理的流式处理和批处理的区别的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 计算机网络(十一)-数据链路层-流量控制
- 下一篇: torch.randn与torch.ra