使用適用於 IntelliJ 的 Azure 工具組透過 SSH 對 HDInsight 叢集上的 Apache Spark 應用程式進行偵錯
本文提供如何在 Azure Toolkit for IntelliJ 中使用 HDInsight 工具,在 HDInsight 叢集上遠端偵錯應用程式的逐步指引。
必要條件
HDInsight 上的 Apache Spark 叢集。 請參閱 建立 Apache Spark 叢集。
針對 Windows 使用者:當您在 Windows 電腦上執行本機 Spark Scala 應用程式時,可能會發生例外狀況,如 SPARK-2356 中所述。 發生例外狀況的原因是 Windows 上遺漏WinUtils.exe。
若要解決此錯誤,請將Winutils.exe下載到 C:\WinUtils\bin 之類的位置。 然後,將環境變數 新增HADOOP_HOME,並將變數的值設定為 C:\WinUtils。
IntelliJ IDEA (社群版本是免費的。
適用於 IntelliJ 的 Azure 工具組。
IntelliJ 的 Scala 外掛程式。
SSH 用戶端。 如需詳細資訊,請參閱使用 SSH 連線至 HDInsight (Apache Hadoop)。
建立Spark Scala 應用程式
啟動 IntelliJ IDEA,然後選取 [ 建立新專案 ] 以開啟 [ 新增專案 ] 視窗。
從左窗格中選取 [Apache Spark/HDInsight ]。
從主視窗中選取 [Spark 專案與範例][Scala ]。
從 [ 建置工具 ] 下拉式清單中,選取下列其中一項:
- 適用於 Scala 專案建立精靈的 Maven 支援。
- 用於管理 Scala 專案的相依性和建置的 SBT 。
選取 [下一步]。
在下一個 [新增專案] 視窗中,提供下列資訊:
屬性 說明 專案名稱 輸入名稱。 此逐步解說會使用 myApp
。專案位置 輸入儲存專案所需的位置。 專案 SDK 如果空白,請選取 [ 新增... ],然後流覽至您的 JDK。 Spark 版本 建立精靈會整合 Spark SDK 和 Scala SDK 的適當版本。 如果 Spark 叢集版本早於 2.0,請選取 [Spark 1.x] 。 否則,請選取 [Spark 2.x.]。 此範例使用Spark 2.3.0 (Scala 2.11.8)。 選取 [完成]。 可能需要幾分鐘的時間,專案才會可供使用。 觀看右下角的進度。
展開您的專案,然後流覽至 src> 主要> Scala> 範例。 按兩下 SparkCore_WasbIOTest。
執行本機執行
從SparkCore_WasbIOTest腳本中,以滑鼠右鍵按下腳本編輯器,然後選取 [執行 'SparkCore_WasbIOTest' 選項來執行本機執行。
在本機執行完成之後,您可以看到輸出檔儲存到您目前的專案總管數據>預設值。
當您執行本機執行和本機偵錯時,我們的工具會自動設定預設的本機執行組態。 開啟右上角的 [HDInsight 上的 Spark] XXX 組態,您可以看到 [HDInsight 上的 Spark] XXX 已在 HDInsight 上的 Apache Spark 下建立。 切換至 [ 本機執行] 索引標籤。
- 環境變數:如果您已經將系統環境變數 HADOOP_HOME 設定為 C:\WinUtils,它可以自動偵測不需要手動新增。
- WinUtils.exe位置:如果您尚未設定系統環境變數,您可以按下其按鈕來尋找位置。
- 只要選擇兩個選項之一,在 MacOS 和 Linux 上就不需要它們。
您也可以在執行本機執行和本機偵錯之前手動設定組態。 在上述螢幕快照中,選取加號 (+)。 然後選取 [HDInsight 上的 Apache Spark] 選項。 輸入 [ 名稱]、 [主要類別名稱 ] 以儲存的信息,然後按兩下 [本機執行] 按鈕。
執行本機偵錯
開啟SparkCore_wasbloTest腳本,設定斷點。
以滑鼠右鍵按下腳本編輯器,然後選取 [偵錯 HDInsight 上的 Spark]XXX] 選項來執行本機偵錯。
執行遠端執行
流覽至 [執行>編輯組態...]。在此功能表中,您可以建立或編輯遠端偵錯的組態。
在 [ 執行/偵錯組態 ] 對話框中,選取加號 (+)。 然後選取 [HDInsight 上的 Apache Spark] 選項。
切換至 [在叢集中遠端執行] 索引標籤。輸入 [名稱]、[Spark 叢集] 和 [主要類別名稱] 的資訊。 然後按下 [進階設定] [遠端偵錯]。 我們的工具支援使用執行程序進行偵錯。 numExectors,預設值為 5。 您最好不要設定高於 3。
在 [ 進階設定][遠端偵錯] 元件中 ,選取 [ 啟用Spark 遠端偵錯]。 輸入 SSH 使用者名稱,然後輸入密碼或使用私鑰檔案。 如果您想要執行遠端偵錯,您必須加以設定。 如果您只想使用遠端執行,就不需要設定它。
設定現在會以您提供的名稱儲存。 若要檢視組態詳細數據,請選取組態名稱。 若要進行變更,請選取 [ 編輯組態]。
完成組態設定之後,您可以對遠端叢集執行專案,或執行遠端偵錯。
按兩下提交記錄未出現在左面板中的 [ 中斷連線 ] 按鈕。 不過,它仍在後端執行。
執行遠端偵錯
設定斷點,然後按兩下 [遠端偵錯] 圖示。 遠端提交的差異在於必須設定SSH使用者名稱/密碼。
當程式執行到達斷點時,您會在 [調試程式] 窗格中看到 [驅動程式] 索引卷標和兩個執行程式索引標籤。 選取 [ 繼續程式 ] 圖示以繼續執行程式碼,然後到達下一個斷點。 您必須切換至正確的 執行程式 索引標籤,才能尋找要偵錯的目標執行程式。 您可以在對應的 [主控台 ] 索引標籤上檢視執行記錄。
執行遠端偵錯和錯誤修正
設定兩個斷點,然後選取 [ 偵 錯] 圖示以啟動遠端偵錯程式。
程序代碼會在第一個斷點停止,參數和變數資訊會顯示在 [變數 ] 窗格中。
選取繼續 程序 圖示以繼續。 程序代碼會在第二個點停止。 例外狀況會如預期般攔截。
再次選取 [ 繼續程式] 圖示。 HDInsight Spark 提交 視窗會顯示「作業執行失敗」錯誤。
若要使用 IntelliJ 偵錯功能動態更新變數值,請再次選取 [ 偵 錯]。 [ 變數] 窗格會再次出現。
以滑鼠右鍵按兩下 [偵錯] 索引標籤上的目標,然後選取 [設定值]。 接下來,輸入變數的新值。 然後選取 Enter 以儲存值。
選取繼續 程序 圖示以繼續執行程式。 這次,不會攔截任何例外狀況。 您可以看到專案順利執行,而不會有任何例外狀況。
下一步
案例
- Apache Spark with BI:搭配 BI 工具在 HDInsight 中使用 Spark 執行互動式數據分析
- 具有 機器學習 的 Apache Spark:使用 HDInsight 中的 Spark,使用 HVAC 數據分析建築物溫度
- Apache Spark 和機器學習服務:在 HDInsight 中使用 Spark 預測食品檢查結果
- 在 HDInsight 中使用 Apache Spark 進行網站記錄分析
建立及執行應用程式
工具和延伸模組
- 使用適用於 IntelliJ 的 Azure 工具組建立 HDInsight 叢集的 Apache Spark 應用程式
- 使用適用於 IntelliJ 的 Azure 工具組,透過 VPN 從遠端偵錯 Apache Spark 應用程式
- 使用適用於 Eclipse 的 Azure 工具組中的 HDInsight 工具建立 Apache Spark 應用程式
- 在 HDInsight 上搭配使用 Apache Zeppelin Notebook 和 Apache Spark 叢集
- 適用於 HDInsight 的 Apache Spark 叢集中 Jupyter Notebook 的核心
- 搭配 Jupyter Notebook 使用外部套件
- 在電腦上安裝 Jupyter 並連接到 HDInsight Spark 叢集