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