运行Spark Streaming作业

时间:2017-01-05 06:33:12

标签: apache-spark jvm spark-streaming

我正在运行一个使用Kafka数据的Spark Streaming作业。数据流速是一致的并且始终在该范围内,并且每个火花流窗口正在完成相同的工作。 但我在JVM Heap(Eden)Space中看到了一种模式,它随着时间的推移越过了峰值。

我理解eden是指在启动时为内存分配内存,但随着时间的推移它随着时间的推移而增长,因为对象的数量必须不同。 enter image description here

从上图中,您可以看到内存利用率不断增长的趋势,代码中没有任何不同。

随着时间的推移,Spark Streaming是否有可能创建越来越多的对象,因此堆自动增长或代码中存在一些缺陷? 我试图检查内存泄漏或不必要的对象创建,但无法找到任何。

G1GC更新 运行G1GC时,我可以看到类似的趋势。由于我正在处理大对象,我将区域堆大小增加到16M -XX:G1HeapRegionSize = 16M。

enter image description here

我可以看到Live Set + Fragmentation有一个跳跃,它达到了61%。

进一步研究同样的事情,我意识到伊甸园记忆力是稳定的,但是G1老一代记忆力一直在增长。我不知道为什么,但是大量的物体都拿着参考物。不确定Spark Streaming中的原因和位置?

0 个答案:

没有答案