Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java flink广播流中的大数据处理_Java_Apache Kafka_Apache Flink_Flink Streaming_Broadcast - Fatal编程技术网

Java flink广播流中的大数据处理

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,并

我正在使用输入源为Kafka的Flink streamingJava应用程序。我的应用程序总共使用了4个流。一个是主数据流,另外三个用于广播流

溪流A是主流,它从卡夫卡源源不断地流过

流B是浓缩数据的数据集。流B是流C、流D、流E的组合流。它是一个大流(所有3个流的大小都很大)

流C、流D、流E流对象类型不同。(例如,一个流类型是Employee,另一个流类型是AttendanceDetails,另一个流类型是SalaryDetails,等等)

我使用类型加入了三个广播流。我已将广播作为流B,并且能够接收广播过程函数上下文状态(即processBroadcastElement())

我的问题是,

  • 是否可以在广播状态下存储大数据

  • 广播大数据可能吗

  • 如果可能存储大数据,则意味着在广播状态下能够存储多少数据(即数据大小),以及能够应用容错和Flink检查点?我的Flink系统内存和存储大小为:

           Memory: 8 GB
           Disk Size: 20-25 GB
    
    如何为Flink中的广播状态配置内存大小


    注意:据我了解,Flink广播状态在运行时保存在内存中(这意味着广播状态不会存储在rocksdb中),广播流用作低吞吐量事件流。因为目前,RocksDB状态后端不可用于操作员状态。

    广播状态的工作副本始终在堆上;不是在RocksDB。因此,它必须足够小,以适应内存。此外,每个实例将把所有广播状态复制到其检查点中,因此所有检查点和保存点都将有n个广播状态副本(其中n是并行性)


    如果您能够对该数据进行密钥分区,则可能不需要广播它。听起来可能是每个员工的数据,可以由employeeId键入。但是如果没有,那么您必须将其保持足够小,以便放入内存。

    嗨,大卫,谢谢您提供的信息。我的Flink系统的Flink广播状态内存限制是什么。我的flink系统配置为内存:8GB,磁盘空间约为25GB,处理器数量:4?此外,是否可以为flink中的广播状态定制内存大小配置?您必须进行实验,以发现环境中的限制。广播状态在堆上,与堆的其他用户竞争。因此,尽可能使堆变大。好的。。让我查一下