单个工作节点停止工作

时间:2017-10-25 14:57:49

标签: apache-spark pyspark

我有一个Spark提交作业(PySpark),它可以在90%的时间内正常工作,但是对于10%,它会停留在特定的主机上。基本上任务可能需要几秒钟才能在其他主机上完成,但有时它会在我可以通过Spark UI识别的主机上停止运行。在这种情况下,我最终会杀死进程并重新运行。我想知道我的选择是什么来缓解这个问题。 我的基础架构是在Amazon AWS上运行的EC2实例上的独立Spark 2.1群集。我考虑过推测性执行,但是我的进程写入了s3,并且我被告知,为最终持久存储到s3的进程指定推测执行是一个坏主意。欢迎任何建议。

1 个答案:

答案 0 :(得分:1)

如果您的数据存在偏差,那么停滞在90%并不罕见,即您有一些分区包含大量数据,这可能导致大量GC和OOM。

在这种情况下,重新分区数据,例如通过RangePartitioner将是一个解决方案。