《2019年使用Flink框架搭建流計算平臺.pdf》由會員分享,可在線閱讀,更多相關《2019年使用Flink框架搭建流計算平臺.pdf(79頁珍藏版)》請在三個皮匠報告上搜索。
1、如何用Flink實現計算平臺議題內容一、Flink 核心編程模型1.海量數據計算發展趨勢2.Flink 核心編程模型3.Flink vs Spark vs Beam二、海量數據計算平臺的挑戰與方案1.流式計算開發運維痛點2.搭建計算平臺的常見方案三、深入 Flink核心特性1.哪些功能是Flink的核心特性?2.Flink核心特性的最佳實踐3.深入Flink核心特性的原理和代碼四、如何用Flink搭建計算平臺1.利用Flink搭建計算平臺的關鍵特性2.使用Flink搭建計算平臺的核心代碼五、開源項目Waterdrop源碼分析1.功能分析2.流程控制代碼分析3.插件代碼分析六、Flink計算平臺
2、與業務場景結合1.實時數據倉庫2.電商大屏3.廣告點擊4.業務監控5.內容推薦一、Flink 核心編程模型一、Flink 核心編程模型Unbounded StreamBounded Stream一、Flink 核心編程模型一、Flink 核心編程模型一、Flink 核心編程模型一、Flink 核心編程模型一、Flink 核心編程模型-Submit Job1.https:/ Flink核心特性總結:1.Flink特性:功能強、有狀態、低延遲,高吞吐、ExactlyOnce2.Flink 流式計算表現驚艷主要特性:Flink DataStream:有狀態的數據處理、狀態管理和容錯(Flink Ch
3、eckpoint)Flink DataStream:Window,Watermark,異步IO、Flink 流批統一Flink Connector(分別對應 DataStream,Dataset,Table)Flink Table/SQL API,交互式SQL工作流(sql-client)?Pipeline 構建:Flink流關聯(Interval Join),緯表Join,多路輸出強大的 Flink Metrics+WebUI 體系Flink Runtime任務調度協調三、深入 Flink核心特性-Time,Window,WatermarkFlink 中有3種Time:Event-Time,
4、Processing-Time 以及 Ingestion-Time三、深入 Flink核心特性-Time,Window,WatermarkFlink 中有3種Time:Event-Time,Processing-Time 以及 Ingestion-TimeTODO:TimestampAssigner三、深入 Flink核心特性-Time,Window,Watermark在 Flink 中 Window 可以將無限流切分成有限流,是處理有限流的核心組件三、深入 Flink核心特性-Time,Window,WatermarkWindow 中數據的生命周期:三、深入 Flink核心特性-Time,W
5、indow,Watermarkwindow()指定 WindowAssigner:WindowAssigner 負責將每條輸入的數據分發到正確的 window 中(一條數據可能同時分發到多個 Window 中),Flink 提供了幾種通用的 WindowAssigner:Tumbling Window(滾動窗口)Sliding Window(滑動窗口)Session Window(會話窗口)Global Window(全局窗口)Custom Window(自定義窗口,自己定制數據分發策略)三、深入 Flink核心特性-Time,Window,WatermarkTumbling Window三、
6、深入 Flink核心特性-Time,Window,WatermarkSliding Window三、深入 Flink核心特性-Time,Window,WatermarkSession Window三、深入 Flink核心特性-Time,Window,WatermarkGlobal Window三、深入 Flink核心特性-Time,Window,Watermark三、深入 Flink核心特性-Time,Window,Watermark三、深入 Flink核心特性-Time,Window,WatermarkWatermark:watermark 會攜帶一個單調遞增的時間戳 t,watermark
7、(t)表示所有時間戳不大于 t 的數據都已經到來了,未來小于等于 t 的數據不會再來,因此可以放心地觸發和銷毀窗口了?;仡櫍篧indow和Watermark 什么關系?三、深入 Flink核心特性-Time,Window,Watermark遲到的數據:設置 allowedLateness()設置 allowedLateness 之后,遲來的數據同樣可以觸發窗口,進行輸出,利用Flink 的 side output 機制,我們可以獲取到這些遲到的數據:三、深入 Flink核心特性-Time,Window,WatermarkWindow 內部實現:Window 中數據也是通過State進行維護的支
8、持Flink使用State/Checkpoint技術來保證Exactly-Once語義三、深入 Flink核心特性-狀態管理和容錯三、深入 Flink核心特性-狀態管理和容錯內存管理狀態的弊端:三、深入 Flink核心特性-狀態管理和容錯理想的狀態管理:三、深入 Flink核心特性-狀態管理和容錯Managed State&Raw State三、深入 Flink核心特性-狀態管理和容錯Keyed State&Operator State回顧:1.Keyed Stream vs Non-Keyed Stream?2.Keyed State vs Operator State?三、深入 Flink
9、核心特性-狀態管理和容錯Keyed State 之間的關系:三、深入 Flink核心特性-狀態管理和容錯Keyed State的使用方法:三、深入 Flink核心特性-狀態管理和容錯Checkpoint:三、深入 Flink核心特性-狀態管理和容錯三、深入 Flink核心特性-狀態管理和容錯StateBackend:MemoryStateBackend三、深入 Flink核心特性-狀態管理和容錯StateBackend:FsStateBackend三、深入 Flink核心特性-狀態管理和容錯StateBackend:RocksDBStateBackend三、深入 Flink核心特性-狀態管理和
10、容錯一個經典案例:Kafka Source管理 Kafka Topic Offset回顧:Flink與 Kafka 協同工作并確保來自Kafka topic 的消息以 exactly-once 的語義被處理是Flink內部的還是端到端的?Flink 中實現的 Kafka 消費者是一個有狀態的算子(source operator)。Kafka Source Operator 的狀態(State)中存儲了所有 Kafka Topic 分區的讀取偏移量。Flink 的檢查點機制與 Kafka 協同工作并確保來自 Kafka topic 的消息以 exactly-once 的語義被處理。當一個檢查點被
11、觸發時,每一個分區的偏移量都被存到了這個檢查點中。Flink 的檢查點機制保證了所有 operator task 的存儲狀態都是一致的。三、深入 Flink核心特性-狀態管理和容錯一個經典案例:Kafka Source管理 Kafka Topic Offset,Step 1:432 1 0432 1 0一個 Kafka topic,有兩個partition,每個partition都含有“A”,“B”,“C”,”D”,“E”5條消息。三、深入 Flink核心特性-狀態管理和容錯一個經典案例:Kafka Source管理 Kafka Topic Offset,Step 2:Kafka comsum
12、er(消費者)開始從 partition 0 讀取消息。消息“A”正在被處理,第一個 consumer 的 offset 變成了1。三、深入 Flink核心特性-狀態管理和容錯一個經典案例:Kafka Source管理 Kafka Topic Offset,Step 3:消息“A”到達了 Flink Map Task。兩個 consumer 都開始讀取他們下一條消息(partition 0 讀取“B”,partition 1 讀取“A”)。各自將 offset 更新成 2 和 1。同時,Flink 的 JobMaster 開始在 source 觸發了一個檢查點。三、深入 Flink核心特性-狀
13、態管理和容錯一個經典案例:Kafka Source管理 Kafka Topic Offset,Step 4:三、深入 Flink核心特性-狀態管理和容錯一個經典案例:Kafka Source管理 Kafka Topic Offset,Step 5:Flink Map Task 收齊了同一版本的全部 checkpoint barrier 后,那么就會將它自己的狀態也存儲到 JobMaster。同時,consumer 會繼續從 Kafka 讀取消息。三、深入 Flink核心特性-狀態管理和容錯一個經典案例:Kafka Source管理 Kafka Topic Offset,Step 6:三、深入
14、Flink核心特性-狀態管理和容錯一個經典案例:Kafka Source管理 Kafka Topic Offset,Failover:三、深入 Flink核心特性-AsyncIOSync IO vs AsyncIOAsyncIO 的兩種實現方式:需要一個支持異步請求的客戶端或者將同步客戶端丟到線程池中執行作為異步客戶端三、深入 Flink核心特性-AsyncIOAsyncIO 使用方式三、深入 Flink核心特性-AsyncIOAsyncIO 使用方式回顧:AsyncIO 在哪里生成的Watermark?三、深入 Flink核心特性-AsyncIOAsyncIO 實現原理之-AsyncWait
15、Operator,AsyncFunction,ResultFuture三、深入 Flink核心特性-AsyncIOAsyncIO 實現原理之-AsyncWaitOperator,AsyncFunction,ResultFuture三、深入 Flink核心特性-AsyncIOAsyncIO 實現原理之-AsyncWaitOperator,AsyncFunction,ResultFuture三、深入 Flink核心特性-Flink Metrics+WebUIReports:JMXGraphiteInfluxDBPrometheusStatsDDatadogSlf4j三、深入 Flink核心特性-F
16、link SQL物化視圖:話雖如此,使用 SQL 處理流并不是不可能的。一些關系型數據庫系統維護了物化視圖,類似于在流數據中評估 SQL 查詢。物化視圖被定義為一個 SQL 查詢,就像常規(虛擬)視圖一樣。但是,查詢的結果實際上被保存(或者是物化)在內存或硬盤中,這樣視圖在查詢時不需要實時計算。為了防止物化視圖的數據過時,數據庫系統需要在其基礎關系(定義的 SQL 查詢引用的表)被修改時更新更新視圖。如果我們將視圖的基礎關系修改視作修改流(或者是更改日志流),物化視圖的維護和流中的 SQL 的關系就變得很明確了。Why SQL?SQL 是聲明式的:你指定你想要的東西,而不是如何去計算;SQL
17、可以進行有效的優化:優化器計估算有效的計劃來計算結果;SQL 可以進行有效的評估:處理引擎準確的知道計算內容,以及如何有效的執行;最后,所有人都知道的,許多工具都理解 SQL。./bin/sql-client.sh em三、深入 Flink核心特性-Flink SQL 核心功能TODO:https:/ Flink核心特性-Flink SQL 核心功能三、深入 Flink核心特性-Flink SQL 核心功能三、深入 Flink核心特性-Flink SQL 核心功能三、深入 Flink核心特性-Flink SQL 核心功能三、深入 Flink核心特性-Flink SQL 核心功能三、深入 Fli
18、nk核心特性-Flink SQL 核心功能三、深入 Flink核心特性-Flink SQL 核心功能三、深入 Flink核心特性-Flink SQL 核心功能三、深入 Flink核心特性-Flink SQL 核心功能三、深入 Flink核心特性-Flink SQL 核心功能三、深入 Flink核心特性-Flink SQL 核心功能三、深入 Flink核心特性-Flink SQL 之 Retraction(Without)通俗講retract就是傳統數據里面的更新操作,也就是說retract是流式計算場景下對數據更新的處理方式。首先來看下流場景下的一個詞頻統計列子。三、深入 Flink核心特性-
19、Flink SQL 之 Retraction(With)五、開源項目Waterdrop源碼分析(生產環境的Flink,Spark流式計算產品)https:/ 是一個非常易用,高性能、支持實時流式和離線批處理的海量數據處理產品,架構于Apache Spark 和 Apache Flink之上。五、開源項目Waterdrop源碼分析(生產環境的Flink,Spark流式計算產品)https:/ 是什么?簡單易用,靈活配置,無需開發實時流式處理離線多源數據分析高性能海量數據處理能力模塊化和插件化,易于擴展支持利用SQL做數據處理和聚合支持Spark 2.x五、開源項目Waterdrop源碼分析(生產環境的Flink,Spark流式計算產品)https:/ 日志聚合入ESWaterdrop 配置示例:五、開源項目Waterdrop源碼分析(生產環境的Flink,Spark流式計算產品)https:/ Star增長趨勢:五、開源項目Waterdrop源碼分析(生產環境的Flink,Spark流式計算產品)https:/