2

我最近一直在使用 Flink 和 kinesis 分析。我有一个数据流,并且我需要一个缓存与流共享。

为了与 kinesis 流共享缓存数据,它连接到广播流。缓存源扩展了 SourceFunction 并实现了 ProcessingTimeCallback。每 300 秒从 DynamoDB 获取数据,并使用 KeyedBroadcastProcessFuction 将其广播到下一个流。

但是在添加广播流之后(在以前的版本中,我没有缓存并且我使用 KeyedProcessFuction 进行运动流),当我在运动分析中执行它时,它会每隔 1000 秒重新启动一次,没有任何异常!

我没有这个值的配置,并且场景在两者之间运行良好!

任何人都可以帮助我可能是什么问题?

4

1 回答 1

0

我的第一个想法是想知道这是否与检查点有关。您有权访问服务器日志吗?Flink 的日志记录应该可以清楚地说明导致重启的原因。

我怀疑检查点的原因是它发生在可预测的时间(并且超时时间很长),并且使用广播状态会给检查点带来很大压力。每个并行实例都会检查广播状态的完整副本。

广播状态必须保持在堆上,因此另一种可能性是内存不足。

于 2020-05-20T15:40:54.023 回答