Java flink广播流中的大数据处理
我正在使用输入源为Kafka的Flink streamingJava应用程序。我的应用程序总共使用了4个流。一个是主数据流,另外三个用于广播流 溪流A是主流,它从卡夫卡源源不断地流过 流B是浓缩数据的数据集。流B是流C、流D、流E的组合流。它是一个大流(所有3个流的大小都很大) 流C、流D、流E流对象类型不同。(例如,一个流类型是Employee,另一个流类型是AttendanceDetails,另一个流类型是SalaryDetails,等等) 我使用类型加入了三个广播流。我已将广播作为流B,并且能够接收广播过程函数上下文状态(即processBroadcastElement()) 我的问题是,Java flink广播流中的大数据处理,java,apache-kafka,apache-flink,flink-streaming,broadcast,Java,Apache Kafka,Apache Flink,Flink Streaming,Broadcast,我正在使用输入源为Kafka的Flink streamingJava应用程序。我的应用程序总共使用了4个流。一个是主数据流,另外三个用于广播流 溪流A是主流,它从卡夫卡源源不断地流过 流B是浓缩数据的数据集。流B是流C、流D、流E的组合流。它是一个大流(所有3个流的大小都很大) 流C、流D、流E流对象类型不同。(例如,一个流类型是Employee,另一个流类型是AttendanceDetails,另一个流类型是SalaryDetails,等等) 我使用类型加入了三个广播流。我已将广播作为流B,并
Memory: 8 GB
Disk Size: 20-25 GB
如何为Flink中的广播状态配置内存大小
注意:据我了解,Flink广播状态在运行时保存在内存中(这意味着广播状态不会存储在rocksdb中),广播流用作低吞吐量事件流。因为目前,RocksDB状态后端不可用于操作员状态。广播状态的工作副本始终在堆上;不是在RocksDB。因此,它必须足够小,以适应内存。此外,每个实例将把所有广播状态复制到其检查点中,因此所有检查点和保存点都将有n个广播状态副本(其中n是并行性)
如果您能够对该数据进行密钥分区,则可能不需要广播它。听起来可能是每个员工的数据,可以由employeeId键入。但是如果没有,那么您必须将其保持足够小,以便放入内存。嗨,大卫,谢谢您提供的信息。我的Flink系统的Flink广播状态内存限制是什么。我的flink系统配置为内存:8GB,磁盘空间约为25GB,处理器数量:4?此外,是否可以为flink中的广播状态定制内存大小配置?您必须进行实验,以发现环境中的限制。广播状态在堆上,与堆的其他用户竞争。因此,尽可能使堆变大。好的。。让我查一下