Doris写入数据报错err=-235

问题描述:

  • Flinkcdc抽取数据写入到doris报错,err: tablet writer write failed, tablet_id=8165971, txn_id=122211550, err=-235, see more in null

具体截图如下:


问题查询和解决

通过网上查询一圈,发现该问题还挺普遍的,而且还已经记录在了doris官网

[https://doris.apache.org/zh-CN/docs/faq/data-faq.html#q4-tablet-writer-write-failed-tablet-id-27306172-txn-id-28573520-err-235-or-215-or-238](tablet writer write failed, tablet_id=27306172, txn_id=28573520, err=-235 or -215 or -238)

这个错误通常发生在数据导入操作中。新版错误码为 -235,老版本错误码可能是 -215。

这个错误的含义是,对应tablet的数据版本超过了最大限制(默认500,由 BE 参数 max_tablet_version_num 控制),后续写入将被拒绝。

比如问题中这个错误,即表示 27306172 这个tablet的数据版本超过了限制。

这个错误通常是因为导入的频率过高,大于后台数据的compaction速度,导致版本堆积并最终超过了限制。

此时,我们可以先通过show tablet 27306172 语句,然后执行结果中的 show proc 语句,查看tablet各个副本的情况。结果中的 versionCount即表示版本数量。

如果发现某个副本的版本数量过多,则需要降低导入频率(batch_size)或停止导入,并观察版本数是否有下降。

如果停止导入后,版本数依然没有下降,则需要去对应的BE节点查看be.INFO日志,搜索tablet id以及 compaction关键词,检查compaction是否正常运行。

总结

以上问题,可以通过两种方式解决

1.降低dorisBatchSize大小

2.增大tablet的数据版本数据版本最大限制,我们是将默认的调大到了3000,修改be.conf 中max_tablet_version_num = 3000

我们项目组出线这个问题是因为,当天几台doris全挂了,重启后max_tablet_version_num之前设置的实效了,导致doris启动后积压了很多数据的需要compaction,一下子就达到了默认值versionCount=500,导致的报错


觉得不错的话,给点打赏吧 ୧(๑•̀⌄•́๑)૭



wechat pay



alipay

Doris写入数据报错err=-235
http://yuting0907.github.io/2022/07/11/Doris写入数据报错err-235/
作者
Echo Yu
发布于
2022年7月11日
许可协议