我在火花流中遇到了一个非常奇怪的问题。我正在使用spark 2.0.2
,节点数3,执行器数量3 {1接收器和2个处理器},每个执行器2 GB内存,每个执行器1个核心。批处理间隔为10秒。我的批量大约是。 1000条记录(约150 KB)。
我的批次的处理时间从最初的2秒逐渐增加到几分钟,但是在前40-50小时它运行得非常好。之后,调度延迟和处理时间开始拍摄。
我曾试过看一下GC,并且驱动程序的老一代堆内存容量不断增加。这可能是原因吗?我使用jstat监视堆内存。在6小时内,容量从1161216字节增加到1397760字节。
运行驱动程序的机器有8个物理内核,经过40-50小时的流式传输后,所有8个内核的机器CPU使用率均为100%,老一代堆使用率已满且 FullGC 非常频繁。
我还看到一个jira issue表示火花流中存在内存泄漏,但它也说它在火花1.5之后被解决了。这有关系吗?
修改:
我还在应用程序启动后大约50小时进行了堆转储。