我想排查在 Amazon EMR 上使用 Jupyter Notebook 运行 Apache Livy 应用程序时出现的错。
简短描述
当您在 Amazon EMR 上使用 Jupyter Notebook 运行 Apache Livy 应用程序时,出现以下错误之一:
- '404' from xxxxxxxx with error payload: "session '0' not found"(‘404’来自 xxxxxxxx,有效载荷错误:找不到会话‘0’)
- “The code failed because of a fatal error: Error sending http request and maximum retry encountered.(由于致命错误,代码失败:发送 http 请求时出错,遇到了最大重试次数。)”
在您使 Jupyter Notebook 会话一直运行直到其超时的情况下,通常会发生这些错误。要解决这些错误,请在主节点上的 /etc/livy/conf/livy.conf 中增加 livy.server.session.timeout 属性的值。然后,重新启动 livy-server。
解决方法
您可以在正在运行的 Amazon EMR 集群上或启动新集群时修改 livy.server.session.timeout。
正在运行的集群上
1. 在主节点上打开 /etc/livy/conf/livy.conf,然后修改 livy.server.session.timeout 值(默认值为 1h)。例如:
sudo vim /etc/livy/conf/livy.conf
livy.server.session.timeout 2h
2. 在主节点上运行以下命令以重新启动 livy-server:
假设您使用的是以下基于 Amazon Linux 2 的 Amazon EMR 发行版本之一:
- Amazon EMR 发行版 5.30.0 或更高版本
- Amazon EMR 6.x 系列
然后运行以下命令:
sudo systemctl stop livy-server
sudo systemctl start livy-server
如果您使用的是 Amazon EMR 发行版 5.29.0 或更早的版本,则运行以下命令:
sudo stop livy-server
sudo start livy-server
livy-server 正在重新启动时,您的集群不可用。为避免停机,请在启动 Amazon EMR 集群时配置 Livy 应用程序。
在新集群上
在使用 Amazon EMR 发行版本 4.6.0 或更高版本启动集群时,请添加如下所示的配置对象。除了修改 livy.server.session.timeout 之外,您还可以修改以下相关属性(如果需要):
- livy.server.session.timeout-check:启用后,Livy 将停止达到超时阈值的空闲会话。默认设置为 true。
- livy.server.yarn.app-lookup-timeout:Livy 在将 YARN 应用程序视为丢失之前寻找该应用程序的持续时间。默认设置为 60s。
[
{
"Classification": "livy-conf",
"Properties": {
"livy.server.session.timeout-check": "true",
"livy.server.session.timeout": "2h",
"livy.server.yarn.app-lookup-timeout": "120s"
}
}
]
运行作业完成后,请务必关闭 Jupyter 或 Zeppelin 中的会话。如果打开过多会话,那么在资源可用之前无法启动新的作业。
相关信息
Apache Livy
Amazon EMR 上的 Jupyter Notebook