spark(kafka)流内存问题

t9eec4r0  于 2021-06-06  发布在  Kafka
关注(0)|答案(2)|浏览(571)

我在测试我的第一个 Spark Streaming 处理来自 Kafka . 但是,在几次测试运行之后,我得到了以下错误消息 There is insufficient memory for the Java Runtime Environment to continue. 我的测试数据非常小,因此这不应该发生。在调查了 process ,我意识到以前提交的spark作业可能没有完全删除?

我通常提交如下工作,我正在使用
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()

更新

在我改变了提交spark流作业的方式(如下所示的命令)之后,我仍然遇到了相同的问题,即在终止作业之后,内存不会被释放。我只是开始了 Hadoop 以及 Spark 对于这4个ec2节点。

/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
gblwokeq

gblwokeq1#

这可能是一堆驱动程序(spark-app-driver-process)进程在用于提交spark作业的主机上运行的问题。试着做一些像

ps aux --forest

或者根据您的平台来了解当前正在运行的进程。或者你也可以在stackoverflow上看看答案,spark streaming with actor never terminates,它可能会让你对正在发生的事情有一个了解。

h79rfbju

h79rfbju2#

当您按下ctrl-c时,只有提交者进程被中断,作业本身继续运行。最终您的系统会耗尽内存,因此无法启动新的jvm。
此外,即使重新启动集群,所有以前运行的作业也将重新启动。
阅读如何正确停止正在运行的spark应用程序。

相关问题