繁体   English   中英

Spark(Kafka)流式内存问题

[英]Spark (Kafka) Streaming Memory Issue

我正在测试我的第一个处理来自Kafka消息的Spark Streaming pipline。 但是,经过多次测试运行后,我收到以下错误消息: There is insufficient memory for the Java Runtime Environment to continue.

我的测试数据非常小,因此不应该这样。 在调查process ,我意识到之前提交的火花作业可能没有完全删除? 在此输入图像描述

我通常提交下面的工作,我使用的是Spark 2.2.1 /usr/local/spark/bin/spark-submit --packages org.apache.spark:spark-streaming-kafka-0-8_2.11:2.0.2 ~/script/to/spark_streaming.py

并使用`Ctrl + C'停止它

脚本的最后几行看起来像:

ssc.start()
ssc.awaitTermination()

更新

在我改变提交火花流媒体作业的方式(如下所示的命令)之后,我仍然遇到同样的问题,即在杀死作业之后,内存将不会被释放。我只为这4个EC2节点启动了HadoopSpark

/bin/spark-submit --packages org.apache.spark:spark-streaming-kafka-0-8_2.11:2.0.2 --py-files ~/config.py --master spark://<master_IP>:7077 --deploy-mode client  ~/spark_kafka.py

按Ctrl-C时,只有提交者进程被中断,作业本身才会继续运行。 最终您的系统内存不足,因此无法启动新的JVM。

此外,即使重新启动群集,所有先前运行的作业也将重新启动。

阅读如何正确停止正在运行的Spark应用程序

这可能是您用于提交spark作业的主机上运行的一堆驱动程序(spark-app-driver进程)进程的问题。 尝试做类似的事情

ps aux --forest

或类似的,取决于您的平台,以了解当前正在运行的进程。 或者你可以看看堆栈溢出Spark Streaming与Actor Never Terminates的答案,它可能会给你一个关于正在发生的事情的胶水。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM