??Flink 1.13.2
HiveCatalogHive
Caused by: java.lang.RuntimeException: Hash join exceeded maximum number of
recursions, without reducing partitions enough to be memory resident. Probably
cause: Too many duplicate keys.
at
看上去主要是 state 在heap中太大导致的, 建议可以切换为 RocksdbStatebackend
yj h 于2022年3月27日周日 17:07写道:
> 请教一个taskmanager oom的问题,我在计算一天的uv,采用ContinuousEventTimeTrigger 来3分钟触发一次
>
> 配置相关:
> 配置是2个机器,每个2核,slots设置的也是每个2,并行度是4,其他jobmanager和taskmanager的内存是默认配置
>
> 目前采取的排查步骤:
>
purgingTrigger 是触发后清除windowstate,3min的触发,windowstate 会保存3min 的数据,这个看gc也可以。
yj h 于 2022年3月28日周一 上午12:08写道:
> hi,thank you, 是你说的TM内存不够的问题
> 我9点左右分下了下gc的日志,Gcviewr看显示fullgc后最大剩下300M左右,我看帖子提到的经验就把TM
> heap提升到了1GB,测试过,在总共500M的数据下没有发生OOM 了
>
> 另外咨询一下
> 我要怎么测试3min来了多少数据?
> 调整TM应该基于哪些考虑 ,在这个场景下
hi,thank you, 是你说的TM内存不够的问题
我9点左右分下了下gc的日志,Gcviewr看显示fullgc后最大剩下300M左右,我看帖子提到的经验就把TM
heap提升到了1GB,测试过,在总共500M的数据下没有发生OOM 了
另外咨询一下
我要怎么测试3min来了多少数据?
调整TM应该基于哪些考虑 ,在这个场景下 只要符合3min内能放下的数据是不是就可以了
best regards!
r pp 于2022年3月27日周日 23:46写道:
> hi~ 因为3min 的Trigger 触发 ,所以,内存里会保存3min内的数据,然后,删除又新增。所以你这边
hi~ 因为3min 的Trigger 触发 ,所以,内存里会保存3min内的数据,然后,删除又新增。所以你这边 3min
内总数据量是多少?内存大概多大?可以试着调整TM 的内存量
请教一个taskmanager oom的问题,我在计算一天的uv,采用ContinuousEventTimeTrigger 来3分钟触发一次
配置相关:
配置是2个机器,每个2核,slots设置的也是每个2,并行度是4,其他jobmanager和taskmanager的内存是默认配置
目前采取的排查步骤:
1.最开始只调用了.trigger(ContinuousEventTimeTrigger.of(Time.minutes(3))) 很快就oom掉了
2.采用了evictor