共用方式為


使用 Azure HDInsight 為 Apache Spark 進行疑難排解

了解在 Apache Ambari 中使用 Apache Spark 承載時最常發生的問題及其解決方法。

如何使用 Apache Ambari 在叢集上設定 Apache Spark 應用程式?

您可以微調 Spark 組態值,以協助避免 Apache Spark 應用程式 OutofMemoryError 例外狀況。 下列步驟顯示 Azure HDInsight 中的預設 Spark 組態值:

  1. 使用您的叢集認證登入在 https://CLUSTERNAME.azurehdidnsight.net 的 Ambari。 初始畫面會顯示概觀儀表板。 HDInsight 4.0 之間有些許外觀上的差異。

  2. 瀏覽至 [Spark2] > [Configs]

    選取 [ 設定 ] 索引標籤。

  3. 在設定清單中,選取並展開 [Custom-spark2-defaults]

  4. 尋找需要調整的設定值,例如 spark.executor.memory。 在本案例中,值 9728m 太高。

    選取 custom-spark-defaults。

  5. 將值設為建議的設定。 這項設定的建議值為 2048m

  6. 儲存此值,然後儲存設定。 選取 [儲存]。

    將值變更為 2048m。

    註記設定變更,然後選取 [儲存]

    輸入所做變更的附註內容。

    如有任何設定需要注意,您會收到通知。 記下項目,然後選取 [仍要繼續]

    選取 [仍要繼續]。

  7. 每次儲存設定時,系統都會提示您重新啟動服務。 選取重新啟動

    選取 [重新啟動]。

    確認重新啟動。

    選取 [確認重新啟動所有項目]。

    您可以檢閱執行中的處理序。

    檢閱執行中的處理序。

  8. 您可以新增設定。 在設定清單中選取 [Custom-spark2-defaults],然後選取 [新增屬性]

    選取 [新增屬性]。

  9. 定義新的屬性。 您可以使用特定設定 (例如資料類型) 的對話方塊定義單一屬性。 或者,您也可以使用一行一定義的方式定義多個屬性。

    在本例中,spark.driver.memory 屬性是以值 4g 定義。

    定義新的屬性。

  10. 儲存設定,然後重新啟動服務,如步驟 6 和 7 中所述。

這些變更為全叢集的,但可在提交 Spark 作業時予以覆寫。

如何使用 Jupyter Notebook 在叢集上設定 Apache Spark 應用程式?

在 Jupyter Notebook 第一個資料格中的 %%configure 指示詞後面,以有效的 JSON 格式指定 Spark 設定。 請視需要變更實際值:

新增設定。

如何使用 Apache Livy 在叢集上設定 Apache Spark 應用程式?

使用 cURL 等 REST 用戶端,將 Spark 應用程式提交給 Livy。 使用類似下列的命令。 請視需要變更實際值:

curl -k --user 'username:password' -v -H 'Content-Type: application/json' -X POST -d '{ "file":"wasb://container@storageaccountname.blob.core.windows.net/example/jars/sparkapplication.jar", "className":"com.microsoft.spark.application", "numExecutors":4, "executorMemory":"4g", "executorCores":2, "driverMemory":"8g", "driverCores":4}'  

如何使用 spark-submit 在叢集上設定 Apache Spark 應用程式?

使用類似下列的命令啟動 spark-shell。 請視需要變更設定的實際值:

spark-submit --master yarn-cluster --class com.microsoft.spark.application --num-executors 4 --executor-memory 4g --executor-cores 2 --driver-memory 8g --driver-cores 4 /home/user/spark/sparkapplication.jar

其他閱讀資料

Apache Spark job submission on HDInsight clusters (提交 HDInsight 叢集上的 Apache Spark 作業)

下一步

如果您沒有看到您的問題,或無法解決您的問題,請瀏覽下列其中一個管道以取得更多支援: