“社区人物”是Apache Doris社区推出的系列专栏。我们关注每一个为多丽丝做出过贡献的贡献者。我们会定期从为多丽丝做出突出贡献的小伙伴中评选出一位“社区之星”,我们会对这位“社区之星”进行专访。我们希望TA和Doris的故事能被大家听到,希望更多的小伙伴参与到社区建设中来。
第五期,我们采访了Apache Doris Committer和小米OLAP引擎研发工程师佐为,听听他和Doris的故事,以及他在参与开源社区建设过程中的思考。
01
关于你自己
问:请先简单介绍一下你过去的技术经验?
大家好,我是佐为,目前是小米公司OLAP引擎方向的软件RD工程师。
我于2020年7月毕业于Xi交通大学,获得软件工程硕士学位。毕业后加入小米公司,从事OLAP引擎的研发,主要负责Apache Doris的研发、优化和运维。平时的工作也会涉及到HDFS、Hive、Flink等系统。
问:除了OLAP,你还关注哪些技术方向或领域?
我在硕士期间参与了计算机视觉的研究工作,所以平时比较关注机器学习、深度学习等一些人工智能相关技术。
02
关于多丽丝
问:你是怎么知道多丽丝的?
Apache Doris是小米公司使用最广泛的OLAP系统。毕业后,我非常幸运地加入了小米公司的Doris团队。于是我和多丽丝结缘,开始参与多丽丝的研发、优化和运维。
问:你在使用多丽丝时遇到过什么问题或挑战吗?你是怎么解决的?
随着在线集群导入任务的增加,压缩模块的压力会增加,数据版本不能及时合并,影响查询性能。但是,压缩任务本身会消耗机器的CPU和内存资源。过多的压缩会占用过多的机器资源,也会影响查询性能,还可能造成OOM。
要解决这个问题,一方面从业务端入手,规范用户导入操作,尽可能减少数据导入的频率,增加每次导入的数据量,避免高频小数据写入;另一方面,根据不同的业务场景,我们为不同的集群配置不同的压缩参数。为了方便压缩参数的调整,我们还从代码层面进行了优化,支持压缩策略和压缩线程数在运行时的动态调整,避免需要调整参数时重新启动进程。当然,要彻底解决这个问题,还需要进一步提高压实的效率,我以后会在这部分进行投入。
问:除了遇到的问题,还有什么有趣的案例或故事可以分享吗?
最有意思的是,在线集群遇到Bug后,正在发愁怎么解决,发现社区其他人之前已经遇到了同样的问题,而且已经修复了。这样的案例太多了,这里就不一一列举了。这就是开源社区的美妙之处。
问:你认为多丽丝在哪些方面做得更好?哪些方面需要进一步优化?
一个更好的地方
操作和维护非常简单;
它独立于其他系统,对开发人员友好。开发者可以快速部署,直接在Docker容器中启动,完成功能验证;
兼容MySQL协议,使用门槛低,用户可以像使用MySQL一样使用Doris。
需要优化的地方提高压实效率;改善系统监测;
资源的隔离。
问:你有没有尝试向更多人推荐多丽丝?被推荐人对多丽丝的反馈如何?
我会根据小米公司内部一些业务的具体情况,把多丽丝推荐给有合适业务场景的业务方。反馈不错。如果业务场景合适,可以正确使用,一般可以满足用户的需求。
问:你有什么想吐槽多丽丝的吗?
我没什么可抱怨的。我更了解多丽丝。虽然我知道多丽丝还有很多需要优化的地方,但是那些缺点可以很快补上,这并不是一个无法解决的问题。我们需要一些时间,我相信通过社区所有领导者的共同努力,Apache Doris将成为一流的OLAP产品。
03
参与社区活动
问:你是从什么样的机会开始向多丽丝提交PR和投稿代码的?
小米一直有拥抱开源的工程师文化,小米的Doris团队也一直在为Apache Doris社区贡献代码。整个团队的氛围驱使我加入了Doris社区,并向社区提交PR。小米公司有足够的业务量和数据量去发现多丽丝的边界和不足。业务驱使我们开发功能,优化性能,修复bug。然后我们会把代码贡献给Doris社区,同时也会从社区引入其他贡献者的新功能、性能优化和bug修复代码。我们都是开源社区的参与者、贡献者和受益者。
问:后续你会更关注或计划参与哪些议题?
压缩优化。在我们的一些在线业务中,压缩极大地影响了查询性能。如果不及时合并数据版本,极端情况下查询性能可能下降十倍以上。压缩的效率大大提高空。
资源的隔离。在线集群往往有一些大型查询耗时较长,占用机器资源过多,从而影响其他用户的查询性能。
问:作为Apache Doris的提交者,你想与社区用户和开发者分享什么样的体验?
对于社区的普通用户,建议多了解一下多丽丝的底层原理,让他们更清楚的知道如何正确使用多丽丝,如何发挥其优势,避免一些不好的使用方法。比如要避免频繁使用insert来逐个插入数据,否则会给压缩带来很大压力。
对于社区的开发者,建议持续贡献,坚持由易到难的分享。为开源社区做贡献的方式有很多,不仅限于贡献代码。在社区中修改文档、参与社区讨论和分享技术是很重要的。
问:你从参与社区建设中获得了什么?
阿帕奇多丽丝社区非常开放包容,参与社区建设让我收获颇丰。
认识了一群牛逼的技术大佬,为自己的职业发展找到了榜样和目标。你提交的代码可以被社区大佬审核,还可以通过社区和其他公司的工程师交流,大大提高了你的技术能力。
通过参与开源社区的技术分享,我增强了自己的技术影响力。
问:你对多丽丝社区的建设有什么样的建议?建议社区可以出一个与多丽丝表现相关的文档,定量描述多丽丝的边界,比如:多丽丝适合什么场景,不适合什么场景;Doris能为什么样的集群规模和什么样的业务场景提供什么样的查询和导入性能?这可能不是一件容易的事情,因为多丽丝是一个非常复杂的OLAP系统,其使用模式和使用场景也非常复杂。但是,这可以帮助用户了解多丽丝的边界以及如何正确使用多丽丝。
建议社区可以多组织一些线下Meetup,让大家有面对面的技术交流。
04
展望未来
问:你如何看待OLAP发动机未来的技术趋势?
存储分离:支持存储和计算分离,计算资源和存储资源可以独立弹性扩展,实现资源的高效利用。
实时分析:支持批量数据导入、流数据处理以及流与批的集成,实现实时分析。
高并发性:通过容量扩展,支持写和查询并发的线性扩展。
问:最后,你想对社区里的朋友说些什么?
开源社区跨越了公司的界限,来自不同公司的工程师一起努力让一个项目变得更好,这很有趣。可能有些人我没见过,但我和他们的关系很久了。
开源模式逐渐成为云计算、大数据等领域的主流技术模式,但任何开源项目的发展过程都不会一帆风顺,可能会有荆棘和泥淖。我们坚信未来是光明的,但道路不会平坦。回顾开源发展的这些年,很多项目都是成功的,他们的开源之路值得学习和借鉴。一个健康、多元、包容的开源社区,当然可以滋养有温度的开源项目。
最后,祝Apache Doris社区发展越来越好。
写在最后
自加入小米多丽丝团队以来,佐为一直参与Apache多丽丝社区的建设,对多丽丝压缩、流加载等功能做了大量的开发和优化。2021年第二季度,经过阿帕奇多丽丝·PPMC的推荐和投票,佐为正式成为阿帕奇多丽丝委员。在此,我也要感谢佐为对阿帕奇多丽丝的诸多贡献。
我们很高兴看到Apache Doris可以为用户工作的公司的业务带来帮助,用户可以从业务中沉淀需求和代码回馈社区,个人也可以在这个过程中获得有价值的成长。这是多么令人愉快的事情啊!
同时,正如佐为所说,开源社区跨越了公司的界限,让来自不同公司、不同地区、不同行业的人可以聚在一起,为同一个项目和目标共同努力,尽管他们从未谋面,也是很久的朋友。这也是开源社区最大的魅力。我们也期待有更多的小伙伴加入社区,和我们一起把Apache Doris打造成世界级的分析数据库项目,也让Apache Doris社区变得更加开放、包容、有温度。
最后是招聘信息。
小米Doris团队主要负责Apache Doris的RD、优化和运维,致力于为小米集团提供可靠的数据存储服务和高效的分析查询服务。欢迎热爱开源并有大数据系统内核研发经验的同学加入,简历可发至weizuo@xiaomi.com。