在刚刚以前的 Doris Summit Asia 2023 峰会上,Apache Doris PMC 成员、飞轮科技技术副总裁衣国垒带来了“与立异者同行”的主题讲演,回想了 Apache Doris 在以前一年所获得的技术打破与社区打开,从头考虑了在面临海量数据实时分析上的应战与机会,全面介绍了 Apache Doris 在未来的迭代计划与演进方向。
以下为衣国垒在峰会上的讲演节选,以衣国垒第一人称叙说,经修改。
非常快乐可以看到这么多朋友共聚一堂,现场简直济济一堂。我也信赖,相同有许多朋友在线上观看峰会直播,跨过空间的距离,与我们同享此时。
本年的主题是「与立异者同行」,按照惯例往往在开场需求对主题进行论说,不过我希望把这一环节放在最终,希望我们能跟随我的节奏。信赖在今天的同享完毕后,我们会对这一主题有着更加深入的知道。
Apache Doris in 2023
01 从“全面进化”到“里程碑式的跨过”
回想 Apache Doris 以前的打开进程,假如用一个关键词来描述 Apache Doris 在以前的 2022 年所获得的种种收成,我们信赖是“厚积而薄发后的全面进化”—— 在 2022 年所发布的版别中,我们全面启用了向量化实行引擎、结束了主键模型上 Merge-on-Write 数据更新形式、引入共同的数据湖对接结构 Multi-Catalog 以及毫秒级的 Schema Change 等重磅特性,在功用、安稳性、易用性等获得了全面进化。
而关于即将以前的 2023 年,我们迎来了具有里程碑意义的 2.0 版别。从贡献者和 Commits 数据可以看到,2.0 版别合入的 PR 逾越 4100 个,比 1.2 版别增加了 70%、比上一年同期发布的 1.1 版别更是增加了近 10 倍,参加这一版别开发的贡献者数量达 275 之多,这一版别的发布也标志着我们结束了“里程碑式的跨过”:
- 引入自适应的并行实行模型和全新查询优化器,盲测功用进步 10 倍,多表相关进步 13 倍,单表场景进步 10 倍、高并发点查询进步 20 倍;
- 从报表和 Ad-hoc 等典型 OLAP 场景拓展到湖仓一体、高并发数据服务以及日志检索与分析,支撑更共同多样的分析场景;
- 支撑实时数据高吞吐写入、秒级时延,对各类数据更新都有完备的支撑,构建更高效易用且安稳的实时数据处理和分析链路;
02 全球最生动的开源大数据项目之一!
而在社区生态方面,Apache Doris 社区相同也更加繁荣,从开发者规划和开发者生动度指标上可见:
- 在 GitHub 上 Apache Doris 现已收成了逾越 9800 个 Star,与上一年同期相比增加近 70%,且保持持续的增加态势;
- 总的贡献者规划现已增加至近 580 位,每周都会有许多新面孔初步参加社区贡献;
- 平均每月的生动贡献者已安稳在 120 人左右,已大幅逾越全球闻名的开源大数据项目,包括 Spark、Elasticsearch、Trino、Druid 等;
- 这些贡献者们每周都会为 Apache Doris 贡献逾越 160 个PR,一同社区也建立了更加成熟安稳的 CR 流水线,每个合入的代码都会通过 3000 的检验用例,这也使得社区以极快速度迭代的一同,安稳性也得以保证;
这一系列数字无不说明,Apache Doris 现在现已成为全球最生动的开源大数据项目之一。
除此以外,我们也看到贡献者来源更加多元化,广泛散布于国内的数据库独角兽企业和很多一线互联网公司,我们也看到阿里云、腾讯云、华为云、百度智能云、天翼云以及火山引擎等顶尖云厂商也纷繁投入社区共建,并供应了根据 Apache Doris 的云上数仓保管服务,给予开源用户更多选择。
03 开源实时数据仓库领域的事实标准!
在技术加速迭代的一同,我们也看到有越来越多的用户初步选择信赖 Apache Doris,社区现已集合了逾越 30000 名数据库以及大数据相关领域的工程师,享受由 Apache Doris 带来的极致分析体验。
在以前许多社区用户的印象中,Apache Doris 更多是被互联网企业所运用,例如百度、美团、小米、京东、腾讯等互联网一线企业。而现如今所掩盖的工作领域已越来越广泛,不论是金融、政企、电信、制作亦或是交通、物流、快速消费品工作等,都有着许多企业在其核心分析业务中运用 Apache Doris。
在此我很快乐地宣告,到现在 Apache Doris 在全球规模的用户规划现已逾越了 4000 家!这 4000 多家企业用户中,绝大多数都与我们有着直接的触摸,不论是反应需求、参加检验、提交代码或是同享实践阅历,都在以他们的办法回馈和贡献社区。他们中的许多也参加了今天的峰会同享,我们也等候他们真实业务场景的阅历收成能为更多人带来启示。
在如此庞大的用户规划下,Apache Doris 已成为各行各业用户在运用实时数据仓库的首选,成为开源实时数据仓库领域的事实标准!
我们怎样应对实时分析的应战
从 Apache Doris 诞生之初,就一贯致力于处理人们海量数据实时分析的难题。而从以前版别的打开条理中,我们相同可以明晰感触到,为了更好地应对用户在真实业务场景中的应战,Apache Doris 在朝着实时分析、融合共同和云原生这三大趋势上持续演进,这也是我们在 2023 年聚集的开发方向;
- 实时分析:在大规划实时数据上结束极致的查询功用,既包括了数据的高吞吐实时写入和实时更新、也包括了更低的查询分析时延;
- 融合共同:在一套系统中供应对多种分析负载的支撑、简化凌乱架构带来的运维运用本钱,除了持续加强以前 Apache Doris 一贯比较拿手的报表分析和即席查询外,湖仓联邦分析、日志检索分析、ETL/ELT 的查询加速以及高并发 Data Serving 等分析场景也是重要的打破方向;
- 云原生化:面向云核算基础设备进行改造,运用云的极致弹性下降存储和核算本钱,支撑迁移到 K8s 容器等更多环境中进行安置及运转。
01 极致的查询功用
开始我们也曾提到过,在 Apache Doris 2.0 版别中我们结束了盲测功用 10 倍以上的进步,这其间最重要的部分在于 CBO 查询优化器和自适应的 Pipeline 并行实行模型。
CBO 查询优化器:以前 Apache Doris 多服务于在线报表业务,这些场景往往是将数据打平存储进宽表中以应对分析,即使存在多表相关往往也较为简略,因而发挥功用的关键在于扫描和聚合的功率。而当越来越多用户根据 Apache Doris 进行凌乱核算或 ELT/ETL 批量数据处理时,大宽表或许预聚合表这种空间换时间的办法很难发挥作用,需求人工介入进行调优并改写 SQL ,查询功用遭受到应战。为此我们花费了许多的时间进行了查询优化器的重构,并在 Apache Doris 2.0 版别中正式发布。在面临数千上万行的凌乱 SQL 或许数十张表的相关核算时,CBO 优化器可以生成更高效的 Query Plan 并进步查询功用,减少因人工调优带来的人力消耗和心智本钱。
Pipeline 并行实行模型:以前版别中在建议 Query 时 BE 实行并发度需求进行手艺调整,相同也需求人工介入,并且大小查询在同一个集群实行时会遭受资源抢占问题。为此我们引入了 Pipeline 实行模型作为查询实行引擎,系统自动调整实行并行度,并可以保证大小查询的安稳实行,进步了 Apache Doris 关于 CPU 的运用功率,因而在混合负载场景下查询功用和安稳性都得到了全面进步。
与此一同,在 Apache Doris 2.0.0 版别我们引入了全新的队伍混合存储以及行级 Cache,使得单次读取整行数据时功率更高、大大减少磁盘拜访次数,一同引入了点查询短途径优化、越过实行引擎并直接运用快速高效的读途径来检索所需的数据,并引入了预处理句子复用实行 SQL 解析来减少 FE 开支,在并发才干上结束了数量级的进步。
面向高并发 Data Serving 场景,结束了单节点 30000 QPS 的并发表现,较以前版别点查询并发才干进步超 20 倍。
在多维度检索场景中,我们相同引入了倒排索引来进步功用,在关键字迷糊查询、等值查询和规模查询等场景中均获得了明显的查询功用和并发才干进步。
02 实时写入与更新
导入功用优化:聚集于实时分析,我们在以前的几个版别中在不断增强实时分析才干,其间端到端的数据实时写入才干是优化的重要方向,在 Apache Doris 2.0 版别中,我们进一步强化了这一才干。通过 Memtable 并行下刷、单副本导入等优化,使实时导入功用获得 2-8 倍的进步。
Merge-on-Write:Unique Key 主键模型的 Merge-on-Write 数据更新形式开始是在 Apache Doris 1.2 版别中引入,而在 Apache Doris 2.0 版别中这一才干得到进一步优化,功用安稳性得到大幅进步,并通过写入功用的优化结束了单节点 40w 行每秒 Upsert 操作的峰值写入吞吐,一同引入了数据的相关更新以及部排列更新,结束了对各类更新操作的无缺支撑。
03 更多分析场景
湖仓一体:在 Apache Doris 1.2 版别中我们引入了 Multi-Catalog 功用,支撑了多种异构数据源的元数据自动映射与同步,结束了便捷的元数据和数据打通。在 2.0.0 版别中,我们进一步对数据联邦分析才干进行了加强,引入了更多数据源,并针对用户的实践生产环境做了许多功用优化,在真实作业负载情况下查询功用得到大幅进步。这一结构也帮助我们可以更好进行跨源的数据同步,只需求简略的 insert into select 即可结束数据快速写入 Doris 中。
半结构化数据分析与日志检索分析:在 Apache Doris 2.0.0 版别中我们供应了原生的半结构化数据支撑,在已有的 JSON、Array 基础之上增加了凌乱类型 Map,并根据 Light Schema Change 功用结束了 Schema Evolution。与此一同,2.0.0 版别新引入的倒排索引和高功用文本分析算法全面加强了 Apache Doris 在日志检索分析场景的才干,可以支撑更高效的任意维度分析和全文检索。结合以前在大规划数据写入和低本钱存储等方面的优势,相关于业界常见的日志分析处理计划,根据 Apache Doris 构建的新一代日志检索分析途径结束了 10 倍以上的性价比进步。
更精细化的多租户与资源处理计划:当单个集群应对多种分析负载时,随之而来的问题即怎样保证相互之间的资源抢占,为此在 2.0 版别中我们引入了资源阻隔计划,通过对 Workload 进行分组处理,以保证内存和 CPU 资源的活络调配和管控,此外我们还引入了查询排队的功用,在创建 Workload Group 时可以设置最大查询数,超出最大并发的查询将会进行行列中等候实行,以此来缓解高负载下系统的压力。
04 低本钱与高可用
降存储本钱:在存储方面,冷热数据往往面临不同频次的查询和响应速度要求,因而通常可以将冷数据存储在本钱更低的存储介质中。因而在 2.0 版别中推出了冷热数据分层功用,冷热数据分层功用使 Apache Doris 可以将冷数据下沉到存储本钱更加低价的目标存储中,一同冷数据在目标存储上的保存办法也从多副本变为单副本,存储本钱进一步降至原先的三分之一,一同也减少了因存储附加的核算资源本钱和网络开支本钱。通过实践测算,存储本钱最高可以下降逾越 70%。
支撑安置在公有云/私有云/K8s:面临更多用户在公有云、私有云以及 K8s 等环境的安置要求,我们开发了 K8s Operator,可以结束对 FE、BE以及 Compute Node、Broker 等全部节点的安置、扩缩容、健康检查等一系列运维作业,此外还支撑对 Compute Node 节点 Auto Scaling ,根据自机器的负载进行自动扩容。这一功用现在现已在社区用户中大规划试用,并将在后续的版别中正式发布出来。
结束跨集群拷贝:在 Apache Doris 2.0.0 版别中,我们相同引入 CCR 的功用在库/表级别将源集群的数据改动同步到目标集群,可以更好结束读写负载分别以及多机房备份,并可以更好支撑不同场景的跨集群拷贝和灾备需求。
走向实时分析的下一步
回想完在 2023 年的发展后,承前而启后,该聊聊正在做以及未来即将要做的事情。
定坐落实时数据仓库,后续 Apache Doris 社区仍会持续据守实时分析、融合共同及云原生化这三大方向不变,每一方向都有许多有意义的作业在连续打开中。
01 更快的分析功用与更实时的数据写入及更新
查询引擎方面,在即将发布的 2.1 版别中,CBO 查询优化器将结束全自动的核算信息搜集,并供应丰厚的 Hint 语法,在优化器规则失效的时分可以支撑手动调整规则,我们也将会发布 TPC-DS 的功用检验陈述。查询算子落盘和多表物化视图是社区用户呼声已久的功用,也将于 2.1 版别加入进来,一同我们还将引入 Union All 算子并行实行来进一步加速 ETL 操作的实行功用,后续用户在 Apache Doris 进行大批量数据处理将会实行得更快更安稳更简易。我们还会引入新的 Join 算法,将多表 Join 功用进一步至之前的两倍。
实时数据写入方面,我们将对全部数据写入的语义进行共同,无论是关系型数据库、数据流、本地文件或许数据湖的数据文件,关于 Apache Doris 而言都将共同具象为关系表、可以通过 insert into 的共同语义来结束数据写入。一同我们还将简化数据写入的链路,通过内置的 Job 调度来实行数据写入,防止引入第三方的数据同步组件。我们将引入服务端攒批机制,在上游数据高频写入时通过服务端攒批来防止小文件吞并问题、下降数据库的写入压力。
实时数据更新方面,Merge-on-Write 形式将会默许敞开,以此结束任意列的活络更新,后续将根据 Merge-on-Write 结束全部数据模型的共同,减少用户在各种数据模型上的选择。
在可观测性方面,我们将为用户供应全新的 Profile 便于用户定位算子实行情况,一同支撑查询任务的进度动态展示,并可以集成至 Doris Manager 中以可视化的办法展示,这部分功用现已开发组织稳当、在 2.1 版别中即将上线。
02 更多查询分析场景的共同
在湖仓一体场景上,我们会充分结合多表物化视图与内置 Job 调度的才干,将物化视图拓展到数据湖的多种数据源上,无需任何其他组件、依托自身调度才干即可结束从数据湖到数据仓库的 ETL 作业以及数仓分层建模。在 2.0 版别中我们现已结束了对 JDBC 数据源的写回操作,后续对数据的写入将会拓展到 Iceberg、Hudi、Paimon 等,结束数据查询分析的更无缺闭环。
除了读取更多数据源的数据之外,Apache Doris 也在打通被外部拜访的数据通道。现在 Doris 对外输出数据的接口采取了 MySQL 连接协议,在应对大规划数据读取或许数据科学场景时(例如 Pandas 之类的数据科学引擎),MySQL 协议的吞吐成为了系统瓶颈,因而在后续版别中我们引入了根据 Arrow Flight 的高速数据读取接口,直接通过 BE 将数据进行传输,在实践检验进程中数据吞吐功用较以前进步了逾越 100 倍。
在半结构化数据分析和日志分析场景中,我们会增加倒排索引对更加凌乱类型的支撑,包括关于 Array、Map、GEO 等凌乱类型。一同应对日志场景对存储字段 Schema Less 的需求,我们会在 2.1 版别中引入 Variant 数据类型,可以支撑任意类型、任意形状的 JSON 格式文档数据,可以支撑自动动态地处理列增加或类型改动,完全不需求繁琐的 DDL 操作以及 Schema Change 操作。
在负载处理方面,我们仍会持续探求活络的混合负载处理, 支撑通过SQL 来创建和处理Workload Group 并调整资源配置,保证负载阻隔性的一同结束资源运用率的最大化。
03 云原生和存算分别
在之前的文章中我们曾介绍到 SelectDB Cloud 存算分别版别将会集入社区,但代码结构收拾、兼容性改造以及合入的作业量逾越我们预期,好在这一作业现已进入结尾。在 Apache Doris 2.1 版别中全部代码结构的调整将会结束,估计在 2.2 版别中将会面向社区全面可用,到时我们都可以感触全新云原生架构带来的极致弹性,敬请等候。
与立异者同行
在讲演的最终,我想介绍下本次峰会筹备的暗地故事。我们一贯在考虑该传达什么样的理念给全部社区用户,但一贯没有找到特别精准的表达。
在回想了 Apache Doris 从诞生至今这十年的打开进程后,我们想到,这不便是一个叙述技术立异的故事么?
在 SQL on Hadoop 的年代,Doris 选择独立于 Hadoop 生态、不依赖 HDFS 进行数据存储、不依赖 Zookeeper 进行散布式管控,任一进程都可结束在线扩缩容并保证高可用;面临语法各异的大数据组件中,Doris 选择支撑标准 SQL 并兼容 MySQL 协议,极大简化了用户的运用门槛;根据自研的预聚合存储引擎、物化视图和 MPP 实行结构,充分运用多机多核的并行核算才干,结束了大规划数据上的极速查询功用……正是由于坚持技术立异才使得 Apache Doris 的生命力更加旺盛。
到现如今,我们在 Apache Doris 中引入了许多的功用立异点,倒排索引、队伍混存、毫秒级在线 Schema Change、Merge-on-Write 写时吞并、Variant 数据类型 …… 每一步都是在持续引领技术立异。
所以这儿的「与立异者同行」有几层含义:
- 我们希望与酷爱开源技术的开源贡献者们一同,以技术立异为数据国际带来些改动;
- 我们希望把认可并信赖 Apache Doris 的用户代表集合起来,以真实场景中的运用立异为更多人带来启示;
- 我们也希望与上下游合作伙伴、云服务厂商一同,以产品立异为工作注入新的活力,为全部用户带来新的选择。
选择 Apache Doris,便是选择与很多立异者同行。
在最终,我们也问好每一位追风赶月的立异者们,也等候与更多立异者与一同前行,探求数据国际的更多可能性。