《王峰-Flink Next:超越流處理.pdf》由會員分享,可在線閱讀,更多相關《王峰-Flink Next:超越流處理.pdf(24頁珍藏版)》請在三個皮匠報告上搜索。
1、Flink Next:Beyond Stream Processing王峰(莫問)阿里巴巴開源大數據平臺負責人2021:Apache Flink 社區持續繁榮本數據來源 Apache 基金會 2021 財年報告:https:/www.apache.org/foundation/docs/FY2021AnnualReport.pdfApache Flink 年度發布總結Flink 在2021年發布了兩個大版本198417601087104820822105001000150020002500commitsissuescontributors完整的流批一體 API(SQL/Table/DataSt
2、ream)流批混合運行,數據源自動切換(Hive/Kafka)細粒度資源管理提升資源效率和系統穩定性自適應網絡流控加速全局一致性快照執行 云原生部署模式,自動彈性擴縮容 提升易用性,WebUI 更方便診斷和調優 統一 Savepoint 格式,不同 Statebackend 切換 Hive SQL 語法兼容,包括 DDL/DML/DQLAapcheAapche軟件基金會2021 2021 財年報告Top1:郵件列表活躍度Top2:GitHub 上的訪問量Top2:代碼倉庫中的代碼提交次數02004006008001000120014001600Dec-10Jun-11Dec-11Jun-12D
3、ec-12Jun-13Dec-13Jun-14Dec-14Jun-15Dec-15Jun-16Dec-16Jun-17Dec-17Jun-18Dec-18Jun-19Dec-19Jun-20Dec-20Jun-21Flink 貢獻者年度 20%+增長100+公司參與 Apache Flink 代碼貢獻Apache Flink 中文社區持續火熱Apache Flink 視頻號重磅推出050001000015000200002500030000350004000045000500002019年5月2019年7月2019年9月2019年11月2020年1月2020年3月2020年5月2020年7月2
4、020年9月2020年11月2021年1月2021年3月2021年5月2021年7月2021年9月2021年11月Apache Flink 公眾號訂閱數近一年增長率維持在60%+Flink 中文學習網站https:/flink- Meetup2021年在北上深舉辦4場meetupAp a c h eF l i n k核心技術演進物理計劃JMTMStandaloneStatic手動拉起靜態決定剛性資源需求靜態預留資源邏輯計劃JMTMKubernetesActiveJM 申請Yarn靜態決定剛性資源需求動態按需申請資源邏輯計劃物理計劃邏輯計劃JMTMKubernetesAdaptiveK8s拉起物
5、理計劃?彈性資源需求云原生彈性資源管理彈性適配云原生部署架構演進全局一致性快照過程Durable Bulk StoreCheckpoint Coordinator第第1 1步:插入步:插入checkpoint BarrierDurable Bulk StoreCheckpoint Coordinator第第4 4步:步:Checkpoint CompleteDurable Bulk StoreCheckpoint Coordinator第第 2 2 步:步:多輸入 Barrier 對齊Durable Bulk StoreCheckpoint Coordinator第第3 3步:步:Snapsh
6、ot+Upload數據一致性保證系統容錯基礎全局一致性快照提速提升端到端時效性縮短事務周期提升故障恢復體驗減少數據回放自適應網絡流控機制,加速 Barrier 對齊Dynamically adjust buffer size by ThroughputsFixed buffer sizeStatic Buffer SizeDynamic Buffer SizeAvailable Number of BuffersAvailable Number of Buffers&SizeBarrier 對齊速度受網絡緩沖區數據量約束Snapshot=State Files1.時間受 State 大小約束2
7、.高頻操作帶來過多小文件快照執行時間不可控State ChangesFlink TMState FileHDFSLog-Based Checkpoint 加速快照執行Flink TMState ChangesState FileDouble WriteHDFS周期性同步備份Snapshot=State Files+Changelog毫秒級 CheckpointState ChangelogPyFlink 兼顧開發和運行效率 Java 和 Python VM 兩個進程通過 IPC 通信 使用 Python UDF 時承受性能開銷 消除跨進程通信 Python UDF 性能接近 Java UDFT
8、ask Manager ProcessJavaPyJavaJVMPython Runtime ProcessPython VMIPCPython UDFJNIPython/C APITask Manager ProcessJavaPyJavaJVMPythonSub-InterpreterPython VMPython UDFJCP CLibraryPyFlink 功能&性能基本追平 Java API流 批 一 體 演 進 與 落 地流批一體架構批式存儲流式存儲流式存儲批式存儲流式存儲流式存儲Unbounded Stream or Bounded Stream流批一體 APISQL&Table
9、 APIRelationalStream GraphDistributed RuntimeDataStreamPhysicalSQL&Table APIRationalStream GraphDataStreamStreamingDataSetBatchBatch PlanDistributed Runtime演進Flink-1.14RemoteShuffle ServicePipeline Shufflehttps:/ 即將支持 HudiIcebergClickhouseHologresFlink CDC 數據集成生態SELECTWHEREJOINTop-NGROUP BYINSERTmap
10、filteraggregatejoinkeyByflatMapSQL APIDataStream APIFlink CDC:全增量一體化數據集成傳統數據集成(全量增量割裂,時效性差)KafkaKafkaHDFSHDFSHDFSHive最終表全量表增量表定時合并定時回流(小時/天)Canal增量同步DataX/Sqoop全量同步Hudi全增量實時同步Flink CDC全增量一體化數據集成(全實時)即將支持 HudiIcebergClickhouseHologresFlink CDC 數據集成生態SELECTWHEREJOINTop-NGROUP BYINSERTmapfilteraggregat
11、ejoinkeyByflatMapSQL APIDataStream APIFlink CDC:全增量一體化數據集成chunk1chunk2chunk3chunk1chunk2chunk3chunk1chunk2chunk3chunk1chunk2chunk3chunk1chunk2chunk3全增量自動切換Task1Task2Task3Task3Task1Task2全量階段無鎖一致性快照增量階段并行讀取問題與局限性數據庫在線業務HiveHiveKafkaKafkaKafkaODSDWDDWS在線服務層RDBNoSQLKV主流實時離線一體化數倉架構DWDDWS兩套 API 開發成本高實時離線口
12、徑不一致消息隊列不便于分析流式數倉 Streaming WarehouseStreamingWarehouseStreamhouse=+數據庫在線業務logbinlogFlink SQLFlink SQLOLAPFlink SQL在線服務層RDBNoSQLKV.Streaming&BatchStreaming&BatchDynamic TableDynamic Table全鏈路數據實時流動實時流動流動的數據皆可分析分析實時離線分析一體化一體化CREATE TABLE user_behavior(user_id BIGINT,item_id BIGINT,category_id BIGINT,b
13、ehavior STRING,dt STRING,PRIMARY KEY(user_id,item_id)NOT ENFORCED)PARTITIONED BY(dt)WITH(log.system=kafka);Insert INTO user_behavior Select Flink Dynamic Table 流批一體存儲全面支持FlinkFlink SQLSQLDynamic Table流表二象性1.Table 的文件存儲形式2.LSM 支持 Update/Delete3.列存格式,支持壓縮等優化4.支持全量批式讀取核心組件 1:File Store1.Table 的操作記錄2.支持
14、插件化實現3.支持增量流式訂閱核心組件 1:Log StoreFlink SQLFlink SQL批模式流模式File StoreLog StoreSink 內置 Sink 屏蔽復雜性,對用戶透明 兩階段提交保證數據 Exactly Once實時寫入Flink SQLDEMODEMO機 器 學 習 場 景 支 持Apache Flink 機器學習生態總覽深度學習集成方案DL on Flink特征計算Clink在線預測Cluster Serving工作流管理AI FlowFlink ML-2.0(Alink)PyFlinkDataStreamTableAPIFlink RuntimeML Ext
15、ensionML CorePython APIJava APIExecution Engine通過 DL on Flink 支持深度學習場景WorkerWorkerWorkerPSPSAssociatedTF ProcessFlink OperatorsDeep neural networkMultiple hidden layersMultiple hidden layersInput layerInput layerOutput layerOutput layerFlink ML Estimatorhttps:/ 一體化計算流程Initial ModelVariablesInitial M
16、odelVariablesTrainingsamplesOutputOutputDataStream 上的流批一體原生分布式迭代Apache Flink ML 2.0 全新架構ML APITransformerTransformerOutputTableOutputTableInputTableInputTableK-MeansDecision TreeNaive BayesRandom ForestLinear regressionGBDTUnionUnionFeedbackFeedbackIteration Body更高效:引擎原生支持迭代更靈活:分布式同步/異步迭代更全面:同時支持流批數
17、據集ML Libshttps:/ ML 2.0-實時離線一體化機器學習AI Flow-實時離線一體化機器學習工作流Model ValidationOnline Model TrainingTraining Sample AssemblyDynamic Feature GenerationApplicationsStatic Feature GenerationOffline Model TrainingFeature StoreArchived DataRetractable Sample StoreModel StoreData AcquisitionInference ServiceStorageBatch JobsStreaming JobsTHANKS