gpt4 book ai didi

apache-flink - 在 Flink 中检查点时,计时器过多会花费太多时间

转载 作者:行者123 更新时间:2023-12-04 05:21:21 24 4
gpt4 key购买 nike

我有使用 State 对大量消息进行滑动计数的情况。和 TimeService .滑动大小为1,窗口大小大于10小时。我遇到的问题是检查点需要很多时间。为了提高性能,我们使用增量检查点。但是系统做checkpoint的时候还是慢。我们发现大部分时间用于序列化用于清理数据的计时器。我们为每个键都有一个计时器,总共有大约 300M 个计时器。

任何解决此问题的建议将不胜感激。或者我们可以用另一种方式进行计数?
———————————————————————————————————————————————
我想为这种情况添加一些细节。滑动大小为一个事件,窗口大小超过10小时(每秒大约有300个事件),我们需要对每个事件使用react。所以在这种情况下我们没有使用 Flink 提供的窗口。我们使用 keyed state来存储以前的信息。 timers用于 ProcessFunction触发旧数据的清理工作。最后,定义键的数量非常大。

最佳答案

我认为这应该有效:

通过有效地执行类似 keyBy(key mod 100000) 之类的操作,显着减少 Flink 使用的 key 数量,从 300M 减少到 100K(例如)。然后,您的 ProcessFunction 可以使用 MapState(其中的键是原始键)来存储它需要的任何内容。

MapStates 具有迭代器,您可以使用它来定期抓取这些 map 中的每一个以使旧项目过期。坚持每个键只有一个定时器的原则(每个 uberkey,如果你愿意的话),这样你就只有 10 万个定时器。

更新:

包含 Flink 1.6 FLINK-9485 ,它允许定时器异步检查点,并存储在 RocksDB 中。这使得 Flink 应用程序拥有大量计时器变得更加实用。

关于apache-flink - 在 Flink 中检查点时,计时器过多会花费太多时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49290784/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com