如何让 Zeppelin 在 EMR 集群上干净地重新启动?

Posted

技术标签:

【中文标题】如何让 Zeppelin 在 EMR 集群上干净地重新启动?【英文标题】:How can I get Zeppelin to restart cleanly on an EMR cluster? 【发布时间】:2017-06-21 07:28:27 【问题描述】:

我正在运行 EMR 集群并尝试使用 Zeppelin 笔记本进行数据分析。

版本: 发布标签:emr-5.2.1 Hadoop 发行版:Amazon 2.7.3 蜂巢 2.1.0 Spark 2.0.2 齐柏林飞艇 0.6.2

我在运行查询时一直遇到 Zeppelin 挂起的问题,我永远无法恢复它。我试过了: - 重新启动解释器 - SSH'ing到主节点并运行zeppelin_daemon.sh restart(尝试以hadoop / root / zeppelin运行,并使用选项reloadstart/stopupstart运行脚本)

每次我使用守护进程 shell 脚本时,它都会告诉我它已经停止/启动正常,但是当我运行一个状态时我得到这个:Zeppelin running but process is dead [FAILED]

我似乎唯一能做的就是杀死我的集群并建立一个新的集群,这在很多层面上都很疯狂。

那么...官方支持的重启 Zeppelin 的方式是什么???

【问题讨论】:

你解决了吗? 【参考方案1】:

我 ssh 进入主节点,然后运行 ​​

$ sudo stop zeppelin
zeppelin stop/waiting

$ sudo start zeppelin
zeppelin start/running, process 24434

刷新 Zeppelin 后立即返回 503,但大约 2 分钟后,用户界面再次可用。我检查了 /var/log/zeppelin 中的日志,配置设置需要一些时间。

【讨论】:

【参考方案2】:

EMR 上的服务使用 upstart,支持的重启方式是使用“sudo stop ; sudo start ”。 (启动和停止命令在/sbin,默认在PATH中)

注意:目前在 EMR 上存在一个限制,导致 /sbin/restart 无法正常工作,因此您必须使用 stop then start 而不是重新启动。

【讨论】:

我试过这个sudo /sbin/stop zeppelin 然后sudo /sbin/start zeppelin 现在网站显示503错误。访问 / 时出现问题。原因:服务不可用。在此之前,我尝试将 SIGTERM 发送到 zeppelin 服务的 PID。我想知道 EMR 用来运行 upstart 的实际命令是什么,可能不仅仅是start zeppelin 您收到 503 错误(与根本没有连接错误)这一事实意味着 Zeppelin 必须正在运行,但由于某种原因显然无法运行。您可以在 /var/log/zeppelin 中检查其日志以获取线索。顺便说一句,是的,EMR 运行的守护进程不仅仅是“sudo /sbin/start ”。【参考方案3】:

你试过了吗:

sudo /usr/lib/zeppelin/bin/zeppelin-daemon.sh stop/start?

【讨论】:

【参考方案4】:

这听起来有点傻,我不确定它为什么会起作用。但是,我在发出守护程序停止/启动并让它工作时遇到了问题。但是,如果我可以让守护程序运行,启动一个我知道可以工作的笔记本,然后更改为有问题的笔记本,有时可以解决挂起问题,至少到我可以恢复我所做的事情的程度。

【讨论】:

【参考方案5】:

在 EMR 5.30 及更高版本上,您需要使用 sudo systemctl stop 和 sudo systemctl start 命令

https://aws.amazon.com/premiumsupport/knowledge-center/restart-service-emr/

【讨论】:

【参考方案6】:

sudo service zeppelin start sudo service zeppelin stop sudo service zeppelin restart

https://zeppelin.apache.org/docs/0.7.2/install/install.html

【讨论】:

以上是关于如何让 Zeppelin 在 EMR 集群上干净地重新启动?的主要内容,如果未能解决你的问题,请参考以下文章

如何更改 EMR EC2 集群上的 Apache Zeppelin 配置以显示氦包?

是否可以通过 IAM 角色限制从 EMR (zeppelin) 访问 S3 数据?

如何告诉 spark 和 zeppelin 在 AWS EMR 中使用本地 maven .m2 目录?

如何在 EMR zeppelin 上安装 boto3

Zeppelin+Spark+Kubernetes:让 Zeppelin Job 在现有的 Spark 集群上运行

AWS EMR:Zeppelin 从 python 2.7 获取 numpy 版本而不是更高版本