Azure Toolkit for IntelliJ を使用した失敗した Spark ジョブのデバッグ (プレビュー)

この記事では、Azure Toolkit for IntelliJ の HDInsight Tools を使用して Spark Failure Debug アプリケーションを実行する方法に関するステップ バイ ステップ ガイダンスを提供します。

前提条件

デバッグ テンプレートを含むプロジェクトを作成する

このドキュメントでは、失敗したデバッグを続行し、失敗したタスク デバッグのサンプル ファイルを取得するための spark2.3.2 プロジェクトを作成します。

  1. IntelliJ IDEA を開きます。 [新しいプロジェクト] ウィンドウを開きます。

    a. 左側のウィンドウの [Azure Spark/HDInsight] を選択します。

    b. メイン ウィンドウから [Spark Project with Failure Task Debugging Sample(Preview)(Scala)] (失敗したタスク デバッグのサンプルを含む Spark プロジェクト (プレビュー) (Scala)) を選択します。

    Intellij Create a debug project.

    c. [次へ] を選択します。

  2. [New Project](新しいプロジェクト) ウィンドウで、次の手順を実行します。

    Intellij New Project select Spark version.

    a. プロジェクト名とプロジェクトの場所を入力します。

    b. [Project SDK] (プロジェクト SDK) ドロップダウン リストで、Spark 2.3.2 クラスター用に [Java 1.8] を選択します。

    c. [Spark バージョン] ドロップダウン リストで、 [Spark 2.3.2(Scala 2.11.8)] を選択します。

    d. [完了] を選択します。

  3. [src]>[main]>[scala] を選択してプロジェクトのコードを開きます。 この例では、AgeMean_Div() スクリプトを使用します。

HDInsight クラスター上で Spark Scala/Java アプリケーションを実行する

Spark Scala/Java アプリケーション作成した後、次の手順を実行して、そのアプリケーションを Spark クラスター上で実行します。

  1. [構成の追加] をクリックして [実行/デバッグ構成] ウィンドウを開きます。

    HDI Intellij Add configuration.

  2. [実行/デバッグ構成] ダイアログ ボックスで、プラス記号 (+) を選択します。 次に [HDInsight での Apache Spark] オプションを選択します。

    Intellij Add new configuration.

  3. [Remotely Run in Cluster](クラスターでリモート実行) タブに切り替えます。 [名前][Spark cluster](Spark クラスター)[Main class name](メイン クラス名) に情報を入力します。 ツールでは、Executor を使用したデバッグがサポートされています。 [numExectors] は既定値が 5 ですが、3 より大きい値に設定することはお勧めできません。 実行時間を短縮するために、 [job Configurations] (ジョブ構成)[spark.yarn.maxAppAttempts] を追加し、その値を 1 に設定できます。 [OK] ボタンをクリックして構成を保存します。

    Intellij Run debug configurations new.

  4. 指定した名前で構成が保存されます。 構成の詳細を表示するには、構成名を選択します。 変更するには、 [構成の編集] を選択します。

  5. 構成の設定を完了したら、リモート クラスターに対してプロジェクトを実行できます。

    Intellij Debug Remote Spark Job Remote run button.

  6. 出力ウィンドウからアプリケーション ID を確認できます。

    Intellij Debug Remote Spark Job Remote run result.

失敗したジョブのプロファイルをダウンロードする

ジョブの送信に失敗した場合は、さらにデバッグするために、失敗したジョブのプロファイルをローカル コンピューターにダウンロードできます。

  1. Microsoft Azure Storage Explorer を開き、失敗したジョブに対するクラスターの HDInsight アカウントを見つけて、失敗したジョブのリソースを、対応する場所である \hdp\spark2-events\.spark-failures\<アプリケーション ID> からローカル フォルダーにダウンロードします。[アクティビティ] ウィンドウに、ダウンロードの進捗状況が表示されます。

    Azure Storage Explorer download failure.

    Azure Storage Explorer download success.

ローカルのデバッグ環境を構成して失敗をデバッグする

  1. 元のプロジェクトを開くか新しいプロジェクトを作成して、元のソース コードに関連付けます。現在、エラー デバッグでは spark2.3.2 バージョンのみがサポートされています。

  2. IntelliJ IDEA で、Spark Failure Debug 構成ファイルを作成し、 [Spark Job Failure Context location] (Spark ジョブの失敗したコンテキストの場所) フィールドで前にダウンロードされた失敗したジョブのリソースから FTD ファイルを選択します。

    crete failure configuration.

  3. ツールバーのローカル実行ボタンをクリックすると、エラーが [実行] ウィンドウに表示されます。

    run-failure-configuration1.

    run-failure-configuration2.

  4. ログに示されているようにブレークポイントを設定した後、ローカル デバッグ ボタンをクリックして、IntelliJ の通常の Scala/Java プロジェクトと同様にローカル デバッグを実行します。

  5. デバッグの後、プロジェクトが正常に完了した場合は、失敗したジョブを HDInsight クラスター上の Spark に再送信できます。

次のステップ

シナリオ

アプリケーションの作成と実行

ツールと拡張機能

リソースの管理