如何解決 Amazon EMR 中的「找不到工作階段 '0'」和「傳送 http 要求時發生錯誤,重試已達最大次數」錯誤?

1 分的閱讀內容
0

我想對在 Amazon EMR 上使用 Jupyter 筆記本執行 Apache Livy 應用程式時發生的錯誤進行疑難排解。

簡短描述

在 Amazon EMR 上使用 Jupyter 筆記本執行 Apache Livy 應用程式時,收到以下錯誤之一:

  • 來自 xxxxxxxx 的 '404',包含錯誤乘載:「找不到工作階段 '0'」
  • 「由於嚴重錯誤,代碼失敗: 傳送 http 要求時發生錯誤,重試已達最大次數。」

如果您持續 Jupyter 筆記本工作階段執行到逾時,通常就會發生這些錯誤。若要解決這些錯誤,請在主節點上的 /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 筆記本

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