跳至內容

如何對無法在 Amazon EMR 筆記本中執行的 Spark 應用程式進行疑難排解?

2 分的閱讀內容
0

我想要對無法在 Amazon EMR 筆記本中執行的 Apache Spark 應用程式進行疑難排解。

簡短說明

在 Amazon EMR 筆記本中執行的 Spark 應用程式,可能會因以下錯誤而無法啟動:

「The code failed because of a fatal error: Session 4 did not start up in 60 seconds.」

解決方法

檢查叢集上的資源

確認 Spark 在叢集中有足夠的可用資源,讓 Jupyter 建立 Spark 內容。若要檢查可用資源,請使用 Amazon CloudWatch 指標或 Resource Manager。

請確認已正確設定 Sparkmagic 程式庫

請聯絡您的 Jupyter 管理員,確認 Sparkmagic 程式庫已正確設定。

重新啟動筆記本核心

請完成以下步驟:

  1. 開啟 Amazon EMR console (Amazon EMR 主控台)。
  2. 在導覽列中,選擇 Workspaces (Notebooks) (工作區 (筆記本))。
  3. Workspaces (Notebooks) (工作區 (筆記本)) 清單中選取工作區,然後選擇 Quick Launch (快速啟動)。或者,從清單中選擇工作區,然後選擇 Attach (連接),接著選擇 Launch in JupyterLab (在 JupyterLab 中啟動) 或選擇 Launch in Jupyter (在 Jupyter 中啟動)。
  4. 選擇 Kernel (核心),然後選擇 Restart Kernel (重新啟動核心)。

增加 JupyterLab 的 Spark 工作階段逾時期間

請完成以下步驟:

  1. 開啟 Amazon EMR console (Amazon EMR 主控台)。

  2. 在導覽列中,選擇 Workspaces (Notebooks) (工作區 (筆記本))。

  3. Workspaces (Notebooks) (工作區 (筆記本)) 清單中選取工作區,然後選擇 Quick Launch (快速啟動)。新的瀏覽器索引標籤會開啟至 JupyterLab editor (JupyterLab 編輯器)。

  4. 開啟 notebook terminal (筆記本終端)。

  5. 執行以下命令以開啟 config.json 檔案:

    vi /home/notebook/.sparkmagic/config.json

    **注意:**如果您在 Amazon EMR 主執行個體中安裝 JupyterHub 應用程式,請執行以下命令:

    vi /etc/jupyter/conf/config.json
  6. config.json 檔案中新增或更新 livy_session_startup_timeout_seconds: ### 選項。

  7. 重新啟動所有核心。
    **注意:**如果您在 Amazon EMR 主執行個體中安裝 JupyterHub 應用程式,請重新啟動 JupyterHub 容器。

調整 Spark 驅動程式記憶體

修改 Jupyter 筆記本應用程式使用的 Spark 驅動程式記憶體,以控制資源配置。如需更多資訊,請參閱如何修改 Amazon EMR Studio 工作區中的 Spark 組態?

確認 Livy 服務運作狀態良好

檢查在主節點執行個體上執行的 Livy 伺服器狀態

請完成以下步驟:

  1. 若要檢查 livy-server 的狀態,請執行以下命令:

    sudo systemctl status livy-server
  2. 如果伺服器狀態為 down,請執行以下命令以重新啟動 livy-server:

    sudo systemctl start livy-server

增加 Livy Server 記憶體

依預設,筆記本用戶端會嘗試在 90 秒內連線至 Apache Livy 伺服器。如果 Livy 伺服器未在 90 秒內回應,則用戶端會產生逾時。Livy 伺服器未回應的最常見原因是資源不足。若要修正此問題,請增加 Livy 伺服器的記憶體。

請完成以下步驟:

  1. 使用 SSH 連線至主節點執行個體

  2. 將以下屬性新增至 /etc/livy/conf/livy-env.sh 檔案:

    export LIVY_SERVER_JAVA_OPTS="-Xmx8g" (option to your value)
  3. 重新啟動 Livy 伺服器。

    sudo systemctl stop livy-server; sudo systemctl start livy-server

在 Livy 中使用叢集模式,而非用戶端模式

當您以用戶端模式在筆記本上提交 Spark 應用程式時,Spark 驅動程式會以 Livy 伺服器的子程序執行。如果您執行子程序,則主節點上可能會發生資源不足。若要避免因資源不足而導致 Livy 失敗,請將部署模式變更為叢集模式。當您以叢集模式執行 Spark 應用程式時,驅動程式會在核心和任務節點上執行,而不是在主節點上執行。

請完成以下步驟:

  1. 使用 SSH 連線至主節點

  2. 將以下參數新增至 /etc/livy/conf/livy.conf 檔案:

    livy.spark.deploy-mode  cluster
  3. 重新啟動 Livy 伺服器:

    sudo systemctl stop livy-server; sudo systemctl start livy-server
AWS 官方已更新 6 個月前