Doris 毕业成为 Apache 顶级项目,独家专访百度 PALO 团队
共 9039字,需浏览 19分钟
·
2022-06-18 01:46
采访整理:SegmentFault 思否
采访嘉宾:百度 PALO 团队(杨政国、缪翎、李昊鹏、朱小力、龚政、张志强、仲毅、张东进等)
2022 年 6 月 16 日,Apache 软件基金会发表博文,宣布 Doris 正式毕业,正式成为 Apache 顶级项目(TLP)。
相关阅读:
https://blogs.apache.org/foundation/entry/the-apache-software-foundation-announces81
从 2008 年诞生到今天,Doris 已经走过了十四个年头。这十四年间,Doris 经历了诞生、推广、发展、开源、捐赠、繁荣,成长的旅程中也历经了诸多艰辛和波折。
SegmentFault 思否独家专访了百度 PALO 团队,为你呈现这背后不为人知的故事与曲折。
以下内容整理自访谈实录。
为数据分析而生,Doris 的“前世今生”
SegmentFault:
回顾 Doris 14 年发展史,Doris 的都经历了哪几个项目里程碑?
百度 PALO 团队:
说起 Doris 的历史,它最初诞生于百度,目的是解决当时百度内部高并发,高实时的在线报表需求,不觉间 Doris 已经走过了十四年。
2008 年,Doris 在百度诞生,定位为高性能分析型数据库,大幅提升了百度凤巢业务的数据分析时效性。
2009 年,Doris 开始支持百度内部其他报表系统,并助力百度统计成为国内领先的中文网站分析工具。
2012 年,Doris 成长为百度首个公司级 OLAP 分析平台并正式改名 PALO(OLAP 的反写)。
2013 年,PALO 升级新一代 MPP 分布式架构及高性能数据模型,各项核心技术指标大幅提升。
2017 年,PALO 正式对外开源。
2018 年,百度将 PALO 的核心引擎捐赠给 Apache 软件基金会,并命名为 Apache Doris,百度 PALO 团队开始全力推进 Doris 社区发展。
2020 年,在百度 PALO 团队与社区伙伴的共同努力下,Apache Doris 社区走上发展快车道。
2021 年,Doris 各项核心能力大幅增强,行业影响力进一步提升,成为中国信通院 2021 年“OSCAR 尖峰开源项目及社区”,获得“首批可信开源社区共同体(TWOS)”正式成员认证。
2022 年,百度正式完成商标捐赠,推进 Apache Doris 完成毕业,成为 Apache 软件基金会顶级项目。
SegmentFault:
我们看到 Doris 曾经改名为 PALO(OLAP 的反写),这个背后有着什么特别的寓意吗?
百度 PALO 团队:
2008 年,诞生之初,在百度内部被命名为 Doris,大约在 2012-2013 年,Doris 进行过一次大的架构改版升级,契合当时定位“解决高并发,高实时的 OLAP 场景”,于是团队将“OLAP”进行反写,“PALO” 就此诞生,最终 PALO 也成了百度基于 Apache Doris 构建的商业化数仓产品名字。
2018 年百度 PALO 团队和百度负责开源的同事一起携手将 PALO 项目捐赠给 Apache 软件基金会(ASF),鉴于品牌及商标等问题的考量,最终把开源项目定名为 Apache Doris ,并把 Doris 的品牌和商标一并捐给了 ASF,正式成为 ASF 孵化项目。
SegmentFault:
作为曾经百度内部的高性能分析型数据库,为什么会考虑把产品开源?
百度 PALO 团队:
Doris 在 13 年设计新版时,已经在百度内部得到了复杂场景和高并发、大压力的验证,我们希望未来能将它开源出去,让更多的人用到并获益,同时希望通过开源的方式加速其成长。所以,在新版设计的时候,我们去掉了百度内部闭源库及内部系统的依赖,让整个系统能够独立、自由运作。百度 PALO 团队坚信未来基础设施软件必然会走开源路线,只有开源才能保持产品活力和迭代速度。
开源之初,我们的目标就是将 Doris 建设成为全球最优秀的开源数据仓库之一,所以,我们选择了在 Apache 软件基金会进行开源。众所周知,Apache 软件基金会在大数据领域的项目都极具影响力,比如 Hadoop 和 Spark 等大家耳熟能详的项目。
从开源到现在,Apache Doris 的 Star 和 Contributor 数量都有了数倍,甚至数十倍的增长,尤其是从 2020 年开始,社区核心指标增长速度明显加快,这也从侧面反应出,外界对 Apache Doris 项目的关注度和认可度在不断增加。
下图是来自 Star History 的数据,可以看到 Apache Doris 从最初的 240 个Star,一路走来,到目前 Star 数已经达到 4500 个。从图上也可以看到近两年,增长趋势明显加快。
下图是来自 api7 的数据,可以看到 Apache Doris Contributor 的数量从最初的 10 个左右,增长到现在的 330+,增长趋势也在逐步加快,月度活跃贡献者的数量已经达到 80 个。
SegmentFault:
近两年中国开源资本热,在你们看来什么样的软件适合开源,什么样的软件适合闭源发展?
百度 PALO 团队:
“开源”这两年的确受到了资本热捧,加之国家十四五规划对“开源”的加持,热度一再飙升。尤其是 Doris 所在的赛道,更是被称为“黄金赛道”,这两年前前后后诞生了十几家创业公司,真可谓“雨后春笋,俯拾皆是”。
“资本”对开源的追捧和青睐,绝对不是因为“情怀”更不是因为“喜好”,他们更关注的是“开源”背后的“商业化”前景。资本对开源的助力,是资源的加持,这个加持可以让开源项目发展更快,产品成熟更早。而基于开源而生的商业化产品才是其真正价值所在,要想持续得到资本“青睐”,开源背后的商业化产品,一定要切中付费用户的需求和痛点,做出跟开源产品的差异化特色和竞争力,且要保持和开源产品良好的共生关系。
“开源”讲求的是共建共享,一群人可以走的更远,所以,我们认为那些“投入大,转化周期长”的产品是比较适合开源的。Apache Doris 就是在这样的背景下采取了开源路线,也正是通过开源,Doris 项目获得了远超单个公司的投入力度,以及大量用户的使用和打磨,最终,也使得 Doris 的产品力和影响力得到了长足的发展。
SegmentFault:
从内部工具到极速简用的 MPP 开源数据库,在产品层面 Doris 经历了怎样的变化?
百度 PALO 团队:
Doris 的产品定位叫做“为数据分析而生”,Doris 在产品层面的变化是伴随着数据分析的场景变化而一起演进的,经历了四个发展阶段:
第一阶段是商业智能分析,注重通过数据来对业务进行描述与分析,这也是 Doris 诞生的阶段。2008 年,Doris 在百度凤巢诞生,本身就是为了解决报表问题,到了 2012 年,Doris 已经成为百度的首个公司级 OLAP 平台,承接整个公司的报表需求;
第二阶段是海量数据分析,也就是在企业信息化和数字化普及之后,数据量大幅增加,数据库要能够处理相比之前十倍百倍的数据。2013 年,Doris 完成了 MPP 引擎改造,利用分布式能力,大幅度提升数据处理能力与效率,所能处理的数据量级提升到 TB 至 PB 级别,查询时效性也有了一定提升;
第三阶段是实时数据分析,在这一阶段中,企业更加注重实时性和预测性分析,期望在海量数据下加速传统 T+1 模式的分析效率,获得分钟级甚至秒级的分析能力,这也正是近些年来 Doris 所解决的用户核心痛点。自 2017 年开源至今,Doris 通过对存储引擎、查询引擎、查询优化器等各个核心模块的优化,不断增强性能表现,尤其是近期的向量化引擎,更是把性能全面加速了 5-10 倍,真正实现海量数据下的毫秒级查询体验;
第四阶段是全民数据分析,在这一阶段中,数据分析不再是数仓维护人员和数据分析师的“专利”,企业中的许多角色都有着自主数据分析的需求和能力,所有人都期望能够快速地分析、使用数据,获取价值,这也是当前 Doris 正在处理和应对的需求:一方面在查询性能方面,Doris 要能够支持更高并发与吞吐,提供更加多样化的查询能力,以应对企业“全民数据分析”的场景需求;另一方面,Doris 更要提供低成本、低门槛的查询分析手段,比如进一步提升自运维能力,提供开箱即用的数据分析体验,帮助用户更加关注业务与数据本身,而无需耗费过多精力在系统底层的部署运维工作。这一点在百度的商业版本 Palo 中有着更多体现,我们充分利用云的弹性能力和容器化能力,为用户提供近乎于 0 运维成本的集群托管服务,不论是存储计算资源扩缩容,还是云原生化的监控调优能力,都在帮助用户以极低地成本与门槛,向全民分析时代飞速跃进。
木桶效应,Doris 强在每一块木板都很均衡
SegmentFault:
Doris 在性能,功能丰富度和易用性上表现都非常出色,那么在您看来 Doris 最强的竞争力是什么?
百度 PALO 团队:
Apache Doris 最强的竞争力在于能够适应全场景的业务需求,无论是聚合、明细、Ad-Hoc、单表、多表等各种数据分析的场景,Doris 都能比较好的支持。其次 Doris 在性能,功能丰富度和易用性上表现都非常出色,在性能上 Doris 经过多年打磨,在各类场景都有极佳的性能表现,尤其是近期向量化版本上线之后,性能又有了数倍的提升。Doris 集群能够非常方便地实现动态扩缩容,当节点出现故障时数据自动迁移,这些都不依赖外部系统,也不会影响上层业务系统,集群运维非常简单。另外 Doris 支持非常丰富的标准 SQL 语法,能够完成各类复杂查询任务。除了传统的 AP 场景外,Doris 也提供高性能流式写入能力及在线高并发访问能力,可构建现代 HSAP 架构的数据服务。因此 Doris 是一个非常全面、成熟和易用的系统,就像一个木桶,Doris 的每个一块木板都很均衡,装的水自然比较多。
SegmentFault:
常常有人讨论性能与易用性的孰轻孰重,Doris 是如何平衡性能与易用性的关系的?
百度 PALO 团队:
性能是 Apache Doris 内核最重要的指标之一,也是业界对数据库类产品进行评价的重要标准。所以,Doris 对性能的追逐一直没有停止过,我们正在持续研发的向量化执行引擎和新的优化器都是性能提升的重要手段。同时简单、易用以及稳定、可靠都是 Doris 持续关注的重点,Doris 通过极简的运维和丰富的功能被大家熟知和认可。
极致的性能可以帮用户应对复杂而苛刻的业务场景;简单、易用可以让整个系统搭建成本更低,运维更高效。所以性能和易用性二者并不冲突,更不是相互对立,我们在内核层面追求极致的性能,并不影响我们在通过精巧的设计,将简单好用的功能提供给用户,我们会在用户能够感知的地方做大量的工作,使每一个特性都能满足不同层次用户的需求。
SegmentFault:
目前 Doris 最核心解决了客户的哪些问题?比较常见应用场景是什么?有没有成熟的商业用例?
百度 PALO 团队:
Doris 最核心地解决了客户对于海量数据的高时效性分析需求,Doris 通过自身产品能力的建设,在数据分析环节做到了性能更加高效、功能更加全面、运维更加简单、生态更加丰富。
结合以往的经验,我们总结了 Doris 的四大应用场景:
传统数仓加速:在原有的传统的单机式数据库或者离线数据仓库基础上,增加高性能分析型数据库能力,加速传统数仓的查询能力。
实时数仓构建:构建以实时数据为主的数据仓库,支持端到端的实时数据分析,包括高时效的实时数据写入与高性能的实时数据分析。
多源联邦查询:提供跨多数据源的统一查询入口,以统一的一站式查询能力满足业务人员多元化的查询需求。
交互式数据分析及在线数据服务:提供高并发与高时效的在线查询体验,以极低的建设成本,高效的支持业务侧报表、大屏或即席查询等需求。
百度基于 Apache Doris 所构建的商业化数据仓库产品 Palo 自 2017 年 对外提供服务以来,在各行业均有落地实践,积累了大量商业用例。
截至目前,已有近百家企业在使用 Palo 商业服务。比如我们在某头部金融支付公司项目中,重点加强建设了 Palo 的多租户能力,满足企业各省、市子公司的数据与资源隔离需求;在某头部声学元件制造商项目中,充分利用了 Palo 在时序性数据方面的写入和查询能力,支持生产车间的设备数据分析与监控;在与某互联网头部问答社区的合作中,我们针对客户的广告与画像需求,对 bitmap 及相关用法做了重点优化,为客户内容数据中台建设提供了极大支持。
SegmentFault:
近两年也有一些基于 Apache Doris 的外部的商业公司开始崭露头角,PALO 团队怎么看开源和商业的关系?又怎样看待这之间的竞争与合作?
百度 PALO 团队:
我们很高兴的看到有越来越多的公司开始参与 Apache Doris 项目的建设,这说明项目得到了用户、社区和资本市场的认可,可见,最初我们将 Doris 捐赠给 Apache 软件基金会是非常正确的选择。未来,随着社区的持续发展,我们希望还会有越来越多的公司能够加入,跟百度 PALO 携手共建一个繁荣和强大的开源软件生态。
当然,我们也看到,过去确实有一些商业驱动的不良行为对社区带来了损害。因此,作为 Apache Doris 的主创团队,我们会坚定的维护好社区的秩序,确保社区的参与者都能够遵守 Apache Way 行为规范,从而促进社区的健康可持续发展。
当前,大量底层技术产品都采用开源模式,客户也越来越认可开源的模式,“是否开源”正在成为很多客户进行商业决策的重要依据;另一方面,开源社区能够帮助我们构建坚实的用户基础,以及广泛和正面的品牌认知,从而促进我们商业化的发展。所以,对于未来的技术产品,开源可能成为必须,这个“必须”不一定损害商业模式,反而会促进商业上的成功。
在“大厂”做开源,收获更多的是“诗”和“远方”
SegmentFault:
Doris 从捐赠、孵化到毕业也经历了接近 4 年的时间,在这期间团队有没有遇到过一些困难,是如何解决的?对于刚刚开源还在孵化中的项目有没有一些建议?
百度 PALO 团队:
Apache Doris 从捐赠到今天顺利毕业已经接近 4 年,这期间的确遇到了非常多的曲折,在这里着重跟大家分享几点。
一是团队内部价值呈现和资源冲突的问题。开源让 Doris 项目得到了快速发展,同时也给团队带来了额外工作量,团队需要维护两套代码(开源产品 Doris 和商业化产品 Palo ),团队需要平衡在两个产品上的投入力度,同时还要跟公司讲清楚这两部分工作的价值及关系,直接地、间接地、甚至是隐藏在背后的无形价值。
其实这个问题的解决,最重要的是团队对于“收益”的重新定义,开源的收获,不止是反馈到绩效和晋升上,它也会帮助团队构建在社区乃至行业中的影响力。这个过程带来的成长,要比在一个公司中开发闭源产品来的更快、更多——正所谓:“海阔凭鱼跃,天高任鸟飞”,开源给团队带来了“海”和“天”。
在做好开源的同时,团队也要规划好商业产品的发展,给公司带来商业收益,并且要把开源对商业化的正向作用向公司呈现,这样就会持续得到公司的支持,形成正循环。
第二个困难是由于没有经验,我们走了一些弯路。最初大家对开源的认知有限,一开始什么都缺,什么都要从头开始摸索,包括物料准备,包括意识和经验的积累,都是跌跌撞撞,一步步摸索过来的。从 Apache Doris 官网的建设,到官方公众号的运营,再到渠道生态体系的构建,以及开源和商业化关系的梳理等等,我们经历了诸多艰辛与挑战,还好大家一起坚持下来了。
前期我们在内容建设上,稍不留神,就容易越过“开源”的界限,掺杂“商业化”气息,还好有 Apache 导师随时帮我们指出问题,及时纠正。
这一点,我们团队给出的建议是,项目一开始就想清楚团队搞开源的最终目的是什么,“以终为始”,这样路径执行上就不会有太多摇摆,资源投入也不会断档。同时要把开源和商业化严格区分开来(包括产品形态和运营模式),尽量在社区中不要掺杂私心,多跟项目导师沟通,他们有经验,而且比较中立,听他们的,不会错。
第三个困难是一些外部商业因素对项目的干扰。作为一个 Apache 的开源项目,Doris 并不排斥商业公司的使用和参与,然而,一些纯商业利益驱动的不良行为并不符合 Apache Way,会对社区带来损害。因此,对于正在考虑开源孵化的项目,前期除了选好协议及孵化组织外,我们建议还要做好对于项目名字和品牌的保护。像商标注册之类的工作一定要做在前面,如果在孵化过程中遇到侵权等问题,要及时跟项目导师和公司法务沟通,必要时要动用法律手段,以保护社区的健康发展。
SegmentFault:
你们如何理解 The Apache Way 的?
百度 PALO 团队:
关于对 The Apache Way 的理解,可以参考 Sally老师 在 Apache 软件基金会官方微博的一篇文章,有兴趣的可以直接读一下原文:
https://blogs.apache.org/foundation/entry/the-apache-way-to-sustainable
Apache 软件基金会工作的重点,不是生产软件,而是指导产出软件的社区,这个指导方法我们可以理解为就是 Apache Way,它是在实践中不断完善和成长的开源社区发展指导手册,有了它个人或者组织就可以了解大规模开源软件如何在激烈的竞争市场中进行良好运作。
The Apache Way 的核心原则是 “社区大于代码”,它更多强调的是“人”,是“生态”,健康的社区才能孕育优秀的代码,毕竟人才是核心生产力,有了遵从规则的优秀开发者,不愁没有优秀的代码产出。一个健康的社区总能纠正代码的问题,而一个不健康的社区难以保持代码库的正常维护,而 Apache Way 就是保护一个社区在 20 年后还能健康繁荣的“法律框架”,违背它就要接受“惩罚”。
Apache Way 是完全包容、开放、透明和基于共识的。它确保来自商业公司的参与者中立,以防止来自单个公司的不当影响(或控制)。它确保任何具有宝贵贡献的个人都有权获得授权,并且尽管社区成员资格随着时间的推移不可避免地发生变化,但它仍会确保项目有可持续性。
毕业成为顶级项目,Apache Doris 驶向星辰大海
SegmentFault:
从 Apache 孵化器毕业意味着,Apache Doris 将开始新的征程,展望未来,Doris 有怎样的发展规划(社区、产品、商业)?
百度 PALO 团队:
毕业意味着新的开始,也意味着新的责任,我们将一如既往地全力支持和贡献社区,把我们在实践中所收获的产品能力与社区分享,与社区的小伙伴一道将 Apache Doris 建设的更加完善,也让更多人能体验到 Doris 的优秀能力。
在产品技术方面,我们将持续打磨 Doris 的核心能力,保持核心技术指标的领先。其中,在性能方面,我们将全方位的打磨或重构现有的查询层、执行层和存储层等核心组件,尤其是社区呼声最高的向量化和优化器,我们将实现完全的面向列的向量化执行引擎,全面淘汰行存,同时,我们将实现全新的 CBO 优化器以及更加精细和丰富的统计信息,这将把 Doris 的性能进一步推向极致。在稳定性和可观测性方面,我们将重点补齐 Doris 的短板,强化 Doris 的 Profiling、Trouble Shooting、细粒度的资源监测和管控等能力,我们也将会持续将我们在大规模生产环境所遇到的各种稳定性问题及解决方案贡献到社区,进而帮助 Doris 变得更加稳定。我们也将持续完善 Doris 的各项重要功能以及生态对接能力,其中就包括对复杂类型的内置支持、UDF/UDAF 的优化、Hadoop/Spark 生态圈对接能力完善、数据湖和联邦查询能力的强化、管控平台的完善等社区呼声最高的功能,从而帮助 Doris 变得更加强大和易用。除此之外,Doris 仍然有很多值得完善的地方,我们十分愿意倾听用户的心声,并欢迎大家多提 issues,与我们一道帮助 Doris 发展的更好。
在社区建设方面,Apache Doris 已经度过了早期萌芽阶段,正在进入高速发展期。一方面,我们要进一步强化社区的运营投入,让 Doris 能被更多的贡献者、开发者以及用户等所知道,努力构建一个多元、繁荣和国际化的社区;另一方面,随着社区的扩张,以及商业诉求的增长,我们将建立或完善社区的各项规章制度和行为准则,让各方都能在 Apache Way 的指导下参与社区,保障 Doris 社区能够良性和健康的发展。
在商业方面,我们也在围绕 Apache Doris 持续完善我们的商业产品“PALO 数据仓库”。相比开源的 Doris 引擎,PALO 数据仓库将提供大规模生产级的稳定性、完善的企业级特性、易用的管控和访问平台、无感升级等专有特性,用户也将享受到来自原厂资深专家的专业技术支持服务。除此之外,我们全新推出的 PALO Cloud 产品将支持先进的多云原生能力,提供完善的云原生,以及多云和跨云能力,帮助用户拥抱云和多云时代。同时,PALO Cloud 的在离线融合、湖仓融合等能力将帮助用户构建以数据为中心的新一代全场景统一湖仓,为企业提供数据的统一视图、统一访问,真正释放数据的价值,正如 PALO 的寓意那样能够“玩转 OLAP”。
https://blogs.apache.org/foundation/entry/the-apache-software-foundation-announces81 https://doris.apache.org/ https://github.com/apache/incubator-doris