【问题标题】:Why does SparkContext randomly close, and how do you restart it from Zeppelin?为什么 SparkContext 会随机关闭,如何从 Zeppelin 重新启动?
【发布时间】:2016-06-01 14:32:00
【问题描述】:

我正在 Zeppelin 编写 spark-sql 查询,有时我突然开始收到此错误(在未更改代码之后):

Cannot call methods on a stopped SparkContext.

然后输出再往下说:

The currently active SparkContext was created at:

(No active SparkContext.)

这显然没有意义。这是 Zeppelin 中的错误吗?还是我做错了什么?如何重启 SparkContext?

谢谢

【问题讨论】:

  • 你用的是什么火花大师??是纱线客户端吗?

标签: apache-spark pyspark apache-spark-sql apache-zeppelin


【解决方案1】:

我曾多次遇到过这个问题。

如果您将 master 设置为 yarn-client,可能是由于资源管理器的停止/重新启动,解释器进程可能仍在运行但 Spark Context(它是一个 Yarn 应用程序)不再存在.

您可以通过咨询资源管理器 Web 界面来检查 Spark Context 是否仍在运行,并检查是否有名为 Zeppelin 的应用程序正在运行。

有时从 Zeppelin 中重新启动解释器进程(解释器选项卡 --> spark --> 重新启动)会解决问题。

其他时候您需要:

  • 从命令行终止 Spark 解释器进程
  • 删除 Spark 解释器 PID 文件
  • 下次开始段落时,它将开始新的火花上下文

【讨论】:

  • 感谢您的回答,我会在启动下一个集群时试试这个
【解决方案2】:

我在 PySpark 中运行多个作业时遇到了同样的问题。似乎在使用 SparkSession 的 Spark 2.0.0 中,当我调用 spark.stop() SparkSession 时,会调用以下跟踪:

# SparkSession 
self._sc.stop()
# SparkContext.stop()
self._jsc = None

然后,当我尝试使用新的 SparkContext 创建新作业时,SparkSession 返回与使用 self.jsc = None 之前相同的 SparkContext。

我解决了在spark.stop() 之后设置SparkSession._instantiatedContext = None 的问题,这会在我下次要求时强制 SparkSession 创建一个新的 SparkContext。

这不是最好的选择,但同时它正在解决我的问题。

【讨论】:

  • SparkSession 是在 spark 2.0.0 中引入的。
【解决方案3】:

在运行pyspark 命令时,我注意到这个问题更多,即使单元格执行在运行状态下挂起的微不足道的变量声明也是如此。 正如上面 user1314742 所说,只需杀死相关的PID 就可以为我解决这个问题。

例如:

ps -ef | grep zeppelin

这是重新启动 Spark 解释器和重新启动 zeppelin notebook 并不能解决问题的地方。我猜是因为它无法控制挂起的PID 本身。

【讨论】:

    【解决方案4】:

    您能检查一下您的驱动程序内存是否足够吗?我通过

    解决了这个问题
    1. 扩大驱动内存
    2. 调整 GC:

      --conf spark.cleaner.periodicGC.interval=60 
      --conf spark.cleaner.referenceTracking.blocking=false
      

    【讨论】:

      猜你喜欢
      • 2017-03-25
      • 1970-01-01
      • 2016-04-21
      • 1970-01-01
      • 2022-11-29
      • 1970-01-01
      • 2015-12-02
      • 2018-12-24
      • 1970-01-01
      相关资源
      最近更新 更多