Nab*_*Nab 7 out-of-memory apache-spark spark-streaming kubernetes
我们正在使用 spark 2.4.5 在 Kubernetes 集群上运行 Spark Streaming 应用程序。该应用程序通过 Kafka 主题接收大量数据(每 3 毫秒一条消息)。正在使用 4 个执行程序和 4 个 kafka 分区。
在运行时,驱动程序 Pod 的内存不断增加,直到它被 K8s 以“OOMKilled”状态杀死。执行者的记忆没有面临任何问题。
使用此命令检查驱动程序 pod 资源时:
kubectl top pod podName
Run Code Online (Sandbox Code Playgroud)
我们可以看到内存增加到 1.4GB,并且 pod 被杀死。
但是,在 Spark UI 上查看驱动程序的存储内存时,我们可以看到存储内存未完全使用(50.3 KB / 434 MB)。驱动程序的存储内存和包含驱动程序的 pod的内存有什么区别吗?
有没有人有过类似问题的经验?
任何帮助,将不胜感激。
以下是有关该应用程序的更多详细信息:
简单来说,Spark内存由三部分组成:
spark.memory.fraction)),用于Spark中的缓存和shuffle。除此之外,K8s 中还有非JVM 内存使用的额外内存max(executor memory * 0.1, 384MB)。0.1spark.kubernetes.memoryOverheadFactor
在 K8S 中通过内存开销添加执行程序内存限制应该可以修复 OOM。
您还可以减少spark.memory.fraction分配更多 RAM 给用户内存。
| 归档时间: |
|
| 查看次数: |
546 次 |
| 最近记录: |