flink是什么
????????是一個框架和分布式處理引擎,在無邊界和有邊界數(shù)據(jù)流上紀(jì)念性有狀態(tài)的計算
主要特性
? ? 1.批流統(tǒng)一
?? ??? ??? ?批處理:數(shù)據(jù)
全部訪問完成后進行操作
?? ??? ??? ??? ??? ??? ??有界、持久、大量,適合訪問全套記錄才能完成的工作,一般用于
離線統(tǒng)計
?? ??? ??? ?流處理:
來一條數(shù)據(jù)處理一條數(shù)據(jù)
?? ??? ??? ??? ??? ??? ??無界、實時,不需要操作整個系統(tǒng)
?? ??? ?? ? 無界流(Datastream):只有開始,沒有結(jié)束,要以特定的順序獲取,并且獲取后立即處理
?? ??? ?? ? 有界流(DataSet):開始結(jié)束都有,數(shù)據(jù)全部獲取后執(zhí)行,
可以被排序
?? ??2.性能卓越
?? ??? ?? ? 高吞吐:同時處理大量數(shù)據(jù)
?? ??? ?? ? ? 低延時:快速返回結(jié)果
? ? 3.規(guī)模計算
?? ??? ?? ? 支持超大狀態(tài)與增量檢查點機制
?? ??? ?? ? ? 狀態(tài):計算過程中需要存儲的數(shù)據(jù)
?? ??? ?? ? ? 檢查機制:備份
? ? 4.生態(tài)兼容
????????????????支持與yarn集成
????????????????支持與kubernetes集成
????????????????支持單機模式運行
? ? 5.高容錯
????????????????故障自動重試
?? ??? ??? ??? ?? ? ? ? 一致性檢查點
?? ??? ??? ??? ?? ? ? ? 保證故障場景下精確一次的狀態(tài)一致性
并行度
?? ??? ??? ?? ? 一個算子的子任務(wù)的個數(shù)被稱為其并行度
?? ??? ??? ?? ? 包含并行任務(wù)的數(shù)據(jù)流,就是并行數(shù)據(jù)流
?? ??? ??? ?? ??一個流程序的并行度,可以認(rèn)為就是其所有算子中最大的并行度
設(shè)置并行度
?? ??stream.map(word -> Tuple2.of(word, 1L)).
setParallelism(2)
? ? ?或
? ? ?
env.setParallelism(2)
窗口分類
?? ?? ? ?1)按照驅(qū)動分類
?? ??? ??? ??? ??? ?(1)時間窗口:時間定義起始
?? ??? ??? ??? ??? ?(2)計數(shù)窗口:達(dá)到指定個數(shù)
?? ??? ??? ?2)按照窗口分配數(shù)據(jù)的規(guī)則分類
?? ??? ??? ??? ??? ?(1)滾動窗口
?? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ?窗口內(nèi)大小相同,不會有重疊,首尾相連 如:123,456,789
?? ??? ??? ??? ??? ?(2)滑動窗口
?? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ?窗口內(nèi)大小相同,有重疊,首尾不相連 如:123,234,345
?? ??? ??? ??? ??? ?(3)會話窗口:基于時間定義
?? ??? ??? ??? ??? ??? ??? ??? ??? ?? ? ? ? 會話超時時間,兩個會話窗口之間的最小距離,窗口長度、起始時間不確定,窗口之間無關(guān)聯(lián),不重疊
?? ??? ??? ??? ??? ?(4)全局窗口:窗口沒結(jié)束時,不會做觸發(fā)計算
窗口API
?? ??? ??? ?1)按鍵分區(qū)(Keyed Windows)
????????????????????????stream.keyBy(...).window(...)
?? ??? ??? ?2)非按鍵分區(qū)(Non-Keyed Windows)
????????????????????????
stream.windowAll(...)
代碼中窗口API的調(diào)用
?? ??? ??? ?窗口操作主要有兩個部分:窗口分配器(Window Assigners)和窗口函數(shù)(Window Functions)。
????????????????stream.keyBy(<key selector>)
???????????????????????????????.window(<window assigner>)
???????????????????????????????.aggregate(<window function>)文章來源地址http://www.zghlxwxcb.cn/news/detail-824028.html
時間窗口
????????????????時間窗口的計算頻次
????????????????時間窗口的大小
????????????????時間窗口內(nèi)的數(shù)據(jù)的處理邏輯
時間窗口計算模型的處理機制
輸入數(shù)據(jù)流----------->時間窗口計算----------->輸出數(shù)據(jù)流
時間語義
????????事件時間(Event Time):數(shù)據(jù)產(chǎn)生的時間
????????處理時間(Processing Time):數(shù)據(jù)真正被處理的時間
????????進入Flink的時間:(Ingestion Time):每個事件將進入Flink時的時間作為時間戳
????????時間語義:
是以事件時間還是處理時間進行計算?
// TODO 1.指定窗口分配器: 指定 用 哪一種窗口 --- 時間 or 計數(shù)? 滾動、滑動、會話?
// 1.1 沒有keyby的窗口: 窗口內(nèi)的 所有數(shù)據(jù) 進入同一個 子任務(wù),并行度值只能為1
//sensorDS.windowAll();
// 1.2 有keyby的窗口()
//sensorKS.window();每個key上都定義了一組窗口,各自獨立地進行統(tǒng)計計算
//sensorKS.window();
基于時間
?? ??? ??? ??? ?
????????????????滾動窗口,窗口長度10秒
sensorKS.window(TumblingProcessingTimeWindows.of(Time.seconds(10)));
????????????????滑動窗口,長度10秒,步長2秒
sensorKS.window(SlidingProcessingTimeWindows.of(Time.seconds(10),Time.seconds(2)));
????????????????會話窗口,超過五秒沒數(shù)據(jù),自動生成新的窗口
sensorKS.window(ProcessingTimeSessionWindows.withGap(Time.seconds(5)));
基于計數(shù) 數(shù)據(jù)條數(shù)
????????????????窗口長度為5
????????????????窗口長度為5 步長2
sensorKS.countWindow(5,2);
????????????????全局窗口 計數(shù)窗口底層用這個 需自定義觸發(fā)器使用
????????????????????????sensorKS.window(GlobalWindows.create())
水位線(Watermark)(水印)
?? ??? ?衡量事件時間進展的標(biāo)記
水位線特性
?? ??? ??? ??? ?是插入到數(shù)據(jù)流中的一個
標(biāo)記,可以認(rèn)為是一個
特殊的數(shù)據(jù)
?? ??? ??? ??? ?主要內(nèi)容是一個時間戳,
表示當(dāng)前事件時間的進展
?? ??? ??? ???
?
基于數(shù)據(jù)的時間戳生成的
?? ??? ??? ??? ?必須
單調(diào)遞增
?? ??? ??? ??? ?設(shè)置
延遲,保證正確
處理亂序數(shù)據(jù)
一個水位線watermark(t) ,表示當(dāng)前流中事件時間已達(dá)到時間戳,表示t之前的所有數(shù)據(jù)已到齊,不會有t1<=t
?? ??? ???有序流中的水位線:按生成的先后順序進入流中,每條數(shù)據(jù)產(chǎn)生一個水位線
?? ??? ??? ??? ??? ??? ??? ??? ??? ?? ? 數(shù)據(jù)量大時,每隔一段時間生成一個水位線
? ?? ? ? ?亂序流中的水位線:因網(wǎng)絡(luò)傳輸延遲,使順序改變
?? ??? ??? ??? ??? ??? ??? ??? ??? ?? ? 判斷是否比前面的小,小則進入,否則進入新的
?? ?? ? ??
文章來源:http://www.zghlxwxcb.cn/news/detail-824028.html
到了這里,關(guān)于Flink知識點概述的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!
本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!