社区人物志|魏祚:道阻且长,行则将至,做有温度的开源项目
「社区人物志」是 Apache Doris 社区推出的系列专栏,我们关注每一个对 Doris 做出过贡献的 Contributor ,会定期从对 Doris 做出突出贡献的小伙伴中选出一位「社区之星」,并会对「社区之星」进行专访,希望 TA 与 Doris 的故事可以被大家听见,也希望有更多的小伙伴参与到社区建设中来。
第五期我们采访了 Apache Doris Committer、小米 OLAP 引擎研发工程师 魏祚,来听听他与 Doris 的故事以及参与开源社区建设过程中的思考。
关于自己
Q:请先简单介绍一下自己过往的技术经历?
大家好,我是魏祚,目前是小米公司 OLAP 引擎方向的软件研发工程师。
2020 年 7 月从西安交通大学软件工程专业硕士研究生毕业,毕业后加入小米公司,从事 OLAP 引擎的研发工作,主要负责 Apache Doris 的研发、优化和运维。平时的工作还会涉及到 HDFS、Hive、Flink 等一些其他系统。
Q:除了 OLAP 方向以外,还在关注哪些技术方向或领域呢?
我硕士研究生阶段参与过计算机视觉方向的研究工作,因此,平时还会关注一些机器学习、深度学习等人工智能相关的技术。
关于 Doris
Q:您是如何了解到 Doris 的?
Apache Doris 是小米公司使用最广泛的 OLAP 系统,我毕业之后非常幸运地加入了小米公司的 Doris 团队,就这样与 Doris 结缘,开始参与 Doris 的研发、优化和运维工作。
Q:使用 Doris 期间您有没有遇到过什么问题或挑战,是如何解决的呢?
随着线上集群导入任务量增大,Compaction 模块的压力会增大,出现数据版本合并不及时的情况,进而影响查询性能。而 Compaction 任务本身又比较耗费机器的 CPU 和内存资源,Compaction 放得太开又会占用过多机器资源,也会影响查询性能,还可能会造成 OOM 。
针对这一问题,我们一方面从业务侧着手,规范用户导入操作,尽量降低数据导入频率,增大每次导入的数据量,避免高频率的小数据量写入;另一方面,根据业务场景的不同,我们针对不同集群配置了不同的 Compaction 参数( Compaction 策略、线程数等)。为方便 Compaction 参数调整,我们从代码层面也进行了优化,支持运行时动态调整 Compaction 策略和 Compaction 线程数,避免需要参数调整的时候重启进程。当然,要彻底解决这一问题,还需要进一步提高 Compaction 的效率,我未来一段时间也会在这部分有所投入。
Q:除了遇到的问题以外,还有没有一些有趣的案例或故事可以分享呢?
最有趣的事情莫过于线上集群遇到某个 Bug 之后,我正在苦恼如何解决的时候,发现之前社区已经有其他人遇到过相同的问题,并且已经修复。这样的案例实在太多了,这里就不一一列举了。这就是开源社区的迷人之处。
Q:您认为 Doris 有哪些做得比较好的地方?有哪些方面还需要继续优化?
比较好的地方
运维非常简单;
不依赖于其他系统,对开发者友好,开发者可以直接在 Docker 容器中进行快速部署和启动,完成功能验证;
兼容 MySQL 协议,使用门槛低,用户可以像使用 MySQL 一样来使用 Doris 。
提升Compaction效率;
完善系统监控;
资源隔离。
Q:有没有尝试把 Doris 推荐给更多的人使用呢?被推荐的人对 Doris 的反馈如何?
我会根据小米公司内部一些业务的具体情况,把 Doris 推荐给业务场景适合的业务方。反馈都还不错,如果业务场景合适,并且能够正确使用,一般都能满足用户的使用需求。
Q:对 Doris 有没有什么想吐槽的地方?
我没有什么想吐槽的。我对 Doris 比较了解,虽然知道 Doris 还有很多地方有待优化,但那些短板很快都可以被补齐,并不是什么无法解决的问题。我们需要一些时间,我相信经过社区各位大佬的共同努力,Apache Doris 一定能成为一款一流的 OLAP 产品。
参与社区
Q:是什么样的契机,让您开始向 Doris 提交 PR 及贡献代码呢?
小米公司一直就有拥抱开源的工程师文化,小米的 Doris 团队也一直在向 Apache Doris 社区贡献代码,整个团队的氛围驱使我参与 Doris 社区、向社区提交 PR 。小米公司有足够的业务量和数据量来发现 Doris 的边界和不足,业务驱动我们进行功能开发、性能优化和 Bug 修复,然后我们会将代码贡献给 Doris 社区,同时也会从社区引入其他 Contributor 贡献的新功能、性能优化和 Bug 修复的代码。我们既是开源社区的参与者、贡献者,又是开源社区的受益者。
Q:后续会更关注或计划参与哪些方面的 Issue 呢?
Compaction 优化。我们线上的某些业务,查询性能受 Compaction 影响非常大,数据版本合并不及时的话,极端情况下查询性能可能会下降十几倍。Compaction 的效率还有很大的提升空间。
资源隔离。线上集群经常会有一些耗时较长的大查询占用过多的机器资源,进而影响到其他用户的查询性能。
Q:作为 Apache Doris 的 Committer ,有什么样的经验想分享社区用户和开发者的么?
对于社区的普通用户,建议多了解一下 Doris 的底层原理(可以通过阅读社区文档或社区发表的一些原理解析的文章来了解 Doris 底层实现机制,并不一定需要阅读源码),这样可以更清楚地知道如何正确地使用 Doris ,如何更好地发挥 Doris 的优势,避免一些糟糕的使用方法。比如,要避免频繁地使用 insert 的方式一条条插入数据,否则会对 Compaction 有较大压力。 对于社区的开发者,建议由易到难、持续贡献、坚持分享。贡献开源社区的方式很多,不仅局限于贡献代码,修改文档、参与社区讨论以及在社区进行技术分享都很重要。
Q:在参与社区建设的过程中,您有什么样的收获?
结识了一批牛逼的技术大佬,为自己找到了职业发展的榜样和目标。 自己提交的代码可以得到社区大佬的 Review ,通过社区也可以和其他公司的工程师进行技术交流,极大地提升了自己的技术能力。 通过参与开源社区的技术分享,提升了自己的技术影响力。
Q:对于 Doris 社区的建设,您有什么样的建议呢?
建议社区能够出一份 Doris 性能相关的文档,对 Doris 的边界进行量化描述,比如:Doris 适合什么场景,不适合什么场景;针对什么样的集群规模、什么样的业务场景,Doris 能够提供什么样的查询和导入性能。这可能不是一件容易的事情,因为 Doris 是一款非常复杂的 OLAP 系统,使用方式和使用场景也非常复杂。不过这可以帮助用户明确 Doris 的边界,也能够帮助用户了解如何正确地使用 Doris 。
建议社区能够多组织一些线下的 Meetup ,让大家可以进行面对面的技术交流。
展望未来
Q:您如何看待 OLAP 引擎未来的技术趋势呢?
存储计算分离:支持存储和计算分离,计算资源和存储资源可以独立地弹性伸缩,进而实现资源的高效利用。
实时分析:支持批量的数据导入,同时支持流数据处理,流批一体化,实现实时分析。
高并发:支持通过扩容来线性扩展写入和查询的并发量。
Q:最后有什么话想对社区的小伙伴说呢?
开源社区跨越了公司的界限,来自不同公司的工程师们一起努力让一个项目变得更好,这是一件很有趣的事情。可能和一些人从未谋面,却神交已久。
开源模式已经逐渐成为云计算、大数据等领域的主流技术模式,但是任何开源项目的发展过程都不会一路坦途,可能有荆棘、有泥泞。道阻且长,行则将至,我们坚信前途是光明的,但道路一定不会平坦。回顾开源发展的这些年,众多项目都已经取得成功,它们的开源之路值得我们研究和学习。一个健康、多样、包容的开源社区,一定可以滋养出有温度的开源项目。
最后,祝愿 Apache Doris 社区发展越来越好。
写在最后
自从加入小米 Doris 团队后,魏祚就一直在参与 Apache Doris 社区的建设,对 Doris Compaction、Stream Load 等功能做了大量的开发和优化。在 2021 年第二季度,经过 Apache Doris PPMC (孵化器项目管理委员会)的推荐和投票,魏祚正式成为 Apache Doris Committer ,在此也向魏祚一直以来对 Apache Doris 作出的诸多贡献表示感谢。
我们非常高兴地看到, Apache Doris 能给用户所在公司的业务带来帮助、用户又能从业务中沉淀出需求和代码回馈社区、个人也能在这个过程中获得宝贵的成长,这是多么令人愉悦的事情!
与此同时,正如魏祚所言,开源社区跨越了公司的界限,让来自不同公司、不同地域、不同行业的人可以聚集在一起,一同为了同一个项目和目标奋斗,虽未谋面、神交已久。这也是开源社区最大的魅力所在,我们也期待有更多的小伙伴加入社区,跟我们一道,把 Apache Doris 打造成一个世界顶级的分析型数据库项目,也让 Apache Doris 社区更加开放、包容、有温度。
最后打个招聘广告
小米 Doris 团队主要负责 Apache Doris 的研发、优化和运维,致力于为小米集团提供可靠的数据存储服务和高效的分析查询服务。欢迎热爱开源、有大数据系统内核研发经验的同学加入我们,简历可以发送到 weizuo@xiaomi.com。
从NoSQL到Lakehouse,Apache Doris的13年技术演进之路
深度解析|Apache Doris 索引机制解析
深度解析|Apache Doris Stream Load原理解析
欢迎扫码关注:
Apache Doris(incubating)官方公众号
相关链接:
Apache Doris官方网站:
http://doris.incubator.apache.org
Apache Doris Github:
https://github.com/apache/incubator-doris
Apache Doris 开发者邮件组:
dev@doris.apache.org