技术编程|基于Apache Doris的小米增长分析平台实践( 六 )


1. 缩短用户提交修改schema请求到真正执行的等待时长 , 当系统创建一个修改表的schema的事务的时候 , 原先的设计是要等待同一个db的所有大于该事务id号的事务都完成了才能开始修改表的schema , 我们修改为等待与该表有关且在该事务id号之前的所有事务完成即可修改表的schema 。当同一个db的数据导入作业很多的时候 , 这个修改可以大大缩短修改schema的等待时间 , 也避免了其他表的一些数据导入故障问题可能导致修改表schema的操作迟迟不能执行 。
2. 加快创建表包含新的schema的tablet的速度 。Doris修改schema的原理是通过创建包含新的schema的tablet , 然后将旧的tablet的数据迁移到新的tablet来完成schema的修改 。be节点通过一个map的数据结构来管理所有该节点上的tablet 。由于这里只有一把全局锁 , 当tablet数量非常多的时候 , 一些管理tablet的操作都要去获取全局锁来对tablet进行操作 , 此时会导致创建新的tablet超时 , 使得修改schema的操作失败 。针对这种情况 , 我们对map和全局锁做了shard操作 , 避免了创建tablet超时情况的发生 。
5、总结与展望
Doris在小米从2019年9月上线接入第一个业务至今 , 已经在海内外部署近十个集群(总体达到几百台BE的规模) , 每天完成数万个在线分析查询 , 承担了我们包括增长分析和报表查询在内的大多数在线分析需求 。从结果上来看 , 用Doris替换SparkSQL作为主要OLAP引擎 , 既大幅度提高查询性能 , 又简化了目前的数据分析架构 , 是Doris基于明细数据查询的大规模服务的一个比较成功的实践 。
在接下来的一段时间内 , 我们将继续投入精力提升数据实时导入效率和优化总体的查询性能 , 由于公司内部有不少业务有使用UNIQUE KEY模型的需求 , 目前该模型与DUPLICATE KEY模型的scan性能相比还是有比较明显的差距 , 这块也是未来我们需要重点解决的性能问题 。
6、致谢
随着社区的发展 , Doris正在变得成熟和完善 。Doris核心研发团队的成员组建了鼎石科技 , 他们专注于提升Doris的性能和完善Doris的相关功能 , 如可视化管理运维平台 , 安全性组件等 。在使用Doris的过程中 , 鼎石科技的小伙伴们也给予了我们很大的帮助 , 特此感谢!
7、作者简介蔡聪辉 , 小米OLAP工程师 , Apache Doris Committer钟云 , 小米大数据工程师


推荐阅读