《【字节跳动喻兆靖】高性能实时入湖在字节跳动的实践.pdf》由会员分享,可在线阅读,更多相关《【字节跳动喻兆靖】高性能实时入湖在字节跳动的实践.pdf(32页珍藏版)》请在三个皮匠报告上搜索。
1、高性能入湖在字节跳动的实践喻兆靖 字节跳动数据平台研发工程师PART ONELAS 介绍PART THREE生产落地与优化PART TWO 实时数仓场景PART FOUR未来规划LAS 介绍01ByteDanceByteDance流批一体架构批流一体存储一份存储同时支持流式的增量读写以及批量读写支持高效的 OLAP 查询支持高效的维表 Join湖仓分析引擎湖仓分析引擎湖仓开发工具湖仓开发工具SparkSparkPrestoPresto统一元数据统一元数据统一目录统一目录权限管控权限管控元数据发现元数据发现湖仓存储湖仓存储内置存储内置存储其他数据源TOSRDSEMRMQ分布式文件存储批流一体存储
2、引擎批流一体存储引擎弹性资源弹性资源VKE/VCIVKE/VCI湖湖仓仓存存储储湖湖仓仓分分析析引引擎擎队列管队列管理理数据数据管管理理查询分查询分析析作业管作业管理理权限管权限管理理生态连生态连接接湖湖仓仓分分析析平平台台ByteDance统一元数据ACID 支持企业级权限管控极致弹性引擎极致优化日志计算场景长周期计算场景全量计算场景ByteDance经典实时数仓架构实时存储不统一实时离线存储能够统一冷启动流程复杂且耗时回溯中间数据不可查ByteDance经典实时数仓架构流式低延迟写入/消费 RPS一致性语义批式分区并发更新Hive 表读写吞吐ByteDance批流一体存储-数据湖多引擎支持
3、落地场景0202ByteDance流式数据计算场景ByteDance多维分析场景ByteDance链路加速场景ByteDance现有方案存在的问题存储冗余数据计算链路长下游 OLAP 计算耗时长,且不稳定(核心问题是大数据量的 Shuffle)业务诉求ByteDance时效性:天级=小时级 场景诉求:提前就绪时间加速下游 去重、Join 等 OLAP 计算节省存储和计算资源场景特点:数据量大(一天千亿数据,存储百 TB 级别)有大字段且大小不均匀下游核心链路多基于 HUDI 的数据湖方案ByteDance时效性:天级=小时级 可支持分钟级近实时查询线上优势:入湖过程中直接按主键去重,省略了后续
4、流程中的去重操作,提前就绪时间按照主键进行了分桶,后续查询时可以使用 local join 进行 shuffle 消除,节省任务时间生产落地与优化03ByteDanceHudi Flink 入湖的实现方式ByteDancerow data to hoodie:负责将 table 的数据结构转成 HoodieRecordbucket assigner:负责新的文件 bucket(file group)分配write task:负责将数据写入文件存储coordinator:负责写 trasaction 的发起和 commitcleaner:负责数据清理 Flink 入湖落地问题ByteDance写
5、入性能差,能支持的 QPS 低写入资源占用较大,GC 严重写入稳定性差,Lag 毛刺严重,数据高峰期难以追平 LagCompaction 性能差,且资源占用较大不支持归档(流转批),后续批任务无法调度写入性能差,能支持的 QPS 低将 RowData 转为 HoodieRecord,带来了额外的序列化与反序列化的消耗多次 shuffle 导致数据频繁跨网络传输,导致性能较差在 checkpoint 的时候会阻塞式的 flush 所有数据到 HDFS,并且是阻塞式的,所以会出现长尾问题问题分析ByteDance写入稳定性差,Lag 毛刺严重,数据高峰期难以追平 Lag在 checkpoint 的
6、时候会阻塞式的 flush 所有数据到 HDFS,并且是阻塞式的,所以会出现长尾问题使用 append log file 的方式写入,追加写 Log 文件存在较多 HDFS 侧问题,维护成本较高(lease 超时问题,文件未关闭重新写入,客户端调用 close 但 NN 未响应,等等)问题分析ByteDance写入资源占用较大,GC 严重Write Function 和 HoodieAppendHandler 内部各有一层缓存,导致任务的内存占用比较大,GC 也比较严重Compaction 性能差,且资源占用较大由于写入的是 log file,所以为了保证读取效率还需要频繁进行 compact