《王峰-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年发布了两个大版本750002500commitsissuescontributors完整的流批一体 API(SQL/Table/DataSt
2、ream)流批混合运行,数据源自动切换(Hive/Kafka)细粒度资源管理提升资源效率和系统稳定性自适应网络流控加速全局一致性快照执行 云原生部署模式,自动弹性扩缩容 提升易用性,WebUI 更方便诊断和调优 统一 Savepoint 格式,不同 Statebackend 切换 Hive SQL 语法兼容,包括 DDL/DML/DQLAapcheAapche软件基金会2021 2021 财年报告Top1:邮件列表活跃度Top2:GitHub 上的访问量Top2:代码仓库中的代码提交次数020040060080001600Dec-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 视频号重磅推出0500000002500030000350004000045000500002019年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