Flink菜鸟教程(二)——时间概念
?歡迎關(guān)注公眾號(hào)——《數(shù)據(jù)三分鐘》
一線大廠的師兄師姐結(jié)合自己的工作實(shí)踐,將數(shù)據(jù)知識(shí)淺顯道來(lái),每天三分鐘,助你成為數(shù)據(jù)達(dá)人。還有面試指導(dǎo)和內(nèi)推機(jī)會(huì)。
? ? ? ?上一節(jié)說(shuō)到,實(shí)時(shí)計(jì)算中的數(shù)據(jù)可以看成無(wú)界流(unbounded stream),沒(méi)有確切的結(jié)束時(shí)間,就像水流一樣——逝者如斯夫,不舍晝夜。這也是實(shí)時(shí)數(shù)據(jù)區(qū)別于離線數(shù)據(jù)的地方,離線數(shù)據(jù)是有界的,有確定的開(kāi)始時(shí)間和結(jié)束時(shí)間,因此所有的離線計(jì)算都是基于確定的有限數(shù)據(jù)展開(kāi)的。
一、實(shí)時(shí)計(jì)算中時(shí)間的重要性
? ? ? ?離線計(jì)算模式下,計(jì)算引擎攝入全量的需要計(jì)算的有界數(shù)據(jù),按照確定的維度進(jìn)行聚合,所有的計(jì)算過(guò)程都是確定的。但是在實(shí)時(shí)計(jì)算中卻截然不同,首先實(shí)時(shí)計(jì)算是持續(xù)不斷進(jìn)行的,由于網(wǎng)絡(luò)波動(dòng)等情況不可避免,數(shù)據(jù)最終到達(dá)算子的時(shí)間和數(shù)據(jù)真實(shí)產(chǎn)生的時(shí)間并不一致,那么flink引擎以什么為計(jì)算的基準(zhǔn)呢?又怎么去觸發(fā)計(jì)算呢?這里就不得不提到窗口機(jī)制了,它是經(jīng)典的無(wú)界數(shù)據(jù)的分組計(jì)算方式。流式計(jì)算中的數(shù)據(jù)是一條一條源源不斷產(chǎn)生的記錄,每一條記錄都會(huì)有產(chǎn)生的時(shí)間、進(jìn)入Flink引擎的時(shí)間和到達(dá)算子的時(shí)間,這些時(shí)間分別對(duì)應(yīng)Event time、Ingestion time、Processing time,Flink就是按照這些時(shí)間對(duì)數(shù)據(jù)進(jìn)行分組和計(jì)算的。
二、事件時(shí)間(Event time)
? ? ? ?事件時(shí)間是記錄數(shù)據(jù)真實(shí)產(chǎn)生時(shí)候的時(shí)間,它是每一條數(shù)據(jù)在物理世界中的先后順序,也是計(jì)算中首選的時(shí)間基準(zhǔn)!但是選用事件時(shí)間也不得不面臨一些問(wèn)題:首先,事件時(shí)間是數(shù)據(jù)產(chǎn)生時(shí)候的時(shí)間,并非被Flink計(jì)算時(shí)候的時(shí)間,也就是說(shuō),數(shù)據(jù)在被計(jì)算的時(shí)候一定會(huì)不可避免地發(fā)生錯(cuò)亂,我們?nèi)绾渭幢S袛?shù)據(jù)最真實(shí)的產(chǎn)生時(shí)間,有能夠兼容數(shù)據(jù)在傳輸過(guò)程中的亂序問(wèn)題,這就可以采用watermark機(jī)制(后續(xù)文章會(huì)詳細(xì)寫(xiě)到)。
三、處理時(shí)間(Processing time)
? ? ? ?處理時(shí)間是數(shù)據(jù)進(jìn)入Flink算子的時(shí)間,也就是計(jì)算節(jié)點(diǎn)機(jī)器的本地時(shí)間,這種時(shí)間可以帶來(lái)最好的性能和最低的延遲。但是,這樣的計(jì)算也最不具準(zhǔn)確性,當(dāng)我們回跑數(shù)據(jù)時(shí),難以保證數(shù)據(jù)的一致性。
四、攝入時(shí)間(Ingestion time)
? ? ? ?攝入時(shí)間是數(shù)據(jù)進(jìn)入Flink的時(shí)間,數(shù)據(jù)進(jìn)入的時(shí)候會(huì)打上系統(tǒng)時(shí)間戳。攝入時(shí)間從發(fā)生的時(shí)間上看,處于事件時(shí)間和處理時(shí)間之間,它的實(shí)現(xiàn)成本也處在事件時(shí)間和處理時(shí)間之間。攝入時(shí)間可以提供比處理時(shí)間更高的確定性,因?yàn)閿?shù)據(jù)進(jìn)入Flink后它的時(shí)間就確定好了,在后續(xù)的計(jì)算中,可以有效地應(yīng)對(duì)由于多并發(fā)或數(shù)據(jù)在節(jié)點(diǎn)間shuffle帶來(lái)的亂序問(wèn)題。
? ? ? ?但是在實(shí)際應(yīng)用中,事件時(shí)間和處理時(shí)間用得最多,且Flink SQL目前僅支持事件時(shí)間和處理時(shí)間。
總結(jié)
以上是生活随笔為你收集整理的Flink菜鸟教程(二)——时间概念的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: win7打不开桌面计算机,win7电脑中
- 下一篇: DisplayTag详解