超详细的 Doris 读写流程(建议收藏~)

本文详细介绍了Doris的写流程,包括Broker Load、Stream Load、Routine Load和Insert Into,以及数据分发流程,强调了DeltaWriter、Memtable和RowsetWriter的作用。在读流程部分,讲解了Init流程、next_block获取数据块的流程和Compaction机制,包括base compaction和cumulative compaction的条件。
摘要由CSDN通过智能技术生成

大家好,我是土哥。今天给大家解读一下doris 的读写流程

写流程

数据导入方式

1. Broker Load

说明

Broker Load是异步方式,支持的数据源取决于Broker进程支持的数据源。

适用场景

(1)源数据在Broker可以访问的存储系统中。

(2)数据量在几十到百GB级别 。

原理

用户在提交导入任务后,FE会生成相应的导入执行计划(plan),BE会执行导入计划将输入导入Doris中,并根据BE的个数和文件的大小,将Plan分给多个BE执行,每个BE导入一部分数据。BE在执行过程中会从Broker拉取数据,在对数据转换之后导入系统。所有BE均完成导入,最终由FE决定导入是否成功。

写入流程

2. Stream Load

说明

Stream Load是一个同步的导入方式,允许用户通过Http访问的方式将CSV格式或JSON格式的数据批量地导入Doris,并返回数据导入的结果。

使用场景

主要适用于导入本地文件,或通过程序导入数据流中的数据。

原理

用户将Stream Load的Http请求提交给FE(在此仅仅提供转发服务),FE会通过 Http 重定向将数据导入请求转发给某一个BE节点,该BE节点将作为本次Stream Load任务的Coordinator。Coordinator负责整个导入作业(负责向Master FE发送事务请求、从FE获取导入执行计划、接收实时数据、分发数据到其他Executor BE节点以及数据导入结束后返回结果给用户)。

写入流程

(1)FE 接收用户的写入请求,并随机选出 BE 作为 Coordinator BE。将用户的请求重定向到这个 BE 上。

(2)Coordinator BE 负责接收用户的数据写入请求,同时请求 FE 生成执行计划并对调度、管理导入任务 LoadJob 和导入事务。

(3)Coordinator BE 调度执行导入计划,执行对数据校验、清理之后。

(4)数据写入到 BE的存储层中。在这个过程中会先写入到内存中,写满一定数据后按照存储层的数据格式写入到物理磁盘上。

3. Routine Load

说明

Routine load 同步的数据导入方式,此功能为用户提供了一种自动从指定数据源进行数据导入的功能。

使用场景

(1)支持用户提交一个常驻的导入任务,通过不断的从指定的数据源读取数据,将数据导入到 Doris 中。目前仅支持通过无认证或者 SSL 认证方式,从 Kakfa 导入的数据。

(2)支持导入的数据类型:文本 和 JSON两种格式.

原理

FE 通过 JobScheduler 将一个导入作业拆分成若干个 Task(经验值一般是和Kafka的Partition数量一致)。每个 Task 负责导入指定的一部分数据。Task 被 TaskScheduler 分配到指定的 BE 上执行。在 BE 上,一个 Task 被视为一个普通的导入任务,通过 Stream Load 的导入方式进行导入。导入结果&#

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值