首页 > 解决方案 > 如何重新启动停止的 Spark 上下文?

问题描述

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

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

为了重新启动 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 上下文?

标签: apache-sparkhadooppysparkapache-zeppelin

解决方案


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

zeppelin 隔离模式

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

zeppelin 分离实例

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

zeppelin 解释器绑定菜单


推荐阅读