如何排查 Apache Doris 中 “Failed to commit txn“ 导入失败问题?

news2025/3/13 13:37:58

在这里插入图片描述

今天来聊聊 Doris 数据导入那些事儿。你是不是在数据导入的时候遇到各种状况,让人头疼不已?别担心,这篇文章给你答案!

在 Doris 的版本里,< 2.0.3 的时候,数据迁移存在一些已知的问题,比如可能会丢数据,还可能触发坏副本。不过,2.0.3 版本之后,大部分丢数据的问题被修复了。但还是有些小状况,像 BE 导入数据失败、BE publish 阶段慢、BE 突然挂掉等问题。

低于2.0.3版本的用户还是优先推荐升级到当前版本的最新小版本

一、副本失败的线索在哪?

当数据导入报错,先看日志中的关键信息:

  • 成功的关键数字"xx replicas final succ",这个数字得大于等于多数派(副本数为 n,多数派就是 [n/2] + 1),导入才算成功哦。

  • 写失败的原因"xx replicas write data failed",这里面学问可大了。可能是 BE 挂了(backendAlive = false 或者 backend = null),也可能是副本被标记为 bad(isBad = true,原因可能是磁盘离线等),还有可能是 BE 写入或者 publish 阶段掉链子了。比如说 mow 表按 version 连续 publish,如果缺前面的 version,就会暂停 publish。

  • 版本缺失的情况"xx replicas write data succ but miss previous",本事务写成功了,但副本前面少了 version,这种情况副本的 last failed version > 0

要是副本失败了,怎么找原因呢?对每个副本,先找到它首次出问题的事务。如果是 "Failed to commit" 对应的事务,那就简单了;要是 "write data succ but miss previous" 的情况,就得通过一些步骤找到首次失败的事务,比如根据提示中的 version 信息,在其他副本的日志里搜索,找到对应的事务 id。拿到事务 id 后,再去查副本在这个事务上失败的原因,可能是 publish 失败,也可能是其他情况。

二、常见问题及处理方法

  1. 多副本问题:有时候多副本情况,1 副本 "replicas final succ",其他副本 "write data succ but miss previous"。这可能是因为 "publish one succ",失败的副本可能是 BE publish 慢了,或者当时在 publish 的时候挂了。这种情况,如果不解决,后续新的导入可能会因为失败副本太多而失败。

  2. BE 存活但导入失败:如果出现 "xx replicas write data failed",BE 是存活的,副本也没被标记为 bad,那就可能是导入本身出问题了,得从日志里面具体找导入的问题。在主 FE 上用报错的事务 id 和 beginTransaction 查看,能找到 coordinator BE 的 IP,再去这个 BE 上用事务 id 查看日志,如果导入失败,会有报错信息。

  3. 所有副本都缺 rowset:这种情况在不同版本有不同表现。2.1 版本 BE 丢失 rowset 过 3 分钟后,FE 会把 BE 的 last failed version 改成 > 0,但 2.0 版本不一定。判断方法是通过一些命令查看 partition 的 visible version 和 BE 端各个副本的 version,如果所有副本的 compact status 都缺少 partition 的 visible version,那就是 BE 丢数据了。可能是用户回滚操作、backup/restore 操作有问题,或者 BE 配置问题导致的。

副本缺失的问题,可以参考这个文章:Doris查询报错-230?别慌,教你几招秒解!

三、BE publish 慢或堆积问题

如果 FE publish task 任务下发超过 5 分钟,事务还没成功,可能会触发 "publish one succ",第一个完成的副本会结束事务,其他副本就被标记为失败了。判断 publish 堆积的方法,可以搜索 BE 日志,看看 queue size,如果大于 50,就说明任务堆积了。2.0.5 版本之后日志有变化,也可以通过其他方式判断,比如搜 "publish version successfully on tablet" 或者 "finish to publish version on" 的日志,看 cost 时间来判断 publish 是不是慢了。要是 publish 慢了的话,可以参考下面的解决办法

  1. 2.1.2和2.1.3版本有已知的问题,修复pr连接,可以升级到2.1的最新版本解决。
  2. 写edit log耗时长导致的Publish 慢,可以在日志里面搜一下
 grep checkAndLogWriteLockDuration fe.log

一般情况下是fe磁盘忙,可能是高频导入导致写很多edit log, 或者跟be混布be写压力大等等所致。如果是高频导入,直接降导入频率就可以了。如果fe是跟其他进程混布,其他进程写磁盘压力大的,则把混布分开(不推荐FE和BE混部)。

  1. decommision或者添加索引时发现有事务卡住, 可以通过fe web页面或日志找到卡住事物id,手动abort事务
//abort参考命令
curl -X PUT --location-trusted -u user:passwd  -H "txn_id:18037" -H "txn_operation:abort"  http://fe_host:http_port/api/{db}/{table}/_stream_load_2pc
  1. 1.2.7版本commit到visible需要较长时间,各个be的日志搜索:grep PUBLISH be.INFO |grep queue |tail -n 20,如果queue_size比较大,说明Publish卡住,可以通过打一个be的pstack进一步石锤,重启be可解决。修复pr链接,该pr已fix。另外1.2的版本推荐升级!

四、BE 挂掉的麻烦事

如果短时间内来回挂两台以上的 BE,或者先挂一台再重启又挂另一台,就容易出问题。比如 BE A 挂掉重启后,副本缺失 version,如果马上挂掉 BE B,可能会因为可用副本不足导致导入失败。这时候得等 A 上的副本补上 version,或者新增副本成功后,才能恢复正常写入。

这主要是因为在挂掉A之时,A 上的副本是缺失version。 在把A 重启之后,A 上的缺失的副本需要把version都先补上,这些副本才能参与导入成功多数派计数。而如果此时又把另一台B 挂掉,那么B上的副本需要迁移到其他机器上。所以,此时,既需要把A 缺失的version 给补上,另外又需要找另一台BE C clone B上的副本。 如果B上的tablet 很多,或者数据量很大(show backends 查看TabletNum 和 DataCapacity),那么这个修补repair可能就很久。从而在此期间三副本中因两个副本不可用(A上副本缺version, B上的副本则因为B挂了),从而导入都失败。

五、总结

数据导入问题定位起来并不容易,但只要按照这些方法去排查,就能找到问题所在,可以自己先尝试解决
一波。如果搞不定了,可以联系社区的同学帮忙解决,毕竟有Doris社区来兜底!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2271621.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于AT89C51单片机的可暂停八路抢答器设计

点击链接获取Keil源码与Project Backups仿真图&#xff1a; https://download.csdn.net/download/qq_64505944/90196607?spm1001.2014.3001.5503 C15 部分参考设计如下&#xff1a; 摘要 随着社会进步和科技发展&#xff0c;电子设备在各类活动中的应用日益普遍&#xff0c…

OSCP - Proving Grounds - Pelican

主要知识点 当信息多的时候&#xff0c;耐心搜索Zookeeper exhibitor RCE漏洞 具体步骤 依旧执行Nmap Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-10-13 22:44 UTC Nmap scan report for 192.168.54.98 Host is up (0.00090s latency). Not shown: 65526 closed …

计算机毕业设计PyHive+Hadoop深圳共享单车预测系统 共享单车数据分析可视化大屏 共享单车爬虫 共享单车数据仓库 机器学习 深度学习

温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 作者简介&#xff1a;Java领…

WebRtc01:课程导学、框架介绍

应用 难点 课程大纲 学习收获 涉及内容 概述 用途 学习收获

特殊车辆检测数据集VOC+YOLO格式2730张3类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;2730 标注数量(xml文件个数)&#xff1a;2730 标注数量(txt文件个数)&#xff1a;2730 …

【AI日记】25.01.04 kaggle 比赛 3-3 | 王慧玲与基层女性

【AI论文解读】【AI知识点】【AI小项目】【AI战略思考】【AI日记】 工作 参加&#xff1a;kaggle 比赛 Forecasting Sticker Sales时间&#xff1a;6 小时 读书 书名&#xff1a;基层女性时间&#xff1a;3 小时原因&#xff1a;虽然我之前就知道这个作者&#xff0c;因为我…

电子应用设计方案85:智能 AI门前柜系统设计

智能 AI 门前柜系统设计 一、引言 智能 AI 门前柜系统旨在提供便捷、安全和智能的物品存储与管理解决方案&#xff0c;适用于家庭、公寓或办公场所的入口区域。 二、系统概述 1. 系统目标 - 实现无接触式物品存取&#xff0c;减少交叉感染风险。 - 具备智能识别和分类功能&am…

GOGOGO 抽象

抽象其实也算面向对象特征之一 抽象 含义&#xff1a;当多个子类中的共性向上提取&#xff0c;父类中不知道如何写具体实现&#xff0c;因为提取的共性并不一定能解决子类中实现的功能【同结构不一定同实现代码体】&#xff0c;就需要抽象概念 作用 父类只抽取结构&#xff…

【模型】Qwen2-VL 服务端UI

1. 前言 最近在测试VLM模型&#xff0c;发现官方的网页demo&#xff0c;代码中视频与图片分辨率可能由于高并发设置的很小&#xff0c;导致达不到预期效果&#xff0c;于是自己研究了一下&#xff0c;搞了一个简单的前端部署&#xff0c;自己在服务器部署了下UI界面&#xff0…

IEEE PDF eXpress遇到Font TimesNewRomanPSMT is not embedded的解决方案

IEEE PDF eXpress遇到Font TimesNewRomanPSMT is not embedded的解决方案 问题描述 在IEEE PDF eXpress上上传论文后&#xff0c;出现Font XXX is not embedded的问题。 该问题是指你所插入的图片等&#xff0c;没有将对应的字体嵌入进去。 解决方案 以下以Origin Lab图片…

【Ubuntu】 Ubuntu22.04搭建NFS服务

安装NFS服务端 sudo apt install nfs-kernel-server 安装NFS客户端 sudo apt install nfs-common 配置/etc/exports sudo vim /etc/exports 第一个字段&#xff1a;/home/lm/code/nfswork共享的目录 第二个字段&#xff1a;指定哪些用户可以访问 ​ * 表示所有用户都可以访…

简易Type-C拉取5V/3A电流电路分享

今天介绍一种在Type-C 5V电压下获取3A电流的简易办法 我们都知道&#xff0c;USB里面的D D-用来传输数据&#xff0c;其实Type-C接口里面还有一组CC引脚&#xff0c;先科普一些概念 DFP&#xff0c;下行端口&#xff0c;可以理解为Host&#xff0c;数据下行以及对外提供电源&…

uni-app深度解码:跨平台APP开发的核心引擎与创新实践

在当今数字化浪潮中&#xff0c;移动应用市场呈现出爆炸式增长。为了满足不同用户群体在不同操作系统上的需求&#xff0c;跨平台 APP 开发成为众多开发者的首选策略。uni-app 作为一款领先的跨平台开发框架&#xff0c;以其独特的优势和创新的实践在众多同类产品中脱颖而出。它…

C#运动控制系统:雷赛控制卡实用完整例子 C#雷赛开发快速入门 C#雷赛运动控制系统实战例子 C#快速开发雷赛控制卡

雷赛控制技术 DMC系列运动控制卡是一款新型的 PCI/PCIe 总线运动控制卡。可以控制多个步进电机或数字式伺服电机&#xff1b;适合于多轴点位运动、插补运动、轨迹规划、手轮控制、编码器位置检测、IO 控制、位置比较、位置锁存等功能的应用。 DMC3000 系列卡的运动控制函数库功…

Spring Boot + Redis + Sa-Token

参考文献 Sa-Token实现分布式登录鉴权&#xff08;Redis集成 前后端分离&#xff09;-腾讯云开发者社区-腾讯云 介绍 StpInterface 是 Sa-Token 框架中的一个接口&#xff0c;属于 Sa-Token 身份认证与授权框架的一部分。该接口提供了一些方法来实现自定义的身份认证和授权管…

智慧工地信息管理与智能预警平台

建设背景与政策导向 智慧工地信息管理与智能预警平台的出现&#xff0c;源于工地管理面临的诸多挑战&#xff0c;如施工地点分散、危险区域多、监控手段落后等。随着政府对建筑产业现代化的积极推动&#xff0c;各地纷纷出台政策支持智慧工地的发展&#xff0c;旨在通过信息技…

GoF23种设计模式 简介

文章目录 面向对象(OO)设计原则&#xff08;7&#xff09;单一职责原则开闭原则里氏代换原则依赖倒转原则接口隔离原则合成复用原则迪米特法则 创建型模式 &#xff08;5&#xff09;工厂方法模式 &#xff08;类模式&#xff0c;其余都是对象模式&#xff09;抽象工厂模式建造…

文献阅读 | B. S. Carmo 2010

目录 一、文献名称二、原文地址三、ABSTRACT研究方法主要发现结论 四、INTRODUCTION研究背景涡旋脱落与脱落模式脱落模式分类SG&#xff08;间隙对称脱落&#xff09;AG&#xff08;间隙交替脱落&#xff09;WG&#xff08;间隙尾流脱落&#xff09; 拖力反转 相关研究以前的研…

机器学习之过采样和下采样调整不均衡样本的逻辑回归模型

过采样和下采样调整不均衡样本的逻辑回归模型 目录 过采样和下采样调整不均衡样本的逻辑回归模型1 过采样1.1 样本不均衡1.2 概念1.3 图片理解1.4 SMOTE算法1.5 算法导入1.6 函数及格式1.7 样本类别可视化理解 2 下采样2.1 概念2.2 图片理解2.3 数据处理理解2.4 样本类别可视化…

unity学习7:unity的3D项目的基本操作: 坐标系

目录 学习参考 1 unity的坐标系 1.1 左手坐标系 1.2 左手坐标系和右手坐标系的区别 1.3 坐标系的原点(0,0,0) 2 坐标系下的具体xyz坐标 2.1 position这里的具体xyz坐标值 2.2 父坐标 2.3 世界坐标和相对坐标 2.3.1 世界坐标 2.3.2 相对坐标 2.4 父物体&#xff0c;…