Streaming System 翻譯中文版-Chapter 1. Streaming 101(4)

Streaming System 翻譯中文版-Chapter 1. Streaming 101(4)


Data Processing Patterns

目前已經瞭解了足夠的背景知識,我們將開始真正的研究有邊界和無邊界數據處理的核心問題(我們將微批量和流式混用,在接下來的研究中,這兩個區分並不大)

Bounded Data(有邊界數據)

處理有邊界數據比較直觀,大家也比較熟悉,如圖1-2,從左邊的雜亂數據,經過一些數據處理殷勤比如MapReduce,會產出右側的結果化的,並且具有更大潛在價值的數據

Streaming System 翻譯中文版-Chapter 1. Streaming 101(4)

雖然可以做出各種的數據操作,產生更加有價值的數據,但是相對於無邊數據而言,有邊界數據的處理模型還是屬於簡單的。後續將介紹針對無邊界數據的處理,開始的時候會用批量的方式處理流式,最終會展現專門針對流式系統的處理方式。

Unbounded Data: Batch

雖然批量處理引起並不是為處理無邊界數據設計的,但是自從批量處理引擎誕生就開始承擔處理無邊界數據,處理方式將無邊的數據,切斷成一段段的有邊界數據,從而適配批量處理器。

Fixed Windows 固定窗口

最普遍處理無邊界數據的方法是在一個固定大小的窗口上反覆運行批量處理器。尤其是對於log類的數據源,通過這種方式可以把對應的數據寫到對應時間片下面。(解釋下:其實這個在實際處理中也很多使用,比如flume在將數據落地到HDFS上的時候,很多采用這個方法,把一個小時的數據落到一個小時的分區當中)

Streaming System 翻譯中文版-Chapter 1. Streaming 101(4)

但是這樣的系統依舊存在完整性的問題(解釋一下,作者整體思路是拋出一個場景,然後說出現在普遍粗糙處理方法存在的問題,然後再給出來答案)比如:有些時間由於網絡原因延遲:或者如果需要將完整的事件挪到統一的位置後才能進行處理;或者來自移動設備(這一個暗含的意思是:假如來自移動設備,可能移動設備有弱網,斷網,關機等問題,更可能出現延遲數據),這意味著需要採取一些措施來處理這些延遲的問題。處理方式:延遲處理直到所有的數據都到達,或者重新處理整個窗口的數據一旦延遲數據到達。(高亮一下,這一個思想在當時還是很超前的,但是其實是樸素的,不過給了一些新的處理無邊界數據的思路)

Sessions

會話窗口是一種更加複雜的窗口來切分無限的數據流,到有限的數據流(解釋一下,會話窗口也經常用,比如在數據分析的漏洞分析中,需要跟進用戶從打開APP->註冊->註冊成功->註冊成功,這算一個session,很難用固定窗口來實現,應該用戶使用的時間長度不同,步數不一樣,有的用戶會走完,有的走到一半就走了,所以才有會話窗口處理更加不容易,如果強硬的用時間固定窗口拆分,會出現誇時間邊界的會話被打斷,但是實際使用中,很多時候打斷就打斷了如下圖1-4,大家還是習慣直接用時間切分,)

Streaming System 翻譯中文版-Chapter 1. Streaming 101(4)

為了避免被切斷可以增加batch的大小,但是會增加延遲,另外增加更多的複雜邏輯來處理,但是會導致系統更加複雜。

因此利用批量處理引擎來處理會話窗口不太理想,需要更好的流式系統來處理,後續會進行詳細介紹。


分享到:


相關文章: