Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Spark(卡夫卡)流式存储问题_Java_Apache Spark_Apache Kafka_Out Of Memory - Fatal编程技术网

Java Spark(卡夫卡)流式存储问题

Java Spark(卡夫卡)流式存储问题,java,apache-spark,apache-kafka,out-of-memory,Java,Apache Spark,Apache Kafka,Out Of Memory,我正在测试我的第一个Spark Streamingpipline,它处理来自Kafka的消息。然而,在几次测试运行之后,我得到了以下错误消息 内存不足,Java运行时环境无法继续。 我的测试数据非常小,因此不应该发生这种情况。查看过程后,我意识到可能以前提交的spark作业没有完全删除 我通常提交如下作业,我使用的是Spark 2.2.1 /usr/local/spark/bin/spark submit--packagesorg.apache.spark:spark-streaming-kaf

我正在测试我的第一个
Spark Streaming
pipline,它处理来自
Kafka
的消息。然而,在几次测试运行之后,我得到了以下错误消息
内存不足,Java运行时环境无法继续。

我的测试数据非常小,因此不应该发生这种情况。查看
过程后,我意识到可能以前提交的spark作业没有完全删除

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

并使用'Ctrl+C'停止它

脚本的最后几行如下所示:

ssc.start()
ssc.awaitTermination()
更新 在我改变提交spark流作业的方式(如下命令)后,我仍然遇到相同的问题,即在终止作业后,内存将不会被释放。我只为这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
/bin/spark submit--packagesorg.apache.spark:spark-streaming-kafka-0-8_2.11:2.0.2--py files~/config.py--master spark://:7077--deploy mode client~/spark_kafka.py

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

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


阅读。

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

ps aux --forest

或者根据您的平台了解当前正在运行的流程。或者,您可以在stackoverflow上查看答案,它可能会让您了解正在发生的事情。

谢谢您的建议。我尝试了两种方法
/usr/local/spark/bin/spark class org.apache.spark.deploy.Client kill
,并将post请求发送到
“:6066/v1/submissions/kill/”
。然而,这两种方法都未能释放内存。。。也许是因为我使用了错误的命令来启动使用集群的spark作业?这就是我使用的
/usr/local/spark/bin/spark submit--packagesorg.apache.spark:spark-streaming-kafka-0-8_2.11:2.0.2~/script/to/spark_streaming.py
你怎么知道内存没有释放?命令成功了吗?确保没有运行任何内容:“
curl”http://localhost:6066/json
“和/或。另请参见。我查看了
htop
,并按内存使用情况排序,以确定这些spark进程是否已被终止。我重新启动了集群(在EC2上),那些进程都消失了。。。也许所有这些都是因为我没有正确提交作业?我通常在主节点上提交作业。这意味着我应该使用
客户端模式
?或者您建议通过REST API提交?@TH339请描述您如何运行应用程序的过程。我的第一个建议是检查应用程序在本地的工作方式(Spark Master
local[*]
)@wind,我在一个EC2集群上运行了这个作业,其中有1个Master和3个Worker。