StreamingSystem (Google 流式團隊著)-c2.The 4 W-9
Chapter 2. The What, Where, When, and How of Data Processing-1
其他章節的內容可以點擊作者頭像在主頁列表找到
在第一章中,我們關注3個主要的事情,術語;批量和流式的比較以及定義;以及數據處理的模式(data Processing patterns);
本章我們將更加深入的介紹(data Processing patterns),在本章節將介紹主要的概念去構建一個針對無序數據處理的數據引擎,並且將介紹一系列的的經典的批量數據處理中並不存在的工具。
為了更好的介紹本文的一些概念,我們將使用Apache Beam的代碼來進行介紹。Apache Beam是一個針對流式和批量統一的編程模型,並且針對很多編程語言有對應的SDK。利用Apache Beam寫的數據流可以很好的運行在其支持的引擎上(Apache Apex, Apache Flink, Apache Spark, Cloud Dataflow, etc.)
Roadmap
為了更好的理解本章的內容,我們將列舉5個重要的概念,其中兩個概念已經在第一部分有所介紹。
在第一章首先列舉了Processing time和event time的區別。這引出一個重要的概念,如果你關心正確性和事件實際發生的上下文,應當使用eventtime來做分析。
後續在第一章又介紹了窗口的狠毒哦概念,包括固定窗口,滑動窗口,以及session 窗口。
除了上述的兩個概念之外,我們將繼續介紹其餘5個概念。
Trigger(觸發器)
觸發器是一種外部信號機制,一旦滿足就需要將窗口內的數據進行下一步處理。觸發器提供了靈活的可選擇的的數據後續處理機制。從某種意義上來說,觸發器是一種控制機制,控制結果的產出或者後續加工。(解釋一下,觸發器其實就是窗口開始計算的時機,比如說,以小時級別固定窗口計算為例,每個整點就屬於一個觸發器,一旦到整點就可以把數據進行聚集,刷出去或者交給下游處理)
觸發器可以使觀察的數據窗口中數據,進行多次數據。通過這種方式,可以隨著時間變化,無限逼近精確的結果,方式是在數據到達時提供推測性結果,臨時的結果,並上遊數據隨時間推移或遲到的數據到達後,更新原有的結果,從而保證結果相對於更早而言,更加準確。
Watermarks
水印是關於事件時間的輸入完整性的概念。 時間值為X的水印說明:"已觀察到事件時間小於X的所有輸入數據。" 這樣,當觀察無邊界的數據源的時候水印可作為進度的度量標準。 在本章中,我們討論了水印的基礎知識,然後在第3章中進一步探討了水印。(解釋一下,水印在這裡是個概念或者說定義,並不是具體實現,後續會介紹具體的實現,但是做過系統應該知道,完全符合定義的水印是很難做出來的,後面介紹的很多方法都是啟發式規則,所謂的啟發式規則就是理論上大概率是對的,但是不保證100%)
Accumulation
累積模式特指同一個窗口中的多次結果,這些結果可能是完全沒有關聯的,代表著隨著時間變化的增量結果甚至他們之間還有一些交際。不同的累積模型適用不同的語義,並且執行代價也有所不同,因此在採用的時候,需要找到合適的方法。
閱讀更多 北京IT民工 的文章