- 快召唤伙伴们来围观吧
- 微博 QQ QQ空间 贴吧
- 视频嵌入链接 文档嵌入链接
- 复制
- 微信扫一扫分享
- 已成功复制到剪贴板
Apache HUDI在字节跳动的实践
耿筱喻-字节跳动大数据研发工程师
展开查看详情
1 .
2 .ByteDance 字节跳动基于HUDI的实时数据湖 平台介绍 耿筱喻 字节跳动 大数据研发工程师
3 . ByteDance 01 02 03 04 HUDI简介 应用场景 核心技术 未来规划
4 .ByteDance 01 HUDI简介
5 .HUDI 简介 HUDI 作为一个流式数据湖平台,支持 ACID、支持增量更新与消费 的存储方案
6 .HUDI 基本概念 FileGroup 逻辑含义 • 单个分区内数据的水平切分单位 • 每个 Key 只存在于一个 File Group 中 (全局 or 分区) • 逻辑上的文件概念,有特定的 File ID 组成部分 • 所有归属于这个 File ID 下多个版本的 文件 FileSlice 的集合 • Base File 为列存文件 • Log File 为行存文件
7 .HUDI 表更新过程 Copy On Write 表 • 适用于离线批量更新场景 • 读取 File Group 中旧的 Base File,合并更新数据,生成新 Base File Merge On Read 表 • 适用于实时高频更新场景 • 更新数据写入 File Group 的 Log 行存文件 • 读时 Merge, 通过 Compaction 进行合并
8 .HUDI 索引基本概念 索引用于定位更新数据所在的 File Group • Bloom Filter Index 通过 Bloom Filter 判断 key 是否在已有的 File Group 中 • HBase Index 通过 HBase 记录 key 和文件的映射关系 • Bucket Index (RFC-29) 通过 key 的哈希值定位到 File Group
9 .字节实时数据湖平台 字节跳动基于 HUDI 通过秒级数据可见支持实时数仓,除了提供 HUDI 社区的所有功能外,还支持 • 基于数据湖的元数据管理系统 • 行列级别的并发更新 • Bucket Index,基于哈希的索引方式 • Append的模式
10 .ByteDance 02 应用场景
11 .ByteDance Classic Hudi Pipeline
12 .推荐场景 • 需要对表格存储做高效的OLAP查询 • 低成本批量添加特征列
13 .推荐场景 挑战 • 百 GB/s 的高吞吐近实时写入 • Schema 复杂,列数可到万级别,存在大量复杂类型 • 百万亿行数据的部分列的低成本更新 • 支持并发 Update
14 .数仓场景 • 对历史全量数据进行部分行、列的更新 • 单表数据量百 PB 级 历史全量 增量更新
15 .近实时数仓场景 • 多数据源实时导入,支持列拼接 • 单表数据规模几十 TB 量级
16 .ByteDance 03 核心技术
17 .湖仓一体元数据服务 • 统一的元数据视图,与 Hive Metastore 完全兼容 • 无缝对接多个计算引擎 Spark / Presto / Flink • 跨源查询分析能力,直接查询 MySQL,Abase(kv), Kafka • 为数据湖定制的Metastore,支持高效数据更新
18 .Hudi Metastore (HUDI RFC-36) • 支持 Commit 形式的元数据管理,并支持并发更新 • 对最新元数据的 Snapshot 进行持久化,并支持高效查询 • 提供分区裁剪功能
19 .Hudi Metastore (HUDI RFC-36) • 底层存储可插拔 • 轻量且易于扩展 • Hive Metastore 兼容
20 .行列级并发写入 • 基于乐观锁的Timeline • 灵活的行列冲突检查策略
21 .行列级并发写入 • 基于乐观锁的Timeline • 灵活的行列冲突检查策略
22 .行列级并发写入 • 基于乐观锁的Timeline • 灵活的行列冲突检查策略
23 .Bucket Index (HUDI RFC-29) 通过 key 的哈希值定位到 File Group,提升导入实时性
24 .Bucket Index (HUDI RFC-29) 通过 key 的哈希值定位到 File Group,提升导入实时性
25 .Bucket Index (HUDI RFC-29) 利用 Bucket 分布做查询优化 • Bucket Pruning • Bucket Join
26 .Bucket Index (HUDI RFC-29) 利用 Bucket 分布做查询优化 • Bucket Pruning • Bucket Join
27 .Append 模式支持 • 无需指定主键、比较列 • 支持日志场景 • Non Index
28 .ByteDance 04 未来规划
29 .ByteDance 未来规划 • 支持部分列更新下的完整 Bin Log 消费 • 可扩展哈希索引 • 存储服务化,数据秒级可见 • 基于Merge Tree的文件分布