我想對在 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 筆記本