如何解决 Amazon EMR 中的错误“session '0' not found(找不到会话‘0’)”和“Error sending http request and maximum retry encountered(发送 http 请求时出错,遇到了最大重试次数)”?

2 分钟阅读
0

我想排查在 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

AWS 官方
AWS 官方已更新 1 年前