Apache Doris 2.0 如何实现导入性能提
升 2-8 倍
数据导入吞吐是 OLAP 系统性能的重要衡量标准之一,高效的数据导
入能力能够加速数据实时处理和分析的效率。随着 Apache Doris 用户
规模的不断扩大, 越来越多用户对数据导入提出更高的要求,这也为
Apache Doris 的数据导入能力带来了更大的挑战。
为提供快速的数据写入支持,Apache Doris 存储引擎采用了类似 LS
M Tree 结构。在进行数据导入时,数据会先写入 Tablet 对应的 M
emTable 中,MemTable 采用 SkipList 的数据结构。当 MemTabl
e 写满之后,会将其中的数据刷写(Flush)到磁盘。数据从 MemTa
ble 刷写到磁盘的过程分为两个阶段,第一阶段是将 MemTable 中的
行存结构在内存中转换为列存结构,并为每一列生成对应的索引结构;
第二阶段是将转换后的列存结构写入磁盘,生成 Segment 文件。
具体而言,Apache Doris 在导入流程中会把 BE 模块分为上游和下
游,其中上游 BE 对数据的处理分为 Scan 和 Sink 两个步骤:首先
Scan 过程对原始数据进行解析,然后 Sink 过程将数据组织并通过
RPC 分发给下游 BE。当下游 BE 接收数据后,首先在内存结构 Mem
Table 中进行数据攒批,对数据排序、聚合,并最终下刷成数据文件(也
称 Segment 文件)到硬盘上来进行持久化存储。
评论