操作手册 · 大数据运维

待环境验证

Doris 导入事务、发布超时与批次对账

沿 Stream Load 响应、原始 label、事务提交与可见状态核对未知导入结果,区分过滤问题、发布积压和不安全重放。

Apache Doris大数据监控告警
阅读导引 · 理解后再操作

这篇知识解决什么问题

把客户端结果未知、导入失败和提交后尚未可见分开判断。先用原 label 或 TxnId 追踪事务,再解释行数与业务样本,只有原批次结果及模型重放语义都清楚,才能提出重试方案。

提交和可见分别留证

COMMITTED 表明事务提交而数据尚未可见,VISIBLE 才是成功可见。客户端超时可能落在发布阶段,不能由此决定重投;应以相同批次的状态、提交时间和业务读取时间解释延迟窗口。

批次身份必须包含输入

label 应关联源端范围和输入摘要,仅有标签字符串不足以证明两次发送是同一批。空记录、过期历史和同标签异内容都需要保留为不确定状态;业务表模型还决定重放会增加事件、重复累计或覆盖已有状态。

进入文章正文
关联架构图解5 个组件 · 点击展开

从场景图的客户端、FE 事务协调和 BE 写入关系读取阶段边界。图中的连线不代表所有文件字节都经 FE,也不包含连接器 checkpoint 或两阶段提交协议,本文限定普通 Stream Load 与 Broker Load 的取证。

查看场景架构与实施步骤
参考架构 · 非实时拓扑

Doris 集群巡检与导入查询治理架构

从 FE 元数据、BE 副本、导入事务与查询 Profile 建立 Doris 分层巡检,验证数据可见性、容量余量与小范围调优效果。

  • 数据 / 请求
  • 控制 / 管理
  • 观测 / 查询

点击组件,在图下方查看职责;连线编号对应流向解读。小屏可横向滚动,或直接展开文字说明。

Doris 集群巡检与导入查询治理架构:组件关系图从 FE 元数据、BE 副本、导入事务与查询 Profile 建立 Doris 分层巡检,验证数据可见性、容量余量与小范围调优效果。 业务与导入客户端 → FE 元数据与协调:请求与事务协调;FE 元数据与协调 → BE 执行与存储:计划与事务调度;BE 执行与存储 → 其他 BE 副本:Tablet 副本关系;FE 元数据与协调 → 巡检证据:角色与事务记录;BE 执行与存储 → 巡检证据:容量与执行证据。箭头说明见下方流向解读。
逻辑参考图,待环境验证。以 Doris 3.x 存算一体集群为主线,记录 FE Master、Follower、Observer 和 BE 故障域。存算分离另含 Meta Service、共享存储和计算组,不可套用本流程的本地副本判断。

业务与导入客户端

入口 / 来源

记录查询、导入批次和业务键,驱动 FE 协调;HTTP 导入数据路径取决于具体方式。

全部组件职责 5 个组件
业务与导入客户端
记录查询、导入批次和业务键,驱动 FE 协调;HTTP 导入数据路径取决于具体方式。
FE 元数据与协调
解析计划、管理元数据和导入事务;Observer 不参加选举。工具介绍 FE 元数据与协调
BE 执行与存储
存算一体模式承载查询、导入和 Tablet;不把本图用于共享存储模式。工具介绍 BE 执行与存储
其他 BE 副本
同 Tablet 副本分布到其他节点,用健康状态和版本而非心跳判断冗余。工具介绍 其他 BE 副本
巡检证据
关联管理状态、算子耗时和业务可见性,给出问题影响范围。
流向解读 5 条连接
  1. 1

    业务与导入客户端 FE 元数据与协调

    数据 / 请求 · 请求与事务协调

    客户端入口与管理协调关系;不是所有导入字节都经 FE 转发。

  2. 2

    FE 元数据与协调 BE 执行与存储

    控制 / 管理 · 计划与事务调度

    FE 向 BE 分配执行任务并协调可见性。

  3. 3

    BE 执行与存储 其他 BE 副本

    数据 / 请求 · Tablet 副本关系

    示意同一数据的跨节点冗余,具体写入路径按导入协议核验。

  4. 4

    FE 元数据与协调 巡检证据

    观测 / 查询 · 角色与事务记录

    保存元数据角色、批次和提交状态。

  5. 5

    BE 执行与存储 巡检证据

    观测 / 查询 · 容量与执行证据

    保存节点水位与有界查询 Profile。

故障域与操作边界

适用版本与部署模式

以 Doris 3.x 存算一体集群为主线,记录 FE Master、Follower、Observer 和 BE 故障域。存算分离另含 Meta Service、共享存储和计算组,不可套用本流程的本地副本判断。

数据与变更边界

本场景不包含强制选主、直接删除 Tablet、取消状态不明的事务或生产压测。Observer 不参与选主,增加 Observer 不能修复选举多数派。

架构依据与版本核对 2 篇官方资料

图解是本站基于官方资料整理的逻辑参考;实施前仍需核对实际部署版本、组件支持范围与变更审批。

适用范围与取证输入

本文用于 Apache Doris 3.x 的普通 Stream Load 和 Broker Load 故障诊断,重点检查“客户端超时但数据可能已提交”。Flink Connector 的两阶段提交、Group Commit 与多表事务需要另外核对连接器和补丁版本,本篇状态判断不能代替它们的协议。示例保持 PENDING,仅给出检查步骤,不执行导入、取消或重放。

开始前固定数据库、表、批次 label、输入文件摘要、源端位点、TxnId、首次请求和最后响应时间。保留 HTTP 状态、JSON 正文与客户端退出信息三个层次,脱敏保存地址与错误样本。客户端没收到完整响应属于结果未知,不能直接写成导入失败。

把接收、提交和可见分开

Stream Load 经由 FE 接入和协调,实际写入涉及 BE;一次导入会经历事务准备、数据写入、提交和发布。网络断开可能发生在任意阶段。HTTP 成功码只代表接口响应,需要继续解释 JSON 中的状态;客户端传完文件也不等于业务已能查询。

普通 Stream Load 返回 Success 表示成功,Publish Timeout 表示导入已完成但可能尚未可见,Label Already Exists 表示该 label 已被使用,Fail 表示失败。遇到发布超时应查原事务,不能换 label 再导一次。这些返回字段见 Stream Load 手册

使用原事务定位不确定结果

下例中的 label 必须替换为从原始请求记录获得的值:

SHOW TRANSACTION FROM analytics
WHERE LABEL = 'orders_20260901_batch0042';

也可按响应中已知的事务编号精确查询:

SHOW TRANSACTION FROM analytics WHERE ID = 4005;

TransactionStatus=PREPARE 表示准备阶段;COMMITTED 表示已提交但尚未可见;VISIBLE 表示成功且可见;ABORTED 表示失败。联看 PrepareTimeCommitTimeFinishTimeReason,不要把 COMMITTED 当成可以重放的失败。字段与权限要求见 SHOW TRANSACTION

若查无记录,应先检查数据库、权限、label 拼写和保留期。空结果没有足够信息证明“从未写入”,此时需要结合原日志与有限业务核对,暂停自动重试。

区分三种状态记录

Broker Load 是异步任务,可按已知 label 查看任务状态:

SHOW LOAD FROM analytics
WHERE LABEL = 'orders_20260901_batch0042'
LIMIT 5;

PENDINGETLLOADINGFINISHEDCANCELLED 是任务状态,不能直接拿来替换事务的 COMMITTED/VISIBLE。应同时保存任务与事务标识,避免同名字段造成混淆,见 SHOW LOAD

Stream Load 历史可用 SHOW STREAM LOAD,但 BE 默认不记录这类历史,是否有记录取决于 enable_stream_load_record 等现场配置。下例仅在已启用记录时有诊断价值,不应为了这次排障临时全局改配置:

SHOW STREAM LOAD FROM analytics
WHERE LABEL = 'orders_20260901_batch0042'
LIMIT 5;

没有历史记录不等于导入失败,详见 SHOW STREAM LOAD

解释行数和过滤原因

假设已保存的响应含总行数 1000、加载行数 970、质量过滤 20、条件过滤 10,这只是解释性样例,不是本环境结果。先分别查看 NumberFilteredRowsNumberUnselectedRows:前者反映质量问题,后者反映导入 WHERE 条件,两者责任不同。

对照输入映射、分隔符、编码、时区、空值与字段精度,挑选脱敏错误行核验。不要提高 max_filter_ratio 来消除失败;放宽比例意味着允许丢弃一部分输入,必须由数据契约定义。行数看似吻合也可能是列错位或时区错误,金额合计、关键标识与分区日期还要单独检查。

重试必须保持批次身份

普通 Stream Load 用 label 辅助避免同一批次重复提交,调用方需要稳定地把它关联到输入摘要和源端范围。同 label 对应不同文件属于输入冲突;同一文件每次随机生成 label 则失去这层保护。label 记录有保留边界,不能作为永久业务去重机制。

Duplicate 表重放可能增加行,Aggregate 的 SUM 列可能重复累计,Unique 表虽按 Key 覆盖,仍可能因为旧事件乱序而反写较新的状态。是否可以重试,要同时证明原事务结果、输入是否一致以及模型是否接受重放。模型关系见 Doris 架构与数据模型

根据阶段定位性能问题

优先使用已保存响应的 ReadDataTimeMsWriteDataTimeMsCommitAndPublishTimeMs,比较相近批次与相同并发窗口。读取长可能涉及客户端上传;写入长可能涉及分布、刷盘或存储压力;提交发布长则需要关联协调节点、事务与相关副本状态。这些是收窄方向,不是根据单一耗时直接定根因。

如果小批次越来越慢,观察版本增长、合并积压、活跃事务和上游并发是否同时上升。存算分离环境还应检查 MS、FDB 与远端存储链路,不能只查 BE 本地磁盘。阶段计时可能重叠,不能把所有字段简单相加当成端到端耗时。

用有界查询验证业务可见性

在事务已确认可见后,按已知分区与少量业务键核对:

SELECT order_id, status, amount, source_version
FROM analytics.orders_current
WHERE order_date = '2026-09-01'
  AND tenant_id = 42
  AND order_id IN (90001, 90002, 90003)
LIMIT 10;

执行前确认字段与分区存在,并先用 EXPLAIN 检查扫描范围。LIMIT 不保证扫描成本有界;若日期不是分区列,应改用现场已确认的范围。本查询证明的是样本在当前读取窗口可见,并不代表整批无遗漏。全批验收应在隔离或受控资源组内比较源端条数、业务金额和关键键集合。

验收、停止与回退

导入事故的结案条件包括:原事务终态明确、批次身份可追溯、过滤记录有解释、源端位点与目标可见数据一致,以及积压趋势恢复。若历史已过期、源端摘要不明、同 label 输入冲突或发布积压持续扩大,应停止重放与扩并发,交接未知批次清单。

已 VISIBLE 的数据不能依靠取消原任务撤销;恢复需要按模型制定补偿、重建或来源重放方案。只读诊断无需数据回退,重试前应保留原输入和当前结果证据。对资源瓶颈继续阅读 Doris Query Profile 调优

参考资料

从现象到判断

先收集证据,再缩小范围。以下是判读路径,不代表已经确认根因或获准变更。

  1. 客户端没有收到完整响应,或返回 Publish Timeout,而任务平台准备自动重试。

    只读核对
    按原 label 或响应中的 TxnId 查询同库事务,核对 COMMITTED、VISIBLE、ABORTED 和时间字段。
    如何判读
    提交后等待发布不是重新导入条件;只有结合原批次终态与输入契约才能决定后续行为。
  2. SHOW STREAM LOAD 没有该批次,但客户端保留了提交记录。

    只读核对
    核对 BE 是否已启用历史记录、数据库与权限、保留窗口,再查原事务及响应。
    如何判读
    历史未记录或已清理不能证明从未写入,不应通过随机新 label 绕过不确定性。
  3. 任务显示成功,目标样本缺行,响应同时存在过滤计数。

    只读核对
    分别读取质量过滤与 WHERE 条件过滤,审阅列映射、时区和脱敏错误样本。
    如何判读
    两种过滤有不同原因和责任,行数相加吻合也不证明列值或分区日期正确。
常见误区与判断边界 2 项

用新 label 修复发布超时

新标签会失去对原批次的关联,可能使 Duplicate 增行或 Aggregate 重复累加。即使 Unique 表没有多出行,迟到数据仍可能改变状态;应先固定原请求和事务结果,不用重放制造新的证据噪声。

提高过滤比例让任务成功

允许更多过滤等于接受更多输入被丢弃,不能作为修复编码、类型或列映射的默认方法。应明确质量规则和样本影响,记录业务接受条件;已经可见的数据也不能靠取消原任务撤销。

交接时应留下的证据

作为记录提纲使用,不是自动检查结果;未取得的证据应标记缺口,并注明负责人。

  • 保留数据库、目标表、原 label、TxnId、源端范围与输入摘要,注明首次请求和最终响应时间。
  • 保存 HTTP、JSON、任务和事务四层状态,说明缺失记录的原因与 COMMITTED 到 VISIBLE 的窗口。
  • 归档质量过滤、条件过滤和少量业务键的脱敏对账,解释金额、日期与版本是否一致。
  • 列明可重试、不可重试和结果未知的批次,交接发布积压、补偿来源及停止扩并发条件。

记录需包含环境、版本、时间与时区;分享前脱敏,不附访问令牌、密码或完整业务敏感数据。

继续阅读与资料核对

补充相关主题,再结合当前环境的实施记录形成结论。

返回原理导读

DOUYA OPS ECOSYSTEM

贡献你的经验,帮助更多运维人

把故障复盘、标准流程和最佳实践沉淀为可检索、可复用的知识内容。