對 Azure HDInsight 上執行的 Apache Spark 作業進行偵錯

在本文中,您會了解如何對 HDInsight 叢集上執行的 Apache Spark 作業進行追蹤和偵錯。 使用 Apache Hadoop YARN UI、Spark UI 和 Spark 歷程記錄伺服器偵錯。 我們會使用 Spark 叢集中可用的 Notebook 啟動 Spark 作業,機器學習服務︰使用 MLLib 對食物檢查資料進行預測分析。 您也可以使用下列步驟追蹤您使用任何其他方法提交的應用程式,例如 spark-submit

如果您沒有 Azure 訂用帳戶,請在開始前建立免費帳戶

必要條件

追蹤 YARN UI 中的應用程式

  1. 啟動 YARN UI。 選取 [叢集儀表板] 下方的 [Yarn]

    Azure portal launch YARN UI.

    提示

    或者,您也可以從 Ambari UI 啟動 YARN UI。 若要啟動 Ambari UI,選取 [叢集儀表板] 下方的 [Ambari 首頁]。 從 Ambari UI 中,瀏覽至 [YARN]>[快速連結]> [啟用中的資源管理員] >[資源管理員 UI]

  2. 因為您使用 Jupyter Notebook 啟動 Spark 作業,應用程式擁有名稱 remotesparkmagics (從 Notebook 啟動的所有應用程式名稱)。 針對應用程式名稱選取應用程式識別碼,取得作業的詳細資訊。 此動作會啟動應用程式檢視。

    Spark history server Find Spark application ID.

    對於從 Jupyter Notebook 啟動的應用程式,狀態一律是「執行中」,直到您結束 Notebook 為止。

  3. 從應用程式檢視中,您可以進一步向下鑽研以找出與應用程式和記錄 (stdout/stderr) 相關聯的容器。 您也可以藉由按一下對應至 [追蹤 URL] 的連結,即可啟動 Spark UI,如下所示。

    Spark history server download container logs.

追蹤 Spark UI 中的應用程式

在 Spark UI 中,您可以向下鑽研至您先前啟動的應用程式所繁衍的 Spark 作業。

  1. 若要啟動 Spark UI,請從應用程式檢視中,針對 [追蹤 URL] 選取連結,如上方螢幕擷取畫面所示。 您可以看到應用程式啟動的所有 Spark 作業在 Jupyter Notebook 中執行。

    Spark history server jobs tab.

  2. 選取 [執行程式] 索引標籤,查看每個執行程式的處理和儲存資訊。 您也可以選取 [執行緒傾印] 連結,擷取呼叫堆疊。

    Spark history server executors tab.

  3. 選取 [階段] 索引標籤,查看與應用程式相關聯的階段。

    Spark history server stages tab.

    每個階段可以有多個工作,您可以檢視其執行統計資料,如下所示。

    Spark history server stages tab details.

  4. 從階段詳細資料頁面上,您可以啟動 DAG 視覺效果。 展開頁面頂端的 [DAG 視覺效果] 連結,如下所示。

    View Spark stages DAG visualization.

    DAG 或 Direct Aclyic Graph 代表應用程式中的不同階段。 每個圖形中的藍色方塊表示從應用程式叫用的 Spark 作業。

  5. 您也可以從階段詳細資料頁面上,啟動應用程式時間軸檢視。 展開頁面頂端的 [事件時間軸] 連結,如下所示。

    View Spark stages event timeline.

    此圖以時間軸形式顯示 Spark 事件。 時間軸檢視有三個層級,跨作業、作業內以及階段內。 以上的映像擷取指定階段的時間軸檢視。

    提示

    如果您選取 [啟用縮放功能] 核取方塊,您可以跨時間軸檢視左右捲動。

  6. Spark UI 中的其他索引標籤也提供 Spark 執行個體的實用資訊。

    • [儲存體] 索引標籤 - 如果您的應用程式建立 RDD,您可以在 [儲存體] 索引標籤中找到相關資訊。
    • [環境]索引標籤 - 這個標籤提供關於 Spark 執行個體的實用資訊,例如:
      • Scala 版本
      • 與叢集相關聯的事件記錄檔目錄
      • 應用程式的執行程式核心數目

使用 Spark 歷程記錄伺服器尋找已完成作業的相關資訊

完成作業後,作業的相關資訊會保存在 Spark 歷程記錄伺服器。

  1. 若要啟動 Spark 歷程記錄伺服器,請從 [概觀] 頁面中選與 [叢集儀表板] 下方的 [Spark 歷程記錄伺服器]

    Azure portal launch Spark history server.

    提示

    或者,您也可以從 Ambari UI 啟動 Spark 歷程記錄伺服器 UI。 若要啟動 Ambari UI,從 [概觀] 刀鋒視窗中選取 [叢集儀表板] 下方的 [Ambari 首頁]。 從 Ambari UI 瀏覽至 [Spark2]>[快速連結]>[Spark2 歷程記錄伺服器 UI]

  2. 您會看到所有已完成應用程式列出。 選取應用程式識別碼,向下切入至應用程式以取得更多資訊。

    Spark history server completed applications.

另請參閱