Azure HDInsight を使用した Apache Spark のトラブルシューティング

Apache Ambari で Apache Spark ペイロードを操作するときに発生する主な問題とその解決策について説明します。

クラスター上の Apache Ambari を使用して Apache Spark アプリケーションを構成する方法

Spark 構成値を調整して、Apache Spark アプリケーションの OutofMemoryError 例外を回避できます。 次の手順では、Azure HDInsight での既定の Spark 構成値を示します。

  1. クラスターの資格情報を使用して Ambari (https://CLUSTERNAME.azurehdidnsight.net) にログインします。 初期画面に概要ダッシュボードが表示されます。 HDInsight 3.6 と4.0 では、画面にわずかな違いがあります。

  2. Spark2 > [構成] に移動します。

    [Configs]\(構成\) タブの選択

  3. 構成の一覧で [Custom-spark2-defaults] を選択して展開します。

  4. [spark.executor.memory] など、調整する必要のある値の設定を見つけます。 この場合、9728m という値は大きすぎます。

    [Custom-spark-defaults] の選択

  5. この値を推奨される値に設定します。 この設定では 2048m が推奨値です。

  6. 値を保存してから、構成を保存します。 [保存] を選択します。

    2048m への値の変更

    構成の変更内容に関するメモを入力して、 [Save](保存) をクリックします。

    変更内容のメモの入力

    注意の必要な値がある場合は警告が表示されます。 各項目を確認したうえで [Proceed Anyway](警告を無視して続行) をクリックします。

    [Proceed Anyway]\(警告を無視して続行\) の選択

  7. 構成を保存すると、サービスを再起動するように求められます。 [Restart](再起動) をクリックします。

    [Restart]\(再起動\) をクリック

    再起動を確定します。

    [Confirm Restart All]\(すべて再起動\) をクリック

    実行中のプロセスを確認できます。

    実行中のプロセスの確認

  8. 構成を追加することもできます。 構成の一覧で [Custom-spark2-defaults] を選択し、 [Add Property](プロパティの追加) をクリックします。

    [Add Property]\(プロパティの追加\) をクリック

  9. 新しいプロパティを定義します。 データ型など特定の設定用のダイアログ ボックスを使用して 1 つのプロパティを定義することができます。 または、1 行につき 1 つの定義を使用して、複数のプロパティを定義することもできます。

    この例では、spark.driver.memory プロパティの値を 4g に定義しています。

    新しいプロパティの定義

  10. 構成を保存し、手順 6 と 7 の説明に従ってサービスを再起動します。

これらの変更はクラスター全体に適用されますが、Spark ジョブを送信するとオーバーライドできます。

クラスター上の Jupyter Notebook を使用して Apache Spark アプリケーションを構成する方法

%%configure ディレクティブの後にある最初の Jupyter Notebook セルに、Spark 構成を有効な JSON 形式で指定します。 必要に応じて、実際の値に変更します。

構成の追加

クラスター上の 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

その他の情報

HDInsight クラスターでの Apache Spark ジョブの送信

次のステップ

問題がわからなかった場合、または問題を解決できない場合は、次のいずれかのチャネルでサポートを受けてください。