如何解决 MapReduce Service Flink写数到GaussDB(DWS)产生死锁问题

问题描述

某局点反馈同一主键数据的并发更新造成死锁问题需要解决

处理过程

1、flink 运维界面的日志信息已经打印存在死锁问题

如何解决 MapReduce Service Flink写数到GaussDB(DWS)产生死锁问题

2、根据flink打印的报错DN排查dws 对应实例日志,从实例日志可以看出是并发更新导致死锁

如何解决 MapReduce Service Flink写数到GaussDB(DWS)产生死锁问题

3、查看对应涉及写的语句涉及的表确认是行存表还是列存表,看表结构发现是行存表可以考虑使用flink 的 key by 功能实现

如何解决 MapReduce Service Flink写数到GaussDB(DWS)产生死锁问题

4、在flink的作业管理界面添加参数,增加参数“key-by-before-sink=true”可实现key by功能,key by必须根据数据库主键做,保证同一个主键数据会在同一个并发中,破坏掉并发更新的条件,无法造成死锁

如何解决 MapReduce Service Flink写数到GaussDB(DWS)产生死锁问题

5、添加参数后,通过持续观察一天后无死锁的报错

 

建议与总结

增加参数“key-by-before-sink=true”可实现key by功能,key by必须根据数据库主键做,保证同一个主键数据会在同一个并发中,破坏掉并发更新的条件,无法造成死锁

原创文章,作者:奋斗,如若转载,请注明出处:https://blog.ytso.com/tech/bigdata/316293.html

(0)
上一篇 2025年10月28日 21:51
下一篇 2025年10月28日 21:57

相关推荐

发表回复

登录后才能评论