如何监控火花流应用的状态大小?驱动程序GUI中的存储选项卡仅显示Mapwithstate操作的结果(Mapwithstaterdd,但不显示实际的Spark状态RDD!
从Grafana,我们观察到火花流应用程序的整体内存使用量随着每批传入流处理而“增长”。 Grafana中显示的工作节点(整个群集)的内存使用量远远高于驱动程序GUI中“存储”选项卡下的Mapwithstaterdd(mapwithstate操作的结果)大小。
我停止输入输入数据大约30分钟,但内存使用量从未降低。我怀疑大部分内存是由火花'状态'消耗的。有没有办法可以监控火花'状态'的大小?
答案 0 :(得分:0)
似乎无法直接检查。
从Spark UI的“存储”页面中,我们可以获取“ MapWithStateRDD”的“内存大小”。但是它包含该批次的输入数据和状态。
与Understanding Spark Caching一样,内存成本大约是数据大小的3倍。
默认情况下,Spark将缓存2 * 10(checkpointDuration)MapWithStateRDD。
因此,总内存成本很大。