Memory 如何监控火花的大小';s";国家;?

Memory 如何监控火花的大小';s";国家;?,memory,apache-spark,state,spark-streaming,rdd,Memory,Apache Spark,State,Spark Streaming,Rdd,如何监控spark流媒体应用程序的状态大小?驱动程序GUI中的存储选项卡仅显示Mapwithstate操作(Mapwithstaterdd)的结果,而不是实际的Spark状态RDD 在Grafana中,我们观察到spark streaming应用程序的总体内存使用量随着每批传入流处理而“增长”。Grafana中显示的工作节点(总体集群)的内存使用量远远高于驱动程序GUI中存储选项卡下的Mapwithstaterdd(mapwithstate操作的结果)大小 我停止输入数据大约30分钟,但内存使用

如何监控spark流媒体应用程序的状态大小?驱动程序GUI中的存储选项卡仅显示Mapwithstate操作(Mapwithstaterdd)的结果,而不是实际的Spark状态RDD

在Grafana中,我们观察到spark streaming应用程序的总体内存使用量随着每批传入流处理而“增长”。Grafana中显示的工作节点(总体集群)的内存使用量远远高于驱动程序GUI中存储选项卡下的Mapwithstaterdd(mapwithstate操作的结果)大小


我停止输入数据大约30分钟,但内存使用率从未下降。我怀疑大部分内存被spark“状态”消耗。有没有办法监视spark“状态”的大小?

似乎无法直接检查

从Spark UI中的“存储”页面,我们可以得到“MapWithStateRDD”的“内存大小”,但它包含该批的输入数据和状态

因此,内存成本大约是数据大小的3倍

默认情况下,Spark将缓存2*10(checkpointDuration)MapWithStateRDDs

因此,总内存开销很大。

“Mapwithstaterdd,但不是实际的Spark状态RDD”实际的Spark状态是什么意思?状态是通过RDD抽象保存的。另外,何时释放状态?不发送任何新数据并不意味着有状态流将丢弃其状态。