 Doris的数据导入机制以及原子性保证由百度自研,2017年开源,2018年贡献给Apache社区后更名为 Apache Doris 系统定位 • 百度内部统称其为“百度数据仓库Palo”,同时百度云上提供Palo的企业级托管版本 发展历程 01 02 03 • 1.0版本正式上线 • 应用于百度凤巢统计报表的 需求场景,上线后数据更新 频率从天级提升至分钟级 2008 • 进行了通用化改造,开始承 接公司内部其他报表系统 • 助力百度统计成为国内最大 中的导入 Prepared 事务和两阶段提交 • FE 充当协调者 • Prepare 阶段下发任务和写入数据 • Submit阶段 • 数据状态改为COMMITED • publish 版本 • 状态改为 VISIBLE Request-to-prepare Commit/Abort Done Coordinator Participant Prepare Phase Commit Phase Prepare Txn • 创建事务 • 规划导入执行计划 • 分发子任务 03 Doris 中的导入 FE Leader Analyzer FE Follower 数据版本 N 事务状态 PREPARE 事务管理 1.Begin Txn Phase 1 Execute Txn • 接受查询计划 • 初始化ScanNode • 初始化 TableSink和0 码力 | 33 页 | 21.95 MB | 1 年前3 Doris的数据导入机制以及原子性保证由百度自研,2017年开源,2018年贡献给Apache社区后更名为 Apache Doris 系统定位 • 百度内部统称其为“百度数据仓库Palo”,同时百度云上提供Palo的企业级托管版本 发展历程 01 02 03 • 1.0版本正式上线 • 应用于百度凤巢统计报表的 需求场景,上线后数据更新 频率从天级提升至分钟级 2008 • 进行了通用化改造,开始承 接公司内部其他报表系统 • 助力百度统计成为国内最大 中的导入 Prepared 事务和两阶段提交 • FE 充当协调者 • Prepare 阶段下发任务和写入数据 • Submit阶段 • 数据状态改为COMMITED • publish 版本 • 状态改为 VISIBLE Request-to-prepare Commit/Abort Done Coordinator Participant Prepare Phase Commit Phase Prepare Txn • 创建事务 • 规划导入执行计划 • 分发子任务 03 Doris 中的导入 FE Leader Analyzer FE Follower 数据版本 N 事务状态 PREPARE 事务管理 1.Begin Txn Phase 1 Execute Txn • 接受查询计划 • 初始化ScanNode • 初始化 TableSink和0 码力 | 33 页 | 21.95 MB | 1 年前3
 SelectDB案例 从 ClickHouse 到 Apache Doris,因此如何在查询计算时自动生成一个准确有 效的 SQL 语句是非常有难度的。如果你有相关的经验,期待有机会可以一起探索交流。 优化经验 从上文已知,为更好地实现业务需求,数据架构演进到 4.0 版本,其中 Apache Doris 作为 分析加速场景的解决方案在整个系统中发挥着重要的作用。接下来将从场景需求、数据导入、 查询优化以及成本优化四个方面出发,分享基于 Doris 的读写优化经验,希望给读者带来 也只需保存最新待导入的数据。同时该方案整体实时性更好且可控,并且大宽表聚合在 Flink 中执行,可灵活加入各种 ETL 逻辑,离线和实时可对多个开发逻辑进行复用,灵活度较高。 数据模型选择 目前我们生产环境所使用的版本为 Apache Doris 1.1.3,我们对其所支持的 Unique 主键模 型、Aggregate 聚合模型和 Duplicate 明细模型进行了对比 ,相较于 Unique 模型和 Duplicate  Unique 模型适用于需要保证 Key 唯一性场景,同一个主键 ID 多次导入之后,会 以 append 的方式进行行级数据更新,仅保留最后一次导入的数据。在与社区进行 沟通后,确定后续版本 Unique 模型也将支持部分列更新。  Duplicate 模型区别于 Aggregate 和 Unique 模型,数据完全按照导入的明细数据 进行存储,不会有任何预聚合或去重操作,即使两行数据完全相同也都会保留,因0 码力 | 12 页 | 1.55 MB | 1 年前3 SelectDB案例 从 ClickHouse 到 Apache Doris,因此如何在查询计算时自动生成一个准确有 效的 SQL 语句是非常有难度的。如果你有相关的经验,期待有机会可以一起探索交流。 优化经验 从上文已知,为更好地实现业务需求,数据架构演进到 4.0 版本,其中 Apache Doris 作为 分析加速场景的解决方案在整个系统中发挥着重要的作用。接下来将从场景需求、数据导入、 查询优化以及成本优化四个方面出发,分享基于 Doris 的读写优化经验,希望给读者带来 也只需保存最新待导入的数据。同时该方案整体实时性更好且可控,并且大宽表聚合在 Flink 中执行,可灵活加入各种 ETL 逻辑,离线和实时可对多个开发逻辑进行复用,灵活度较高。 数据模型选择 目前我们生产环境所使用的版本为 Apache Doris 1.1.3,我们对其所支持的 Unique 主键模 型、Aggregate 聚合模型和 Duplicate 明细模型进行了对比 ,相较于 Unique 模型和 Duplicate  Unique 模型适用于需要保证 Key 唯一性场景,同一个主键 ID 多次导入之后,会 以 append 的方式进行行级数据更新,仅保留最后一次导入的数据。在与社区进行 沟通后,确定后续版本 Unique 模型也将支持部分列更新。  Duplicate 模型区别于 Aggregate 和 Unique 模型,数据完全按照导入的明细数据 进行存储,不会有任何预聚合或去重操作,即使两行数据完全相同也都会保留,因0 码力 | 12 页 | 1.55 MB | 1 年前3
 百度智能云 Apache Doris 文档可以为表指定别名。最 终恢复的表会采用这个别名。分区名称不能修改。如果不指定分区,则默认恢复该表的所有分区。所指定的表和分区必须已 存在于仓库备份中。 :指定恢复操作相关属性 :指定恢复对应备份快照的哪个时间版本,必填。该信息可以通过 SHOW SNAPSHOT 命令获取。 :指定恢复的表或分区的副本数。默认为3。若恢复已存在的表或分区,则副本数必须和已存在表或 分区的副本数相同。同时,Compute Node :任务超时时间,默认为一天。单位秒。 Example Example 1. 从 example_repo 中恢复备份 snapshot_1 中的表 backup_tbl 到数据库 example_db1,时间版本为 "2020-05-04-16-45- 08"。恢复为 1 个副本: kafka_partitions kafka_partitions kafka_partitions kafka_partitions example_repo 中恢复备份 snapshot_2 中的表 backup_tbl 的分区 p1,p2,以及表 backup_tbl2 到数据库 example_db1, 并重命名为 new_tbl,时间版本为 "2020-05-04-17-11-01"。默认恢复为 3 个副本: Keywords Keywords 最佳实践 最佳实践 1. 同一数据库下只能有一个正在执行的恢复操作。 2. 可以0 码力 | 203 页 | 1.75 MB | 1 年前3 百度智能云 Apache Doris 文档可以为表指定别名。最 终恢复的表会采用这个别名。分区名称不能修改。如果不指定分区,则默认恢复该表的所有分区。所指定的表和分区必须已 存在于仓库备份中。 :指定恢复操作相关属性 :指定恢复对应备份快照的哪个时间版本,必填。该信息可以通过 SHOW SNAPSHOT 命令获取。 :指定恢复的表或分区的副本数。默认为3。若恢复已存在的表或分区,则副本数必须和已存在表或 分区的副本数相同。同时,Compute Node :任务超时时间,默认为一天。单位秒。 Example Example 1. 从 example_repo 中恢复备份 snapshot_1 中的表 backup_tbl 到数据库 example_db1,时间版本为 "2020-05-04-16-45- 08"。恢复为 1 个副本: kafka_partitions kafka_partitions kafka_partitions kafka_partitions example_repo 中恢复备份 snapshot_2 中的表 backup_tbl 的分区 p1,p2,以及表 backup_tbl2 到数据库 example_db1, 并重命名为 new_tbl,时间版本为 "2020-05-04-17-11-01"。默认恢复为 3 个副本: Keywords Keywords 最佳实践 最佳实践 1. 同一数据库下只能有一个正在执行的恢复操作。 2. 可以0 码力 | 203 页 | 1.75 MB | 1 年前3
 Apache Doris 在美团外卖数仓中的应用实践短板。因此,高频的大规模汇 总统计,并发能力将面临较大挑战,这取决于集群硬件方面的并行计算能力。传统去重算法需要 大量计算资源,实时的大规模去重指标对CPU、内存都是一个巨大挑战。目前Doris最新版本已经 支持Bitmap算法,配合预计算可以很好地解决去重应用场景。 3 / 8 Apache Doris在美团外卖数仓中的应用实践 Join 谓词下推的传递性优化 如上图所示,对于下面的 SQL: select * from t1 join t2 on t1.id = t2.id where t1.id = 1 Doris开源版本默认会对t2表进行全表Scan,这样会导致上面的查询超时,进而导致外卖业务在D oris上的第一批应用无法上线。 于是我们在Doris中实现了第一个优化:Join谓词下推的传递性优化(MySQL和TiDB中称之为Cons0 码力 | 8 页 | 429.42 KB | 1 年前3 Apache Doris 在美团外卖数仓中的应用实践短板。因此,高频的大规模汇 总统计,并发能力将面临较大挑战,这取决于集群硬件方面的并行计算能力。传统去重算法需要 大量计算资源,实时的大规模去重指标对CPU、内存都是一个巨大挑战。目前Doris最新版本已经 支持Bitmap算法,配合预计算可以很好地解决去重应用场景。 3 / 8 Apache Doris在美团外卖数仓中的应用实践 Join 谓词下推的传递性优化 如上图所示,对于下面的 SQL: select * from t1 join t2 on t1.id = t2.id where t1.id = 1 Doris开源版本默认会对t2表进行全表Scan,这样会导致上面的查询超时,进而导致外卖业务在D oris上的第一批应用无法上线。 于是我们在Doris中实现了第一个优化:Join谓词下推的传递性优化(MySQL和TiDB中称之为Cons0 码力 | 8 页 | 429.42 KB | 1 年前3
共 4 条
- 1













