1、字节跳动全域数据集成演进历程李畅 字节跳动大数据工程师|l 16年加入字节跳动开发套件团队,从0到1设计、研发了面向字节各业务线的数据集成服务l 专注大规模数据的分布式计算和传输领域,提供高效、可靠的全域数据集成解决方案个人简介|目录01数据集成背景02数据集成演进历程03通用能力改造04未来展望数据集成背景01|数据集成背景介绍数据集成是数据中台建设的基础,主要解决异构数据源间数据传输、加工和处理Dataleap是字节跳动自研的一站式数据中台套件,并服务字节内部各业务线数据建设场景外部数据源 数据库 消息队列 其它存储数据研发平台Dataleap 开发 集成 治理外部系统 数据分析 在线数据
2、服务 机器学习全域数据集成演进历程02|2022-now:通用能力输出 降低数据建设成本|全域数据集成演进历程2018之前:每个通道各自实现 MR/Spark/etc.,M*N套系统2018-2019:统一架构,覆盖批式场景 基于Flink 引擎,完成批式场景统一2020-2021:覆盖流式场景,批流一体 覆盖流式场景,完成批流统一2021-2022:覆盖CDC场景,湖仓一体 一套系统,覆盖所有数据同步场景初始期成熟期成长期|基于Flink的异构数据源传输架构初始架构基于Flink 1.5 DataSet API,只覆盖批式场景提供抽象的BaseInput和BaseOutput,实现数据源种类
3、线性扩展框架层提供统一基础服务,包括类型系统、自动并发度、脏数据检测、流控等支持Yarn部署,资源管理比较弹性|Flink Batch任务进度查询原始改进|Flink Batch任务进度查询Source进度SourceProgress=CompletedSplits/TotalSplitsOperator进度CurrentProgress=Min(ParentProgress,Current-Read-Records/Parent-Write-Records)Flink Task执行过程Flink是以任务驱动,JM构建好Split,Task常驻,不断向JM请求新的Split所有Split处理完
4、Task才会退出|基于Flink批流一体的架构主要升级点Flink 1.5-Flink 1.9,API 统一到DataStream API,支持批流一体架构基础框架扩展,支持Exactly Once、Event Time、Auto DDL同步等特性对Flink Core进行多项基础改进,支持推测执行、Region FailoverRuntime升级,支持云原生架构|MQ2Hive写入流程优化ShufflePipelined|基于Flink湖仓一体的架构CDCBatch ModeKafka(Binlog)Hive(T-1)HDFS(T)StreamingModeSpark MergerHive(
5、T)初始CDC同步架构数据处理流程比较复杂依赖Flink、Spark多种计算引擎*CDC:Change data capture实时性T+1产出,最快小时级延迟,不支持近实时分析场景效率存储开销大,每个分区都是全量镜像计算成本较高,Merge进行全局Shuffle|基于Flink湖仓一体的架构Batch ModeData Integration FrameworkStreaming ModeBatch SourceStreaming SourceIncremental SourceBatch SinkStreaming SinkIncrementalMode主要升级点Flink 1.9-Fli
6、nk 1.11,接入Hudi数据湖引擎,支持CDC数据变更同步对Hudi引擎进行多项基础改进,以提高整体的写入效率和稳定性近实时写入,延迟 Hash Index Compaction服务独立 缓存优化MQ|写入效果通用能力改造03|通用能力改造目标 对外能力输出,降低数据建设成本能力构建 低成本共建能力 架构的兼容能力|低成本共建能力思路1模块拆分现状大Jar包,模块间耦合较重数据处理流程不清晰解决方案功能模块划分组件可插拔|低成本共建能力思路2接口抽象现状Flink API