【发布时间】:2020-07-24 06:22:40
【问题描述】:
我正在使用 Flink 流式 Java 应用程序,其输入源为 Kafka。我的应用程序中总共使用了 4 个流。一个是主数据流,另外三个三个用于广播流。
Stream A是主流,从Kafka源源不断地流出。
流 B 是丰富数据的数据集。 Stream B 是 Stream C , Stream D, Stream E 的组合流。它是一个大的(所有 3 个流的大小都很大)。
Stream C、Stream D、Stream E 流对象类型不同。 (例如,一种流类型是Employee,另一种类型是AttendanceDetails,另一种是SalaryDetails,等等......)。
我使用 Either 类型加入了三个广播流。我已作为 Stream B 进行广播,并且能够在广播过程功能上下文状态中接收(即在 processBroadcastElement() 中)。
我的问题是,
-
Broadcast状态下可以存储大数据吗?
-
可以广播大数据吗?
如果可能存储大数据意味着,在广播状态下可以存储多少数据(即数据大小)并且可以应用容错和Flink检查点?我的 Flink 系统内存和存储大小是:
Memory: 8 GB
Disk Size: 20-25 GB
如何在 Flink 中配置 Broadcast state 的内存大小?
注意:据我了解,Flink Broadcast State 是在运行时保存在内存中的(也就是说广播状态不会存储在rocksdb中),并且广播流被用作低吞吐量事件溪流。由于目前,RocksDB 状态后端不适用于操作员状态。
【问题讨论】:
标签: java apache-kafka apache-flink flink-streaming broadcast