【发布时间】:2017-02-14 13:11:58
【问题描述】:
我在火花流中面临一个非常奇怪的问题。我正在使用spark 2.0.2,节点数 3,执行程序数 3 {1 个接收器和 2 个处理器},每个执行程序的内存 2 GB,每个执行程序的内核数 1。批处理间隔为 10 秒。我的批量大小约为。 1000 条记录(大约 150 KB)。
我的批处理时间从最初的 2 秒逐渐增加到几分钟,但在前 40-50 小时内运行良好。之后,调度延迟和处理时间开始增加。
我试过看一下GC,驱动的老年代堆内存容量不断增加。这可能是原因吗?我使用jstat 监控堆内存。容量在六个小时内从 1161216 字节增加到 1397760 字节。
运行驱动程序的机器有 8 个物理内核,经过 40-50 小时的流式处理后,机器上的 CPU 使用率在所有 8 个内核上为 100%,老年代堆使用率已满,FullGC 的非常频繁。
我还看到了jira issue,它说 spark 流中存在内存泄漏,但它也说它在 spark 1.5 之后得到了解决。这相关吗?
编辑:
我还在应用程序启动大约 50 小时后进行了堆转储。
【问题讨论】:
-
你在Dstream上做了哪些操作?
-
一些聚合,加入 cassandra 并存储回 cassandra
-
我的批处理间隔是 20 秒
标签: apache-spark garbage-collection spark-streaming