1、Flink Table Store v0.2应用场景和核心功能李劲松 阿里巴巴 应应用用场场景景 核心功能 未来展望 项目信息目目录录DFS/Cloud Storage001Lake Store:Manifest-LSM FilesFlink Streaming InsertFlink Batch InsertLog System(Kafka)Flink Table StoreFlink Streaming QueryFlink Batch QueryHive QuerySpark QueryPresto Query架构架构001Table Stor
2、e Lake:Manifest-LSM Files场场景一:离景一:离线线数数仓仓加速加速Streaming WriteBatch Read写端:1.无状态更新2.高性能更新Update with PKUpdate without PKAppend Only读端:3.高性能 MOR4.主键索引加速001Table Store Lake:Manifest-LSM Files场场景二:景二:Partial Update*(COALESCE)Streaming WriteBatch ReadCREATE TABLE MyTable(pk BIGINT PRIMARY KEY N
3、OT ENFORCED,column_1 DOUBLE,column_2 BIGINT)WITH(merge-engine=partial-update);INSERT INTO MyTableSELECT pk,column_1,NULL FROM Src1UNION ALLSELECT pk,NULL,column_2 FROM Src2基于主键打宽表写端:1.无状态更新2.高性能更新读端:3.高性能 MOR4.主键索引加速001Table Store Lake:Manifest-LSM Files场场景三:景三:预预聚合聚合 RollupStreaming Writ
4、eBatch ReadCREATE TABLE MyTable(pk BIGINT PRIMARY KEY NOT ENFORCED,column_1 DOUBLE,column_2 BIGINT)WITH(merge-engine=aggregation,column_1.aggregate=sum,column_2.aggregate=max);写端:1.无状态更新2.高性能更新读端:3.高性能 MOR4.主键索引加速001Table Store Lake:Manifest-LSM Files场场景四:景四:实时实时数数仓仓增增强强Streaming WriteStr
5、eaming ReadLog System(Kafka)双写记录 OffsetCREATE TABLE MyTable(column_1 DOUBLE,column_2 BIGINT,dt STRING)PARTITIONED BY(dt)WITH(write-mode=append-only,log.system=kafka,log.topic=my_topic,log.kafka.bootstrap.servers=.);QueryHybrid:BackfillAppendOnly:保证输入序中间表可查 应用场景 核心功能核心功能 未来展望 项目信息目目录录Flink Table Stor
6、e v0.1:湖存:湖存储结储结构构 Snapshot 级别的事务语义 对象存储上的大规模数据存储的支持Flink Table Store v0.1:分区内部:分区内部Bucket-0Bucket-1Bucket-2Partition:2022-05-20LSM TreeLSM TreeLSM TreeTable Store CatalogFlink SQL:CREATE CATALOG MyCatalog WITH(type=table-store,root-path=.,metastore.type =hive,metastore.uri =.);USE CATALOG MyCatalog
7、;CREATE TABLE MyTable(pk BIGINT PRIMARY KEY NOT ENFORCED,column_1 DOUBLE,column_2 BIGINT)WITH(log.system =kafka,log.topic=my_topic,log.kafka.bootstrap.servers =.);Log 可选,需提供 Topic 默认 Meta 保存在 FileSystem 上 Metastore 配置为 Hive,Hive 引擎可直接读生生态态Hive SQL:创建外表 已使用Hive Metastore 的Catalog无需创建CREATE EXTERNAL T
8、ABLE MyTableSTORED BY.TableStoreStorageHandlerLOCATION./table-path/;SELECT*FROM MyTable;Spark SQL:创建映射表CREATE TEMPORARY VIEW MyTableUSING tablestoreOPTIONS(path.);SELECT*FROM MyTable;Change BucketPartition:2022-05-20(16个bucket)Bucket0Bucket1Partition:2022-05-21(16个bucket)Bucket0Bucket1Now发现当前 Bucket
9、 太少,需要 Rescale:1.修改表的 Bucket 默认配置:ALTER TABLE SET(bucket=32);2.新分区使用新的 Bucket 个数:32,老分区保持不动3.暂停流写作业,使用 Batch 作业 Rescale 当前分区,恢复流写作业Append Only 模式模式 低成本,没有合并:当做传统离线表来使用 Kafka Tiered Storage:流读输入序,提供 Kafka 流读相同体验 数据可查询 自动 Compaction,避免小文件 应用场景 核心功能 未来展望未来展望 项目信息目目录录Flink Table Store:满满足足 Flink SQL 对对存
10、存储储的需求的需求Stream ETL(Queue)Batch ETLOLAPDim Lookup新新鲜鲜度度查询查询延延时时成本成本Flink Table Store:满满足不同足不同 Tradeoff 的的选择选择DFS/Cloud Storage001Lake Store:Manifest-LSM FilesExecutorCacheIndexDataLogExecutorCacheIndexDataLogMetastoreCoordinatorData ManagerResource ManagerServiceStreaming PipelineOnline OLAP QueryBatch PipelineOffline QueryFlink Table Store 架构架构Flink Table Store:Dim Join,计计算存算存储储分离分离Flink Streaming InsertDFS Bucketed LSMTask-0Task-0Task-0Flink Streaming Dim JoinCacheCacheCache类似于 HBase 计算存储分离 应用场景 核心功能 未来展望 项项目信息目信息目目录录V0.2 将在将在7月份月份发发布!布!欢欢迎迎试试用!用!谢谢谢谢