如何重新启动停止的 Spark 上下文?

Posted

技术标签:

【中文标题】如何重新启动停止的 Spark 上下文?【英文标题】:How do I restart a stopped Spark Context? 【发布时间】:2020-09-03 11:45:17 【问题描述】:

我正在使用 apache zeppelin 和 hadoop 运行 Spark。我的理解是 Zeppelin 就像一个 kube 应用程序,它向运行 Spark 并使用 Hadoop 访问文件的远程机器发送命令。

我经常遇到 Spark 上下文停止的情况。过去,我认为这是因为我用需要太多数据的数据拉取系统使系统过载,但现在我对这个理论不太感兴趣。在运行完全合理且正常的查询后,我经常发生这种情况。

为了重新启动 Spark 上下文,我已经进入解释器绑定设置并重新启动了 spark。

我也运行过这个命令

%python

JSESSIONID="09123q-23se-12ae-23e23-dwtl12312
YOURFOLDERNAME="[myname]"
import requests
import json


cookies = "JSESSIONID": JSESSIONID
notebook_response = requests.get('http://localhost:8890/api/notebook/jobmanager', cookies=cookies)
body = json.loads(notebook_response.text)["body"]["jobs"]
notebook_ids = [(note["noteId"]) for note in body if note.get("interpreter") == "spark" and YOURFOLDERNAME in note.get("noteName", "")]


for note_id in notebook_ids:
    requests.put("http://localhost:8890/api/interpreter/setting/restart/spark", data=json.dumps("noteId": note_id), cookies=cookies)

我还去了运行 spark 的机器并输入了yarn top,但我没有在正在运行的应用程序列表中看到我的用户名。

我知道如果我重新启动机器,我可以让它工作,但这也会为使用它的其他人重新启动机器。

我可以通过哪些其他方式重新启动 Spark 上下文?

【问题讨论】:

这绝对不是 Spark 内部的一个进程,相反,我认为它与 zeppelin 有关。 Apache Zeppelin 只是一个运行 Spark 的客户端,它就像 Jupyter。您是在本地运行还是在云端运行? 我在云端运行 【参考方案1】:

我假设您已将 spark 解释器配置为在隔离模式下运行:

在这种情况下,您会为每个用户获得单独的实例:

您可以通过按刷新按钮重新启动自己的实例并从笔记本的解释器绑定菜单中获取新的 SparkContext(使用 zeppelin 0.82 测试):

【讨论】:

以上是关于如何重新启动停止的 Spark 上下文?的主要内容,如果未能解决你的问题,请参考以下文章

关闭或停止后重新加载弹簧上下文

Zeppelin:如何在 zeppelin 中重新启动 sparkContext

HTML5 音频:如何快速停止和重新启动剪辑?

如何重新启动一些被“ctrl+z”停止的进度?

如何在 IIS 7.5 中配置应用程序池在停止时自动重新启动?

Laravel如何停止/重新启动特定队列的工作人员?