[英]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节点启动了Hadoop
和Spark
。
/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-app-driver进程)进程的问题。 尝试做类似的事情
ps aux --forest
或类似的,取决于您的平台,以了解当前正在运行的进程。 或者你可以看看堆栈溢出Spark Streaming与Actor Never Terminates的答案,它可能会给你一个关于正在发生的事情的胶水。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.