1、Copyright 2022 北京火山引擎科技有限公司 All rights reserved.WWW.VOLCENGINE.COM2022/09/17字节跳动流式数仓和实时字节跳动流式数仓和实时分析分析服务的思考和实践服务的思考和实践云原生计算产品团队汪建锋火山引擎云原生实时数仓技术专家字节内部的场景分析字节内部的场景分析字节跳动旗下拥有今日头条、抖音等多款产品,每天服务着数亿用户,由此产生了大量的数据量和计算量:EB 级别海量的存储空间 每天平均 70PB 数据的增量 每秒钟百万次数的实时推荐请求 超过 400 万核的流式计算资源、500 万核的批式计算资源巨大的挑战巨大的挑战目前目前遇到
2、的遇到的典型问题典型问题一、一、数据和系统冗余问题数据和系统冗余问题二、二、数据一致性和正确性问题数据一致性和正确性问题三三、ServingServing性能问题性能问题ETLETLETLBatch ETLStreamETL流数仓和服务数仓融合流数仓和服务数仓融合Streaming Warehouse Streaming Warehouse 和和 HSAPHSAP的融合方案的融合方案HSAPStreaming WarehouseFlink 动态表解决数据和系统冗余问题基于Flink流批一体,解决数据冗余性和正确性问题HSAP服务型引擎优化解决服务性能问题流批一体的思考流批一体的思考Rethin
3、kSnapshot 1数据仓库的流批一体存储:Database 的体验!Snapshot 2Snapshot 3Snapshot 4流数据批数据Changelog(Binlog,WAL).Snapsho tNFlinkFlink动态表:全新的动态表:全新的FlinkFlink内置存储内置存储Flink Flink 动态表动态表 Snapshot+Log 满足所有 User Case 存储易用,直接查询DFS HIVEHIVE IcebergIceberg KafkaKafka HBASEHBASE MySQLMySQL .HSAPHSAP ClickHouseClickHouse FlinkF
4、link动态表:存储结构动态表:存储结构SinkLog QueueColumnar Merge Tree Distributed File SystemStreaming Reading(Read Changes)Batch Reading(Read Snapshot)Lookup Join(Read Snapshot by Key)FlinkFlink动态表:流批一体动态表:流批一体批读流读批写流写读取读取 流读:读取 Log Changes 批读:读取 Snapshot 流批融合:Hybrid 读 Lookup:支持点查 写入写入 流写:持续插入 批写:支持分区、支持Overwrite L
5、ake Store Lake Store On DFS,无服务,计算存储分离 列存高性能分FlinkFlink动态表:全面支持动态表:全面支持SQLSQL1.1.支持任意支持任意 DDL DDL 定义定义 只有业务逻辑 主键定义可选 支持所有类型2 2.支持任意支持任意 SQL SQL 定义定义 任意消息类型 全面DML支持CREATE TABLE user_behavior(user_id BIGINT,item_id BIGINT,category_id BIGINT,behavior STRING,dt STRING,PRIMARY KEY(user_id,item_id)NOT ENF
6、ORCED)PARTITIONED BY(dt);INSERT INTO user_behavior SELECT.支持任意 SQL 的写入不用定义OptionsOptionalOptionalFlinkFlink动态表:动态表:Merge TreeMerge Tree LSM:Log LSM:Log-Structured Merge TreeStructured Merge Tree支持大量快速更新支持大量快速更新 更新写增量文件 基于 Sorted File 的按需 Merge支持高效分析支持高效分析 全局有序 Sorted File 的 Data