申请试用
HOT
登录
注册
 
Apache Doris源码阅读与解析第9讲《元数据管理》
Apache Doris
/
发布于
/
310
人观看

《 Apache Doris 源码阅读与解析》系列直播活动旨在帮助 Apache Doris 社区的开发者或者有意向参与 Apache Doris 社区建设的小伙伴们,可以更快熟悉 Apache Doris 代码的组织结构和一些主要流程的实现原理以及代码位置,以便于各位小伙伴们能够快速上手,参与到开发工作中来。

《第九讲 —— 元数据管理》,这一讲我们深入 Doris 的元数据管理逻辑,主要介绍以下内容:

  • BDBJE、元数据持久化和高可用
  • 元数据日志的写入和回放逻辑
  • Checkpoint 和 Image
展开查看详情

1 .Apache Doris 源码阅读与解析 第九讲:元数据管理 陈明雨

2 .课程大纲 • 什么是BDBJE • 元数据日志的写入和回放逻辑 • Checkpoint 和 Image

3 .课程收获 • 了解元数据持久化和高可用设计 • 能够对元数据进行管理和维护

4 .什么是BDBJE • Berkeley DB Java Edition • 分布式嵌入式kv数据库 • 为什么需要BDBJE • 元数据也是一种数据 • 存储元数据的数据库 • 持久性和一致性保证 https://www.oracle.com/database/berkeley-db/java-edition.html • 高可用保证

5 .BDBJE是如何存储元数据的(1) • 实际存储的是元数据的操作日志 • 通过回放操作日志,即可重构的完整的元数据

6 . Why exit? BDBJE是如何存储元数据的(2) What is roll? • EditLog.java • logEdit() • BDBJEJournal.java • write()

7 .BDBJE是如何存储元数据的(3) Why exit? • Why exit? • 内存中的元数据状态难以回滚 What is roll? • What is roll? • BDBJE的database • Checkpoint的分割点

8 .BDBJE是如何读取(回放)元数据的(1) • BDBJE open • BDBJEJournal.open()

9 .BDBJE是如何读取(回放)元数据的(2) • 回放元数据 • Catalog.replayJournal() • EditLog.loadJournal()

10 .BDBJE 元数据写入和读取流程总结 • 按序写入,按序读取回放 • 解决了数据持久化的问题 • 遗留问题 • 日志越多,回放越慢 • 单节点故障如何保证元数据高可用

11 .BDBJE 元数据 Checkpoint 的生成(1) • 定期将日志合并成一个Image • Checkpoint.runAfterCatalogReady() • Create Checkpoint Catalog • Write new image • Push image to other FE • Delete old journal • Delete old image

12 .BDBJE 元数据 Checkpoint 的生成(2) • 定期将日志合并成一个Image • Checkpoint.runAfterCatalogReady() • Create Checkpoint Catalog • Write new image • Push image to other FE • Delete old journal • Delete old image

13 .BDBJE 元数据 Checkpoint 的生成(2) • 定期将日志合并成一个Image • Checkpoint.runAfterCatalogReady() • Create Checkpoint Catalog • Write new image • Push image to other FE • Delete old journal • Delete old image

14 .BDBJE 元数据 Checkpoint 的生成(3) • 定期将日志合并成一个Image • Checkpoint.runAfterCatalogReady() • Create Checkpoint Catalog • Write new image • Push image to other FE • Delete old journal • Delete old image

15 .BDBJE 元数据 Checkpoint 的生成(4) • 定期将日志合并成一个Image • Checkpoint.runAfterCatalogReady() • Create Checkpoint Catalog • Write new image • Push image to other FE • Delete old journal • Delete old image

16 .BDBJE 元数据 Checkpoint 的生成(5) • 定期将日志合并成一个Image • Checkpoint.runAfterCatalogReady() • Create Checkpoint Catalog • Write new image • Push image to other FE • Delete old journal • Delete old image

17 .BDBJE 元数据 Checkpoint 的读取(1) • Image文件的格式 • MetaWriter.writer() • MetaReader.read()

18 .BDBJE 元数据 Checkpoint 的读取(2) • Image 和 log

19 .BDBJE 元数据高可用(1) • Follower 和 Observer • FAQ Q6 • Catalog.createReplayer() • BDBJE没有回调机制 • 轮询

20 .BDBJE 元数据高可用(2) • 元数据一致性 • 最终一致 • Timestamp • Config.meta_delay_toleration_second

21 .BDBJE 元数据高可用(3) • Leader Election • BDBStateChangeListener • Catalog.createStateListener()

22 .BDBJE 元数据运维 • Config.metadata_failure_recovery • 清空元数据的元数据 • recoveryTracker should overlap or follow on disk last VLSN of 99,937,900 recoveryFirst= 99,937,902 UNEXPE • https://community.oracle.com/thread/2197232?tstart=0

23 .总结 • 什么是BDBJE • 元数据的持久化和Checkpoint • 元数据高可用 • 故障恢复的原理

24 .Thank You ApacheDoris 微信公众号 • Doris 官网:doris.apache.org • Github:https://github.com/apache/incubator-doris • Palo 发行版:palo.baidu.com

1 点赞
3 收藏
29下载
确认
3秒后跳转登录页面
去登陆