HDInsight 上的 Apache Spark 叢集已知問題
這份文件記錄 HDInsight Spark 公開預覽版本的所有已知問題。
Apache Livy 會流失互動式工作階段
Apache Livy 在互動式工作階段仍作用中的情況下重新啟動時 (從 Apache Ambari 或是因為前端節點 0 虛擬機器重新開機),互動式作業工作階段將會流失。 因此,新的作業可能會卡在「已接受」狀態中。
避免方法:
請使用下列程序解決此問題:
Ssh 到前端節點。 如需相關資訊,請參閱搭配 HDInsight 使用 SSH。
執行下列命令,以尋找透過 Livy 啟動之互動式作業的應用程式識別碼。
yarn application –list
如果使用 Livy 互動式工作階段啟動工作時沒有明確指定名稱,則預設作業名稱會是 Livy。 在由 Jupyter Notebook 所啟動的 Livy 工作階段中,作業名稱的開頭為
remotesparkmagics_*
。執行下列命令以刪除這些作業。
yarn application –kill <Application ID>
新的作業開始執行。
Spark 歷程記錄伺服器未啟動
叢集建立後,不會自動啟動 Spark 歷程記錄伺服器。
避免方法:
請從 Ambari 手動啟動歷程記錄伺服器。
Spark 記錄檔目錄中的權限問題
hdiuser 在使用 spark-submit 提交作業時會發生下列錯誤:
java.io.FileNotFoundException: /var/log/spark/sparkdriver_hdiuser.log (Permission denied)
沒有任何驅動程式記錄寫入。
避免方法:
- 將 hdiuser 新增至 Hadoop 群組。
- 在叢集建立之後,提供 /var/log/spark 的 777 權限。
- 使用 Ambari 將 Spark 記錄檔位置更新為具有 777 權限的目錄。
- 以 sudo 的身分執行 spark-submit。
不支援 Spark-Phoenix 連接器
HDInsight Spark 叢集不支援 Spark-Phoenix 連接器。
避免方法:
您必須改用 Spark-HBase 連接器。 如需指示,請參閱如何使用 Spark-HBase 連接器。
Jupyter Notebook 的相關問題
以下是 Jupyter Notebook 的部分已知問題。
Notebook 在檔名中有非 ASCII 字元
請勿在 Jupyter Notebook 檔名中使用非 ASCII 字元。 如果您嘗試透過 Jupyter UI 上傳具有非 ASCII 檔名的檔案,則會上傳失敗,但沒有任何錯誤訊息。 Jupyter 不會讓您上傳檔案,但也不會擲回可見的錯誤。
載入大型 Notebook 時發生錯誤
載入大型 Notebook 時,您可能會看到錯誤訊息 Error loading notebook
。
避免方法:
如果您收到這個錯誤,並不表示您的資料已損毀或遺失。 您的 Notebook 仍在磁碟的 /var/lib/jupyter
中,您可以透過 SSH 連線到叢集來加以存取。 如需相關資訊,請參閱搭配 HDInsight 使用 SSH。
在您使用 SSH 連線到叢集之後,您可以從叢集中將 Notebook 複製到本機電腦 (使用 SCP 或 WinSCP) 來做為備份,以避免遺失 Notebook 中的重要資料。 您接著可以在連接埠 8001 以 SSH 通道連到前端節點,以存取 Jupyter 而不透過閘道。 您可以從該處清除 Notebook 的輸出,並將其重新儲存,以盡量縮減 Notebook 的大小。
若要防止日後再發生此錯誤,您必須遵循一些最佳作法:
- 務必讓 Notebook 保持小型規模。 會傳回到 Jupyter 的任何 Spark 作業輸出皆會保存在 Notebook 中。 一般來說,Jupyter 的最佳做法是避免在大型 RDD 或資料框架上執行
.collect()
。如果想要查看 RDD 的內容,請考慮執行.take()
或.sample()
,讓輸出不會變得太大。 - 此外,當您儲存 Notebook 時,請清除所有輸出儲存格以減少大小。
Notebook 的初始啟動比預期耗時
在使用 Spark magic 的 Jupyter Notebook 中,第一個程式碼陳述式可能需耗時一分鐘以上才能執行完畢。
說明:
這會在執行第一個程式碼儲存格時發生。 它會在背景中起始設定工作階段組態,以及設定 SQL、Spark 和 Hive 內容。 設定這些內容後,第一個陳述式才會執行,因此會有陳述式會花很長時間完成的印象。
Jupyter Notebook 建立工作階段逾時
當 Spark 叢集的資源不足時,Jupyter Notebook 中的 Spark 和 PySpark 核心在嘗試建立工作階段時會逾時。
緩和措施:
藉由下列方式,釋出 Spark 叢集中的一些資源:
- 移至 [關閉並停止] 功能表或按一下 Notebook 總管中的 [關閉],以停止其他 Spark Notebook。
- 從 YARN 停止其他 Spark 應用程式。
重新啟動您先前嘗試啟動的 Notebook。 此時您應有足夠的資源可建立工作階段。
另請參閱
案例
- Apache Spark 和 BI:在 HDInsight 中搭配 BI 工具使用 Spark 執行互動式資料分析
- Apache Spark 和機器學習服務:使用 HDInsight 中的 Spark,使用 HVAC 資料來分析建築物溫度
- Apache Spark 和機器學習服務:在 HDInsight 中使用 Spark 預測食品檢查結果
- 在 HDInsight 中使用 Apache Spark 進行網站記錄分析
建立及執行應用程式
工具和延伸模組
- 使用 IntelliJ IDEA 的 HDInsight Tools 外掛程式來建立和提交 Spark Scala 應用程式
- 使用適用於 IntelliJ IDEA 的 HDInsight 工具外掛程式遠端偵錯 Apache Spark 應用程式
- 在 HDInsight 上搭配使用 Apache Zeppelin Notebook 和 Apache Spark 叢集
- 在適用於 HDInsight 的 Apache Spark 叢集中可供 Jupyter Notebook 使用的核心
- 搭配 Jupyter Notebook 使用外部套件
- 在電腦上安裝 Jupyter 並連接到 HDInsight Spark 叢集