對 Azure HDInsight 上執行的 Apache Spark 作業進行偵錯
在本文中,您會了解如何對 HDInsight 叢集上執行的 Apache Spark 作業進行追蹤和偵錯。 使用 Apache Hadoop YARN UI、Spark UI 和 Spark 歷程記錄伺服器偵錯。 我們會使用 Spark 叢集中可用的 Notebook 啟動 Spark 作業,機器學習服務︰使用 MLLib 對食物檢查資料進行預測分析。 您也可以使用下列步驟追蹤您使用任何其他方法提交的應用程式,例如 spark-submit。
如果您沒有 Azure 訂用帳戶,請在開始前建立免費帳戶。
必要條件
HDInsight 上的 Apache Spark 叢集。 如需指示,請參閱在 Azure HDInsight 中建立 Apache Spark 叢集。
您應該開始執行 Notebook, 機器學習服務︰使用 MLLib 對食物檢查資料進行預測分析。 如需有關如何執行此 Notebook 的指示,請依照下列連結。
追蹤 YARN UI 中的應用程式
啟動 YARN UI。 選取 [叢集儀表板] 下方的 [Yarn]。
提示
或者,您也可以從 Ambari UI 啟動 YARN UI。 若要啟動 Ambari UI,選取 [叢集儀表板] 下方的 [Ambari 首頁]。 從 Ambari UI 中,瀏覽至 [YARN]>[快速連結]> [啟用中的資源管理員] >[資源管理員 UI]。
因為您使用 Jupyter Notebook 啟動 Spark 作業,應用程式擁有名稱 remotesparkmagics (從 Notebook 啟動的所有應用程式名稱)。 針對應用程式名稱選取應用程式識別碼,取得作業的詳細資訊。 此動作會啟動應用程式檢視。
對於從 Jupyter Notebook 啟動的應用程式,狀態一律是「執行中」,直到您結束 Notebook 為止。
從應用程式檢視中,您可以進一步向下鑽研以找出與應用程式和記錄 (stdout/stderr) 相關聯的容器。 您也可以藉由按一下對應至 [追蹤 URL] 的連結,即可啟動 Spark UI,如下所示。
追蹤 Spark UI 中的應用程式
在 Spark UI 中,您可以向下鑽研至您先前啟動的應用程式所繁衍的 Spark 作業。
若要啟動 Spark UI,請從應用程式檢視中,針對 [追蹤 URL] 選取連結,如上方螢幕擷取畫面所示。 您可以看到應用程式啟動的所有 Spark 作業在 Jupyter Notebook 中執行。
選取 [執行程式] 索引標籤,查看每個執行程式的處理和儲存資訊。 您也可以選取 [執行緒傾印] 連結,擷取呼叫堆疊。
選取 [階段] 索引標籤,查看與應用程式相關聯的階段。
每個階段可以有多個工作,您可以檢視其執行統計資料,如下所示。
從階段詳細資料頁面上,您可以啟動 DAG 視覺效果。 展開頁面頂端的 [DAG 視覺效果] 連結,如下所示。
DAG 或 Direct Aclyic Graph 代表應用程式中的不同階段。 每個圖形中的藍色方塊表示從應用程式叫用的 Spark 作業。
您也可以從階段詳細資料頁面上,啟動應用程式時間軸檢視。 展開頁面頂端的 [事件時間軸] 連結,如下所示。
此圖以時間軸形式顯示 Spark 事件。 時間軸檢視有三個層級,跨作業、作業內以及階段內。 以上的映像擷取指定階段的時間軸檢視。
提示
如果您選取 [啟用縮放功能] 核取方塊,您可以跨時間軸檢視左右捲動。
Spark UI 中的其他索引標籤也提供 Spark 執行個體的實用資訊。
- [儲存體] 索引標籤 - 如果您的應用程式建立 RDD,您可以在 [儲存體] 索引標籤中找到相關資訊。
- [環境]索引標籤 - 這個標籤提供關於 Spark 執行個體的實用資訊,例如:
- Scala 版本
- 與叢集相關聯的事件記錄檔目錄
- 應用程式的執行程式核心數目
使用 Spark 歷程記錄伺服器尋找已完成作業的相關資訊
完成作業後,作業的相關資訊會保存在 Spark 歷程記錄伺服器。
若要啟動 Spark 歷程記錄伺服器,請從 [概觀] 頁面中選與 [叢集儀表板] 下方的 [Spark 歷程記錄伺服器]。
提示
或者,您也可以從 Ambari UI 啟動 Spark 歷程記錄伺服器 UI。 若要啟動 Ambari UI,從 [概觀] 刀鋒視窗中選取 [叢集儀表板] 下方的 [Ambari 首頁]。 從 Ambari UI 瀏覽至 [Spark2]>[快速連結]>[Spark2 歷程記錄伺服器 UI]。
您會看到所有已完成應用程式列出。 選取應用程式識別碼,向下切入至應用程式以取得更多資訊。