成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Flink水位線Watermaker生產(chǎn)應(yīng)用避坑分享

IT那活兒 / 3936人閱讀
Flink水位線Watermaker生產(chǎn)應(yīng)用避坑分享
基于對(duì)處理時(shí)間的實(shí)時(shí)性要求,很多業(yè)務(wù)場景對(duì)“延遲”的忍受能力越來越低,因?yàn)槟芨皶r(shí)發(fā)現(xiàn)問題,就能及時(shí)解決問題,進(jìn)而能提升支撐保證和體驗(yàn)。在大數(shù)據(jù)分析領(lǐng)域,數(shù)據(jù)分析地越及時(shí),價(jià)值越高,尤其是在推薦、風(fēng)控等場景中,對(duì)實(shí)時(shí)性的要求更為苛刻。而流計(jì)算天然支持對(duì)事件發(fā)生的先后順序、時(shí)間關(guān)系方面的分析,這也是flink在實(shí)時(shí)場景及大數(shù)據(jù)中被越來越多使用的原因。今天就和大家分享一下Flink的時(shí)間機(jī)制介紹,及展開一下watermark。


Flink三種時(shí)間機(jī)制



  • Processing Time: 機(jī)器或者系統(tǒng)的時(shí)間,可理解為真實(shí)世界的時(shí)間。使用該時(shí)間模式有最好的性能和最低的延遲。

  • Event time: 數(shù)據(jù)上自帶的時(shí)間,可理解為數(shù)據(jù)世界的時(shí)間。實(shí)際場景中應(yīng)用較多,由于數(shù)據(jù)在傳輸過程有網(wǎng)絡(luò)、I/O以及消費(fèi)等因素,往往不能保證數(shù)據(jù)按順序到達(dá),因此導(dǎo)致了時(shí)間的亂序等問題。

  • Ingestion time: 數(shù)據(jù)進(jìn)入程序時(shí)的時(shí)間,比如12點(diǎn)的一條數(shù)據(jù)與11點(diǎn)的一條數(shù)據(jù)同時(shí)進(jìn)入程序,這兩者會(huì)被認(rèn)為是同一時(shí)間的數(shù)據(jù)。與事件時(shí)間相比,攝入時(shí)間程序不能處理任何無序事件或者延遲事件,但是程序無需指定如何產(chǎn)生水印。


最常用的兩種時(shí)間ProcessingTime和Eventtime對(duì)比:

PS:對(duì)時(shí)間的理解,時(shí)間并不一定就一定是時(shí)間,只要數(shù)據(jù)是有序遞增的,都可以理解為時(shí)間來進(jìn)行處理。



定義使用何種時(shí)間機(jī)制:




Watermaker的理解


在實(shí)際業(yè)務(wù)場景中的實(shí)時(shí)計(jì)算,往往都是使用的數(shù)據(jù)時(shí)間EventTime,這樣才能保證數(shù)據(jù)的真實(shí)性和準(zhǔn)確性。但是數(shù)據(jù)在傳輸過程有網(wǎng)絡(luò)、I/O以及消費(fèi)等因素,數(shù)據(jù)的時(shí)間可能會(huì)存在一定程度的亂序。



需要考慮對(duì)于整個(gè)序列進(jìn)行更大程度離散化。把數(shù)據(jù)按照一定的條數(shù)組成一些小批次,但這里的小批次并不是攢夠多少條就要去處理,而是為了對(duì)他們進(jìn)行時(shí)間上的劃分。


經(jīng)過這種更高層次的離散化之后,我們會(huì)發(fā)現(xiàn)最右邊方框里的時(shí)間就是一定會(huì)小于中間方框里的時(shí)間,中間框里的時(shí)間也一定會(huì)小于最左邊方框里的時(shí)間。



這個(gè)時(shí)候我們?cè)谡麄€(gè)時(shí)間序列里插入一些類似于標(biāo)志位的一些特殊的處理數(shù)據(jù),這些特殊的處理數(shù)據(jù)叫做watermark。一個(gè)watermark 本質(zhì)上就代表了這個(gè)watermark 所包含的timestamp數(shù)值,表示以后到來的數(shù)據(jù)已經(jīng)再也沒有小于或等于這個(gè)時(shí)間的了。



Watermaker的特性


  1. watermark 會(huì)以廣播的形式在算子之間進(jìn)行傳播,下游所有算子共享watermark。

  2. 如果在程序里面收到了一個(gè) Long.MAX_VALUE 這個(gè)數(shù)值的 watermark,就表示對(duì)應(yīng)的那一條流的一個(gè)部分不會(huì)再有數(shù)據(jù)發(fā)過來了,它相當(dāng)于就是一個(gè)終止的一個(gè)標(biāo)志。

  3. 對(duì)于單流而言,會(huì)選擇當(dāng)前最大的值timestamp作為watermark。對(duì)于多流而言,會(huì)選擇流中最小的watermark作為整個(gè)任務(wù)的watermark。即可看做一個(gè)由多個(gè)木塊組成的裝水的木桶,桶里面水多高取決于組成桶的那個(gè)最低的木塊。



Watermaker的使用技巧



  1. Watermaker的生成有兩類。第一類是定期生成器,默認(rèn)50ms向下游發(fā)送一次;第二類是根據(jù)一些在流處理數(shù)據(jù)流中遇到的一些特殊記錄生成的,來一條數(shù)據(jù)獲取一次,發(fā)送一次。生產(chǎn)中的使用可根據(jù)業(yè)務(wù)考慮使用何種,已達(dá)到性能和業(yè)務(wù)的平衡。


  1. 關(guān)于數(shù)據(jù)的延遲亂序,生成Watermaker時(shí)是可以直接增加一個(gè)特定延遲時(shí)間的。這樣做的好處是,在水位到達(dá)時(shí),仍然可以再等待一個(gè)延遲保證晚到的數(shù)據(jù)進(jìn)行統(tǒng)計(jì),保證數(shù)據(jù)的準(zhǔn)確性,當(dāng)然這樣也使得數(shù)據(jù)實(shí)時(shí)性延遲,是保證實(shí)時(shí)性還是準(zhǔn)確性,需要生成進(jìn)行取舍,或者兩種之間采用一個(gè)平衡值。具體的延遲時(shí)長,需要觀察實(shí)際數(shù)據(jù)的延遲等進(jìn)行判斷及定義。




Watermaker實(shí)際應(yīng)用避坑指南



一、防止數(shù)據(jù)傾斜,使用Watermaker沒有觸發(fā)數(shù)據(jù)匯總


場景:

數(shù)據(jù)源一分鐘產(chǎn)生一條數(shù)據(jù),每條數(shù)據(jù)中有9條左右的不同key的子數(shù)據(jù),程序進(jìn)行Keyby處理后,開啟一分鐘的窗口進(jìn)行匯總統(tǒng)計(jì)數(shù)量。


問題:

程序啟動(dòng)4個(gè)并行進(jìn)行處理,結(jié)果幾分鐘后都沒觸發(fā)匯總。什么原因?


原因:通過前臺(tái)對(duì)flink任務(wù)的監(jiān)控發(fā)現(xiàn),4個(gè)并行后由于數(shù)據(jù)量太少,有一個(gè)并行沒有收到數(shù)據(jù),因此沒有產(chǎn)生Watermaker,由Watermaker的特性的第三條可以理解,整個(gè)程序目前的watermarker取的是第4個(gè)并行的watermarker初始值Long.MIN_VALUE,所以導(dǎo)致整個(gè)程序沒有進(jìn)行觸發(fā)匯總。



如何解決:
  1. 不改并行的情況下,需要對(duì)程序Watermaker生成之前進(jìn)行數(shù)據(jù)負(fù)載均衡,最簡單直接的辦法是進(jìn)行一次keyby處理。

  2. 數(shù)據(jù)量較少的情況,直接改小并行度。


兩種方法的目的都是保證每個(gè)并行都能消費(fèi)到實(shí)時(shí)數(shù)據(jù),這里我們采用第一個(gè)方案進(jìn)行修改驗(yàn)證,結(jié)果如圖時(shí)間小于1593572813000的數(shù)據(jù)都會(huì)及時(shí)進(jìn)行匯總生成指標(biāo)。


實(shí)際生產(chǎn)中關(guān)于數(shù)據(jù)負(fù)載均衡的問題往往也是需要注意的,往往數(shù)據(jù)的傾斜問題,如果比較嚴(yán)重會(huì)導(dǎo)致數(shù)據(jù)計(jì)算的準(zhǔn)確性以及整個(gè)任務(wù)的性能等一系列問題,關(guān)于數(shù)據(jù)傾斜問題這里不進(jìn)行深入探討,下期有機(jī)會(huì)給大家做進(jìn)一步的分享。




二、業(yè)務(wù)鏈實(shí)時(shí)指標(biāo)計(jì)算延遲問題

場景:業(yè)務(wù)鏈實(shí)時(shí)指標(biāo)計(jì)算延遲。


原因:重復(fù)注冊(cè)Watermaker導(dǎo)致任務(wù)吞吐量變低,影響計(jì)算效率。


如何解決

業(yè)務(wù)鏈處理經(jīng)過算子處理之后m條數(shù)據(jù)會(huì)生成m*n條數(shù)據(jù),然后進(jìn)行keyby匯總。之前水位注冊(cè)在匯總數(shù)據(jù)之前,因此需要對(duì)m*n條數(shù)據(jù)都進(jìn)行水位注冊(cè),使得同一時(shí)間多次水位處理,程序效率也下來了,整個(gè)任務(wù)吞吐量變低。利用水位廣播傳遞的特點(diǎn),將水位注冊(cè)放到數(shù)據(jù)源,只需要對(duì)m條數(shù)據(jù)進(jìn)行注冊(cè),處理邏輯直接少了n倍,整個(gè)任務(wù)吞吐量也隨之上來了


建議生成Watermaker的工作越靠近DataSource越好。這樣會(huì)方便讓程序邏輯里面更多的operator去判斷某些數(shù)據(jù)是否亂序。Flink內(nèi)部提供了很好的機(jī)制去保證這些timestamp和watermark被正確地傳遞到下游的節(jié)點(diǎn)。


今天分享到此結(jié)束,后頭見。

    


文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/130211.html

相關(guān)文章

  • Apache Flink,流計(jì)算?不僅僅是流計(jì)算!

    摘要:基于流處理機(jī)制實(shí)現(xiàn)批流融合相對(duì)基于批處理機(jī)制實(shí)現(xiàn)批流融合的思想更自然,更合理,也更有優(yōu)勢(shì),因此阿里巴巴在基于支持大量核心實(shí)時(shí)計(jì)算場景的同時(shí),也在不斷改進(jìn)的架構(gòu),使其朝著真正批流融合的統(tǒng)一計(jì)算引擎方向前進(jìn)。 阿里妹導(dǎo)讀:2018年12月下旬,由阿里巴巴集團(tuán)主辦的Flink Forward China在北京國家會(huì)議中心舉行。Flink Forward是由Apache軟件基金會(huì)授權(quán)的全球范圍...

    KoreyLee 評(píng)論0 收藏0
  • Flink1.7穩(wěn)定版發(fā)布:新增功能為企業(yè)生產(chǎn)帶來哪些好處

    摘要:通過狀態(tài)演變,可以在狀態(tài)模式中添加或刪除列,以便更改應(yīng)用程序部署后應(yīng)捕獲的業(yè)務(wù)功能。本地恢復(fù)通過擴(kuò)展的調(diào)度來完成本地恢復(fù)功能,以便在恢復(fù)時(shí)考慮先前的部署位置。此功能大大提高了恢復(fù)速度。問題導(dǎo)讀1.Flink1.7開始支持Scala哪個(gè)版本?2.Flink1.7狀態(tài)演變?cè)趯?shí)際生產(chǎn)中有什么好處?3.支持SQL/Table API中的富集連接可以做那些事情?4.Flink1.7新增了哪些連接器Ap...

    Hwg 評(píng)論0 收藏0
  • Flink實(shí)戰(zhàn)(八) - Streaming Connectors 編程

    摘要:默認(rèn)情況下,當(dāng)數(shù)據(jù)元到達(dá)時(shí),分段接收器將按當(dāng)前系統(tǒng)時(shí)間拆分,并使用日期時(shí)間模式命名存儲(chǔ)區(qū)。如果需要,可以使用數(shù)據(jù)元或元組的屬性來確定目錄。這將調(diào)用傳入的數(shù)據(jù)元并將它們寫入部分文件,由換行符分隔。消費(fèi)者的消費(fèi)者被稱為或等。 1 概覽 1.1 預(yù)定義的源和接收器 Flink內(nèi)置了一些基本數(shù)據(jù)源和接收器,并且始終可用。該預(yù)定義的數(shù)據(jù)源包括文件,目錄和插socket,并從集合和迭代器攝取數(shù)據(jù)...

    beita 評(píng)論0 收藏0
  • 分布式系統(tǒng)關(guān)注點(diǎn)——想通關(guān)「限流」?只要這一篇

    摘要:之前有了解到哥的一部分讀者們沒有充分搞清楚限流和熔斷的關(guān)系。后者表示系統(tǒng)在同一時(shí)刻能處理的最大請(qǐng)求數(shù)量,比如次的并發(fā)。后續(xù)限流策略需要設(shè)定的具體標(biāo)準(zhǔn)數(shù)值就是從這些指標(biāo)中來的。限流閾值不繼續(xù)處理請(qǐng)求。 如果這是第二次看到我的文章,歡迎掃描文末二維碼訂閱我喲~本文長度為2869字,建議閱讀8分鐘。 可能你在網(wǎng)上看過不少「限流」相關(guān)的文章,但是z哥的這篇可能是最全面,最深入淺出的一篇了(容我...

    CollinPeng 評(píng)論0 收藏0
  • Flink 從0到1學(xué)習(xí)—— 分享四本 Flink 國外的書和二十多篇 Paper 論文

    摘要:另外,將機(jī)制發(fā)揚(yáng)光大,對(duì)有著非常好的支持。系統(tǒng)也注意到并討論了和的問題??偨Y(jié)本文分享了四本相關(guān)的書籍和一份領(lǐng)域相關(guān)的論文列表篇,涉及的設(shè)計(jì),實(shí)現(xiàn),故障恢復(fù),彈性擴(kuò)展等各方面。 前言 之前也分享了不少自己的文章,但是對(duì)于 Flink 來說,還是有不少新入門的朋友,這里給大家分享點(diǎn) Flink 相關(guān)的資料(國外數(shù)據(jù) pdf 和流處理相關(guān)的 Paper),期望可以幫你更好的理解 Flink。...

    jollywing 評(píng)論0 收藏0
  • 取之開源,用之開源——深度剖析阿里巴巴對(duì)Apache Flink的優(yōu)化與改進(jìn)

    摘要:基于在阿里巴巴搭建的平臺(tái)于年正式上線,并從阿里巴巴的搜索和推薦這兩大場景開始實(shí)現(xiàn)。在經(jīng)過一番調(diào)研之后,阿里巴巴實(shí)時(shí)計(jì)算認(rèn)為是一個(gè)非常適合的選擇。接下來,我們聊聊阿里巴巴在層對(duì)又大刀闊斧地進(jìn)行了哪些改進(jìn)。 Apache Flink 概述 Apache Flink(以下簡稱Flink)是誕生于歐洲的一個(gè)大數(shù)據(jù)研究項(xiàng)目,原名StratoSphere。該項(xiàng)目是柏林工業(yè)大學(xué)的一個(gè)研究性項(xiàng)目,早期...

    YJNldm 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<