开发者社区> 问答> 正文

开发中用Flink State遇到性能瓶颈不知道原因在哪,求解!!!!

将数据都存入state中发生反压,经过了三种方法改动,临时选择将少量数据存在内存中,但是不解决问题,求解原因是什么

  • 通过state机制将数据存储到flink state中,实践中发现由于数据量较大实时更新state状态,对象序列化时间较长,会导致反压,暂未找到避免序列化方案;
  • 不能全量存数据,采用flink时间窗口,实时计算,仍然反压,感觉是flink窗口机制本质上依赖state机制保存状态
  • (目前使用方案,但是只能临时解决问题)在内存中自己实现时间窗口缓存,定时触发统计窗口数据,目前避免对象序列化,反压问题解决

展开
收起
张友亮 2018-12-06 14:51:16 3375 0
1 条回答
写回答
取消 提交回答
  • 可以从几个方面优化一下:
    1.对象序列化多发生在数据传输中间,例如不同算子,不同结点之间。对于这种情况可以开启算子之间的chain链。使数据在同一算子之间避免数据传输所产生的序列化。
    2.如你使用的方式一样在窗口内自己实现缓存或借助第三方例如redis,hbase这种kv性能很高的数据库来避免序列化。
    3.像blink一样实现minibatch减少实时去更新state状态的次数。关于blink minibatch可以参考https://yq.aliyun.com/articles/448853

    2019-07-17 23:18:32
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
Flink CDC Meetup PPT - 龚中强 立即下载
Flink CDC Meetup PPT - 王赫 立即下载
Flink CDC Meetup PPT - 覃立辉 立即下载