当前位置: 首页 > news >正文

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

在这里插入图片描述

今天来聊聊 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社区来兜底!

相关文章:

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

今天来聊聊 Doris 数据导入那些事儿。你是不是在数据导入的时候遇到各种状况&#xff0c;让人头疼不已&#xff1f;别担心&#xff0c;这篇文章给你答案&#xff01; 在 Doris 的版本里&#xff0c;< 2.0.3 的时候&#xff0c;数据迁移存在一些已知的问题&#xff0c;比如可…...

回归预测 | MATLAB实现CNN-GRU卷积门控循环单元多输入单输出回归预测

回归预测 | MATLAB实现CNN-GRU卷积门控循环单元多输入单输出回归预测 目录 回归预测 | MATLAB实现CNN-GRU卷积门控循环单元多输入单输出回归预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 MATLAB实现CNN-GRU卷积门控循环单元多输入单输出回归预测 数据准备&#x…...

HCIA-Access V2.5_7_3_XG(S)原理_关键技术

为什么需要测距 因为上行链路只有一根纤,而且每一个ONU到OLT的距离是不一样的,虽然上行通过TDMA技术,让每一个ONU在不同的时间段发送数据,但是仍然有可能在同一时刻到达分光器,产生数据冲突。 有测距的信元传输 所以为了避免碰撞冲突,通过ONU在注册的时候就会启动测距…...

leetcode hot 100 不同路径

62. 不同路径 已解答 中等 相关标签 相关企业 一个机器人位于一个 m x n 网格的左上角 &#xff08;起始点在下图中标记为 “Start” &#xff09;。 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角&#xff08;在下图中标记为 “Finish” &#xff09…...

智慧工地解决方案 1

建设背景与挑战 工地施工现场环境复杂&#xff0c;人员管理难度大&#xff0c;多工种交叉作业导致管理混乱&#xff0c;事故频发。传统管理方式难以实现科学、有效、集中式的管理&#xff0c;特别是在环境复杂、地点分散的情况下&#xff0c;监管困难&#xff0c;取证复杂。施…...

LeetCode -Hot100 - 53. 最大子数组和

前言 本专栏主要通过“LeetCode 热题100”&#xff0c;来捡起自己本科阶段的算法知识与技巧。语言主要使用c/java。如果同样正在练习LeetCode 热题100的朋友欢迎关注或订阅本专栏。有疑问欢迎留言交流~ 题目描述 题目链接 示例 1&#xff1a; 输入&#xff1a;nums [-2,1…...

php 多进程那点事,用 swoole 如何解决呢 ?

在 PHP 中&#xff0c;多进程的处理通常会遇到一些挑战&#xff0c;比如资源共享、进程间通信、性能优化等。Swoole 是一个高性能的协程和多进程框架&#xff0c;旨在为 PHP 提供异步、并发、协程等功能&#xff0c;解决了传统 PHP 环境中的多进程管理问题。通过使用 Swoole&am…...

探索AI在地质科研绘图中的应用:ChatGPT与Midjourney绘图流程与效果对比

文章目录 个人感受一、AI绘图流程1.1 Midjourney&#xff08;1&#xff09;环境配置&#xff08;2&#xff09;生成prompt&#xff08;3&#xff09;完善prompt&#xff08;4&#xff09;开始绘图&#xff08;5&#xff09;后处理 1.2 ChatGPT不合理的出图结果解决方案 二、主题…...

【竞技宝】CS2:HLTV 2024 TOP11-w0nderful

北京时间2025年1月4日&#xff0c;HLTV年度选手排名正在持续公布中&#xff0c;今日凌晨正式公布了今年的TOP11为NAVI战队的w0nderful。 选手简介 w0nderful是一名来自于乌克兰的CS选手&#xff0c;现年20岁&#xff0c;目前在比赛中司职狙击手。w0nderful于2020年开启了自己的…...

Lua迭代器如何使用?

在Lua中&#xff0c;迭代器是一种用于遍历集合元素的重要工具。掌握迭代器的使用方法&#xff0c;对于提高Lua编程的效率和代码的可读性具有重要意义。 1.迭代器概述 12.1.1 迭代器介绍 迭代器是一种设计模式&#xff0c;它提供了一种访问集合元素的方法&#xff0c;而不需要…...

qt中如何判断字符串是否为数字,整数,浮点数?

在 Qt 中&#xff0c;可以使用多种方法来判断字符串是否为数字、整数或浮点数。Qt 提供了一些方便的字符串和数值处理函数&#xff0c;可以帮助你实现这些判断。以下是几种常见的方法&#xff1a; 1. 使用 QRegularExpression Qt 提供了 QRegularExpression 类&#xff0c;可…...

Oracle sql developer and Toad for Oracle set start DBMS output

Oracle sql developer Toad for Oracle...

【踩坑】SparkSQL union/unionAll 函数的去重问题

【踩坑】SparkSQL union/unionAll 函数的去重问题 测试数据 case class Employee(first_name:String)val employeeDF1 spark.createDataset(Seq( Employee("Mary"), Employee("Mandy"),Employee("Kurt") )) val employeeDF2 spark.createDat…...

域上的多项式环,整除,相通,互质

例1.已知 (R,,x)为域&#xff0c;请选出正确的说法:(A)(R,,x)也是整区; ABCD (B)R中无零因子; C)R在x运算上满足第一、二、三指数律; (D)R只有平凡理想; (E)R只有平凡子环。 域的特征&#xff1a; 域中&#xff0c;非0元素的加法周期 思考、在模7整数环R,中&#xff0c;…...

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

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

Julia语言的学习路线

Julia语言的学习路线 引言 在现代编程世界中&#xff0c;编程语言如同工具&#xff0c;各自具有独特的特点与优势。Julia语言自2012年发布以来&#xff0c;以其优越的性能和优雅的语法逐渐吸引了越来越多的数据科学家、工程师和研究人员的关注。在本篇文章中&#xff0c;我们…...

对计网大题的一些指正(中间介绍一下CDM的原理和应用)

目录 前言&#xff1a; &#xff08;1&#xff09;五层原理体系结构每层功能&#xff1a; 下面是文档的答案&#xff1a; 我在之前的博客里面有介绍过五层原理体系结构&#xff0c; 按理来说&#xff0c;第五层应该是应用层才对&#xff0c;而会话层的功能应该被放到应用层…...

UGUI 优化DrawCall操作记录(基于Unity2021.3.18)

UGUI中相同材质相同Shader相同贴图的UI元素可以合并DrawCall。 1.使用图集 Unity性能优化---使用SpriteAtlas创建图集进行批次优化_unity2021.3.33 spriteatlas优化-CSDN博客 2.Canvas的子物体在场景树中的索引位置和不同图集不影响UI合批且UI网格没有重叠&#xff0c;如下图…...

前端实现大文件上传(文件分片、文件hash、并发上传、断点续传、进度监控和错误处理,含nodejs)

大文件分片上传是前端一种常见的技术&#xff0c;用于提高大文件上传的效率和可靠性。主要原理和步骤如下 文件分片 确定分片大小&#xff1a;确定合适的分片大小。通常分片大小在 1MB 到 5MB 之间使用 Blob.slice 方法&#xff1a;将文件分割成多个分片。每个分片可以使用 Bl…...

es单机安装脚本自动化

背景 所有部署工作都可以由机器本身完成,并不需要人的参与,人唯一需要做的是把变量提取出来,进行赋值喂给脚本,然后脚本自己执行即可。下边是es单机安装的过程和脚本,由人变到脚本执行,方便理解。 步骤 1、解压es软件tar包。 2、cd至解压以后得config目录下,vim修改…...

Vue记事本应用实现教程

文章目录 1. 项目介绍2. 开发环境准备3. 设计应用界面4. 创建Vue实例和数据模型5. 实现记事本功能5.1 添加新记事项5.2 删除记事项5.3 清空所有记事 6. 添加样式7. 功能扩展&#xff1a;显示创建时间8. 功能扩展&#xff1a;记事项搜索9. 完整代码10. Vue知识点解析10.1 数据绑…...

基于距离变化能量开销动态调整的WSN低功耗拓扑控制开销算法matlab仿真

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.算法仿真参数 5.算法理论概述 6.参考文献 7.完整程序 1.程序功能描述 通过动态调整节点通信的能量开销&#xff0c;平衡网络负载&#xff0c;延长WSN生命周期。具体通过建立基于距离的能量消耗模型&am…...

uniapp中使用aixos 报错

问题&#xff1a; 在uniapp中使用aixos&#xff0c;运行后报如下错误&#xff1a; AxiosError: There is no suitable adapter to dispatch the request since : - adapter xhr is not supported by the environment - adapter http is not available in the build 解决方案&…...

3-11单元格区域边界定位(End属性)学习笔记

返回一个Range 对象&#xff0c;只读。该对象代表包含源区域的区域上端下端左端右端的最后一个单元格。等同于按键 End 向上键(End(xlUp))、End向下键(End(xlDown))、End向左键(End(xlToLeft)End向右键(End(xlToRight)) 注意&#xff1a;它移动的位置必须是相连的有内容的单元格…...

R语言速释制剂QBD解决方案之三

本文是《Quality by Design for ANDAs: An Example for Immediate-Release Dosage Forms》第一个处方的R语言解决方案。 第一个处方研究评估原料药粒径分布、MCC/Lactose比例、崩解剂用量对制剂CQAs的影响。 第二处方研究用于理解颗粒外加硬脂酸镁和滑石粉对片剂质量和可生产…...

手机平板能效生态设计指令EU 2023/1670标准解读

手机平板能效生态设计指令EU 2023/1670标准解读 以下是针对欧盟《手机和平板电脑生态设计法规》(EU) 2023/1670 的核心解读&#xff0c;综合法规核心要求、最新修正及企业合规要点&#xff1a; 一、法规背景与目标 生效与强制时间 发布于2023年8月31日&#xff08;OJ公报&…...

论文阅读:LLM4Drive: A Survey of Large Language Models for Autonomous Driving

地址&#xff1a;LLM4Drive: A Survey of Large Language Models for Autonomous Driving 摘要翻译 自动驾驶技术作为推动交通和城市出行变革的催化剂&#xff0c;正从基于规则的系统向数据驱动策略转变。传统的模块化系统受限于级联模块间的累积误差和缺乏灵活性的预设规则。…...

uniapp 集成腾讯云 IM 富媒体消息(地理位置/文件)

UniApp 集成腾讯云 IM 富媒体消息全攻略&#xff08;地理位置/文件&#xff09; 一、功能实现原理 腾讯云 IM 通过 消息扩展机制 支持富媒体类型&#xff0c;核心实现方式&#xff1a; 标准消息类型&#xff1a;直接使用 SDK 内置类型&#xff08;文件、图片等&#xff09;自…...

【UE5 C++】通过文件对话框获取选择文件的路径

目录 效果 步骤 源码 效果 步骤 1. 在“xxx.Build.cs”中添加需要使用的模块 &#xff0c;这里主要使用“DesktopPlatform”模块 2. 添加后闭UE编辑器&#xff0c;右键点击 .uproject 文件&#xff0c;选择 "Generate Visual Studio project files"&#xff0c;重…...

leetcode73-矩阵置零

leetcode 73 思路 记录 0 元素的位置&#xff1a;遍历整个矩阵&#xff0c;找出所有值为 0 的元素&#xff0c;并将它们的坐标记录在数组zeroPosition中置零操作&#xff1a;遍历记录的所有 0 元素位置&#xff0c;将每个位置对应的行和列的所有元素置为 0 具体步骤 初始化…...