拡張された Apache Spark History Server を使用して Apache Spark アプリケーションのデバッグと診断を行うUse extended Apache Spark History Server to debug and diagnose Apache Spark applications

この記事では、拡張された Apache Spark History Server を使用して、完成して実行されている Spark アプリケーションのデバッグおよび診断を行う方法に関するガイダンスを提供します。This article provides guidance on how to use extended Apache Spark History Server to debug and diagnose completed and running Spark applications. この拡張には、[データ] タブ、[グラフ] タブ、[診断] タブが含まれています。 [データ] タブでは、Spark ジョブの入力データと出力データを確認できます。The extension includes data tab and graph tab and diagnosis tab. On the Data tab, users can check the input and output data of the Spark job. [グラフ] タブでは、データ フローを確認し、ジョブ グラフを再生できます。On the Graph tab, users can check the data flow and replay the job graph. [診断] タブでは、データ スキュー時間のずれExecutor Usage Analysis(Executor 利用状況分析) を参照できます。On the Diagnosis tab, user can refer to Data Skew, Time Skew and Executor Usage Analysis.

Apache Spark History Server にアクセスするGet access to Apache Spark History Server

Apache Spark History Server は、完了および実行中の Spark アプリケーションの Web UI です。Apache Spark History Server is the web UI for completed and running Spark applications.

Apache Spark History Server Web UI を Azure portal から開くOpen the Apache Spark History Server Web UI from Azure portal

  1. Azure Portal で Spark クラスターを開きます。From the Azure portal, open the Spark cluster. 詳細については、「クラスターの一覧と表示」を参照してください。For more information, see List and show clusters.

  2. クイック リンク[クラスター ダッシュボード] をクリックし、 [Spark History Server] をクリックします。From Quick Links, click Cluster Dashboard, and then click Spark History Server. 入力を求められたら、Spark クラスターの管理者資格情報を入力します。When prompted, enter the admin credentials for the Spark cluster.

    ポータルで Spark History Server を起動するportal launch Spark History Server

Spark History Server Web UI を URL で開くOpen the Spark History Server Web UI by URL

次の URL を参照することで、Spark History Server を開きます。<ClusterName> を、お客様の Spark クラスター名に置き換えてください。Open the Spark History Server by browsing to the following URL, replace <ClusterName> with Spark cluster name of customer.

https://<ClusterName>.azurehdinsight.net/sparkhistory

Spark History Server Web UI は次のようになります。The Spark History Server web UI looks like:

HDInsight Spark History Server

Spark History Server の[データ] タブData tab in Spark History Server

[データ] ビューを取得するには、ジョブ ID を選択し、[ツール] メニューの [データ] をクリックします。Select job ID then click Data on the tool menu to get the data view.

  • [入力][出力] 、および [テーブル操作] の各タブを個別に選択することで、その内容をチェックできます。Check the Inputs, Outputs, and Table Operations by selecting the tabs separately.

    Spark アプリケーションのデータのタブ

  • [コピー] ボタンをクリックすることで、すべての行をコピーできます。Copy all rows by clicking button Copy.

    Spark アプリケーションのデータ、コピー

  • [csv] ボタンをクリックすることで、すべてのデータを CSV ファイルとして保存できます。Save all data as CSV file by clicking button csv.

    Spark アプリケーションのデータ、保存

  • [検索] フィールドにキーワードを入力することで検索できます。検索結果はすぐに表示されます。Search by entering keywords in field Search, the search result will display immediately.

    Spark アプリケーションのデータ、検索

  • テーブルを並べ替えるには、列ヘッダーをクリックします。行を展開して行の詳細を表示するには、プラス記号をクリックします。行を折りたたむには、マイナス記号をクリックします。Click the column header to sort table, click the plus sign to expand a row to show more details, or click the minus sign to collapse a row.

    Spark アプリケーションのデータ、テーブル

  • 右側に配置されている [一部ダウンロード] ボタンをクリックすることで、1 つのファイルをダウンロードできます。選択したファイルはローカルにダウンロードされます。ファイルがもう存在していない場合は、新しいタブが開いてエラー メッセージが表示されます。Download single file by clicking button Partial Download that place at the right, then the selected file will be downloaded to local, if the file does not exist any more, it will open a new tab to show the error messages.

    Spark アプリケーションのデータ、行のダウンロード

  • [ダウンロード] メニューを展開して、 [完全パスのコピー] または [相対パスのコピー] を選択することで、完全パスまたは相対パスをコピーできます。Copy full path or relative path by selecting the Copy Full Path, Copy Relative Path that expands from download menu. Azure Data Lake Storage ファイルの場合は、 [Azure Storage Explorer で開く] を選択すると、Azure Storage Explorer が開き、サインイン時のフォルダーにアクセスします。For azure data lake storage files, Open in Azure Storage Explorer will launch Azure Storage Explorer, and locate to the folder when sign-in.

    Spark アプリケーションのデータ、パスのコピー

  • 1 ページに表示できる行数を超える行がある場合は、テーブルの下に表示されている数値をクリックすると、該当するページに移動できます。Click the number below the table to navigate pages when too many rows to display in one page.

    Spark アプリケーションのデータ、ページ

  • [データ] の横の疑問符をポイントすると、ツールチップが表示されます。疑問符をクリックすると、詳細を取得できます。Hover on the question mark beside Data to show the tooltip, or click the question mark to get more information.

    Spark アプリケーションのデータ、詳細情報

  • [フィードバックをお寄せください] をクリックすることで、問題のフィードバックを送信できます。Send feedback with issues by clicking Provide us feedback.

    Spark、グラフ、フィードバック提供再掲

Apache Spark History Server の [グラフ] タブGraph tab in Apache Spark History Server

ジョブの [グラフ] ビューを取得するには、ジョブ ID を選択し、[ツール] メニューの [グラフ] をクリックします。Select job ID then click Graph on the tool menu to get the job graph view.

  • 生成されたジョブ グラフで、ジョブの概要をチェックします。Check overview of your job by the generated job graph.

  • 既定では、すべてのジョブが表示され、 [ジョブ ID] によってフィルター処理できます。By default, it will show all jobs, and it could be filtered by Job ID.

    Spark アプリケーションとジョブ グラフ、ジョブ ID

  • 既定では、 [進行状況] が選択され、ユーザーは、 [表示] ドロップダウン リストの [読み取り済み] または [書き込み済み] を選択することで、データ フローをチェックできます。By default, Progress is selected, user could check the data flow by selecting Read/Written in the dropdown list of Display.

    Spark アプリケーションとジョブ グラフ、表示

    グラフ ノードは、ヒートマップを示す色を使用して表示されます。The graph node display in color that shows the heatmap.

    Spark アプリケーションとジョブ グラフ、ヒートマップ

  • [再生] ボタンをクリックすることで、ジョブを再生できます。[停止] ボタンをクリックすることで、いつでも停止できます。Play back the job by clicking the Playback button and stop anytime by clicking the stop button. タスクは、再生時の状態を示す色を使用して表示されます。The task display in color to show different status when playback:

    • 緑 (成功) :ジョブは正常に完了しています。Green for succeeded: The job has completed successfully.

    • オレンジ (再試行) :失敗はしたが、ジョブの最終結果には影響しないタスクのインスタンス。Orange for retried: Instances of tasks that failed but do not affect the final result of the job. これらのタスクには、重複しているものや、後で成功した可能性がある再試行インスタンスがあります。These tasks had duplicate or retry instances that may succeed later.

    • 青 (実行中) :タスクは実行されています。Blue for running: The task is running.

    • 白 (待機中またはスキップ) :タスクが実行を待機しているか、ステージがスキップされています。White for waiting or skipped: The task is waiting to run, or the stage has skipped.

    • 赤 (失敗) :タスクは失敗しています。Red for failed: The task has failed.

      Spark アプリケーションとジョブ グラフ、色サンプル、実行

      スキップされたステージは白色で表示されます。The skipped stage display in white. Spark アプリケーションとジョブ グラフ、色サンプル、スキップSpark application and job graph color sample, skip

      Spark アプリケーションとジョブ グラフ、色サンプル、失敗

      注意

      各ジョブの再生が許可されます。Playback for each job is allowed. 不完全なジョブでは、再生はサポートされていません。For incomplete job, playback is not supported.

  • マウスをスクロールすると、ジョブ グラフが拡大/縮小されます。画面に合うように拡大/縮小するには、 [画面に合わせてサイズを変更] をクリックします。Mouse scrolls to zoom in/out the job graph, or click Zoom to fit to make it fit to screen.

    Spark アプリケーションとジョブ グラフ、画面に合わせてサイズを変更

  • 失敗したタスクがあるときにグラフ ノードをポイントすると、ツールヒントが表示され、ステージをクリックすると、[ステージ] ページが開きます。Hover on graph node to see the tooltip when there are failed tasks, and click on stage to open stage page.

    Spark アプリケーションとジョブ グラフ、ヒント

  • ジョブ グラフ タブでは、ステージに次の条件を満たすタスクがあると、そのステージにヒントと小さなアイコンが表示されます。In job graph tab, stages will have tooltip and small icon displayed if they have tasks meet the below conditions:

    • データ スキュー: データ読み取りサイズが、このステージ内のすべてのタスクの平均データ読み取りサイズの 2 倍を超えており、なおかつ 10 MB を超えている。Data skew: data read size > average data read size of all tasks inside this stage * 2 and data read size > 10 MB.

    • 時間のずれ: 実行時間が、このステージ内のすべてのタスクの平均実行時間の 2 倍を超えており、なおかつ 2 分を超えている。Time skew: execution time > average execution time of all tasks inside this stage * 2 and execution time > 2 mins.

      Spark アプリケーションとジョブ グラフ、スキュー アイコン

  • ジョブ グラフ ノードには、各ステージの次の情報が表示されます。The job graph node will display the following information of each stage:

    • ID。ID.

    • 名前または説明。Name or description.

    • タスクの総数。Total task number.

    • データの読み取り: 入力サイズとシャッフル読み取りサイズの合計。Data read: the sum of input size and shuffle read size.

    • データの書き込み: 出力サイズとシャッフル書き込みサイズの合計。Data write: the sum of output size and shuffle write size.

    • 実行時間: 最初の試行の開始時刻から最後の試行の完了時刻までの時間。Execution time: the time between start time of the first attempt and completion time of the last attempt.

    • 行数: 入力レコード、出力レコード、シャッフル読み取りレコード、およびシャッフル書き込みレコードの合計。Row count: the sum of input records, output records, shuffle read records and shuffle write records.

    • 進行状況。Progress.

      注意

      既定では、ジョブ グラフ ノードには、各ステージの最後の試行に関する情報 (ステージの実行時間以外) が表示されますが、再生中は各試行の情報が表示されます。By default, the job graph node will display information from last attempt of each stage (except for stage execution time), but during playback graph node will show information of each attempt.

      注意

      読み取りと書き込みのデータ サイズでは、1MB = 1000 KB = 1000 * 1000 バイトが使用されています。For data size of read and write we use 1MB = 1000 KB = 1000 * 1000 Bytes.

  • [フィードバックをお寄せください] をクリックすることで、問題のフィードバックを送信できます。Send feedback with issues by clicking Provide us feedback.

    Spark アプリケーションとジョブ グラフ、フィードバック

Apache Spark History Server の [診断] タブDiagnosis tab in Apache Spark History Server

ジョブの [診断] ビューを取得するには、ジョブ ID を選択し、[ツール] メニューの [診断] をクリックします。Select job ID then click Diagnosis on the tool menu to get the job Diagnosis view. [診断] タブには、 [データ スキュー][時間のずれ][Executor Usage Analysis(Executor 利用状況分析)] が含まれています。The diagnosis tab includes Data Skew, Time Skew, and Executor Usage Analysis.

  • それぞれのタブを選択して、データ スキュー時間のずれExecutor Usage Analysis(Executor 利用状況分析) を確認します。Check the Data Skew, Time Skew, and Executor Usage Analysis by selecting the tabs respectively.

    SparkUI、診断、データ スキュー タブ再掲

データ スキューData Skew

[データ スキュー] タブをクリックすると、指定されたパラメーターに基づいて、対応する偏りのあるタスクが表示されます。Click Data Skew tab, the corresponding skewed tasks are displayed based on the specified parameters.

  • パラメーターの指定 - 最初のセクションには、データ スキューの検出に使用するパラメーターが表示されます。Specify Parameters - The first section displays the parameters which are used to detect Data Skew. 組み込みの規則では、読み取られたタスク データが、読み取られたタスク データの平均量の 3 倍を超えており、なおかつ 10 MB を超えています。The built-in rule is: Task Data Read is greater than 3 times of the average task data read, and the task data read is more than 10MB. 偏りのあるタスクの独自の規則を定義する場合は、パラメーターを選択できます。それに応じて、 [傾斜したステージ]スキュー グラフのセクションが更新されます。If you want to define your own rule for skewed tasks, you can choose your parameters, the Skewed Stage, and Skew Char section will be refreshed accordingly.

  • 傾斜したステージ - 2 番目のセクションには、上記で指定した条件を満たす偏りのあるタスクがあるステージが表示されます。Skewed Stage - The second section displays stages which have skewed tasks meeting the criteria specified above. ステージに偏りのあるタスクが複数ある場合、傾斜したステージのテーブルには、最も偏っているタスク (データ スキューのデータが最大のタスクなど) だけが表示されます。If there are more than one skewed task in a stage, the skewed stage table only displays the most skewed task (e.g. the largest data for data skew).

    SparkUI、診断、データ スキュー タブ

  • スキュー グラフ - スキュー ステージ テーブルの行を選択すると、読み取られたデータと実行時間に基づいて、スキュー グラフにタスクの分布の詳細が表示されます。Skew Chart – When a row in the skew stage table is selected, the skew chart displays more task distributions details based on data read and execution time. 偏りのあるタスクは赤色でマークされ、標準のタスクは青色でマークされます。The skewed tasks are marked in red and the normal tasks are marked in blue. パフォーマンスを考慮し、グラフに表示されるサンプル タスクは最大 100 個に限定されます。For performance consideration, the chart only displays up to 100 sample tasks. タスクの詳細が右下のパネルに表示されます。The task details are displayed in right bottom panel.

    SparkUI、ステージ 10 のスキュー グラフ

時間のずれTime Skew

[時間のずれ] タブには、タスクの実行時間に基づいて、偏りのあるタスクが表示されます。The Time Skew tab displays skewed tasks based on task execution time.

  • パラメーターの指定 - 最初のセクションには、時間のずれの検出に使用するパラメーターが表示されます。Specify Parameters - The first section displays the parameters which are used to detect Time Skew. 時間のずれを検出する既定の条件は、タスクの実行時間が平均実行時間の 3 倍を超えており、なおかつ 30 秒を超えていることです。The default criteria to detect time skew is: task execution time is greater than 3 times of average execution time and task execution time is greater than 30 seconds. 必要に応じてパラメーターを変更できます。You can change the parameters based on your needs. [傾斜したステージ]スキュー グラフには、上記の [データ スキュー] タブと同様に、対応するステージとタスクの情報が表示されます。The Skewed Stage and Skew Chart display the corresponding stages and tasks information just like the Data Skew tab above.

  • [時間のずれ] をクリックすると、 [パラメーターの指定] セクションで設定されたパラメーターに従って、フィルター処理された結果が [傾斜したステージ] セクションに表示されます。Click Time Skew, then filtered result is displayed in Skewed Stage section according to the parameters set in section Specify Parameters. [傾斜したステージ] セクションで項目をクリックすると、対応するグラフの下書きがセクション 3 に表示され、タスクの詳細が右下のパネルに表示されます。Click one item in Skewed Stage section, then the corresponding chart is drafted in section3, and the task details are displayed in right bottom panel.

    SparkUI、診断、時間のずれセクション

Executor Usage Analysis(Executor 利用状況分析)Executor Usage Analysis

Executor 利用状況グラフでは、Spark ジョブの Executor の実際の割り当てと実行の状態が視覚化されます。The Executor Usage Graph visualizes the Spark job actual executor allocation and running status.

  • [Executor Usage Analysis(Executor 利用状況分析)] をクリックすると、Executor の利用状況に関する 4 種類の曲線 ( [Allocated Executors](割り当て済みの Executor 数)[Running Executors](実行中の Executor 数)[idle Executors](アイドル状態の Executor 数)[Max Executor Instances](Executor インスタンスの最大数) ) の下書きが表示されます。Click Executor Usage Analysis, then four types curves about executor usage are drafted, including Allocated Executors, Running Executors,idle Executors, and Max Executor Instances. 割り当て済みの Executor 数に関しては、各 "Executor の追加" イベントまたは "Executor の削除" イベントによって増減します。[ジョブ] タブの [Event Timeline](イベント タイムライン) で比較の詳細を確認できます。Regarding allocated executors, each "Executor added" or "Executor removed" event will increase or decrease the allocated executors, you can check "Event Timeline" in the “Jobs" tab for more comparison.

    SparkUI、診断、エグゼキュータ タブ

  • 色のアイコンをクリックすると、すべての下書きの対応する内容が選択または選択解除されます。Click the color icon to select or unselect the corresponding content in all drafts.

    SparkUI、診断、グラフの選択

FAQFAQ

1.コミュニティ バージョンに戻す1. Revert to community version

コミュニティ バージョンに戻すには、次の手順を実行します。To revert to community version, do the following steps:

  1. Ambari でクラスターを開きます。Open cluster in Ambari. 左側のパネルで [Spark2] をクリックします。Click Spark2 in left panel.

  2. [Configs](構成) タブを選択します。Click Configs tab.

  3. Custom spark2-defaultsグループを展開します。Expand the group Custom spark2-defaults.

  4. [Add Property](プロパティの追加) をクリックし、spark.ui.enhancement.enabled=false を追加して保存します。Click Add Property, add spark.ui.enhancement.enabled=false, save.

  5. これで、プロパティが false に設定されます。The property sets to false now.

  6. [保存] をクリックして構成を保存します。Click Save to save the configuration.

    Apache Ambari、機能を無効

  7. 左側のパネルで [Spark2] をクリックし、 [Summary](概要) タブで Spark2 History Server をクリックします。Click Spark2 in left panel, under Summary tab, click Spark2 History Server.

    Apache Ambari、Spark2.x、概要ビュー

  8. Spark2 History Server[Restart](再起動) をクリックして、History Server を再起動します。Restart history server by clicking Restart of Spark2 History Server.

    Apache Ambari、Spark2 History、再起動

  9. Spark History Server Web UI 更新すると、コミュニティ バージョンに戻ります。Refresh the Spark history server web UI, it will be reverted to community version.

2.History Server イベントをアップロードする2. Upload history server event

History Server エラーが発生した場合は、次の手順に従ってイベントを提供します。If you run into history server error, follow the steps to provide the event:

  1. History Server Web UI で [ダウンロード] をクリックすることで、イベントをダウンロードします。Download event by clicking Download in history server web UI.

    Spark2 History Server、ダウンロード

  2. [データ] または [グラフ] タブで [フィードバックをお寄せください] をクリックします。Click Provide us feedback from data/graph tab.

    Spark、グラフ、フィードバック提供

  3. エラーのタイトルと説明を入力し、zip ファイルを編集フィールドにドラッグした後、 [Submit new issue](新しい問題を投稿) をクリックします。Provide the title and description of error, drag the zip file to the edit field, then click Submit new issue.

    Apache Spark、ファイルの問題の例

手順 3.修正プログラム用の jar ファイルをアップグレードするシナリオ3. Upgrade jar file for hotfix scenario

修正プログラムを使用してアップグレードする場合は、spark enhancement.jar* をアップグレードする次のスクリプトを使用します。If you want to upgrade with hotfix, use the script below which will upgrade spark-enhancement.jar*.

upgrade_spark_enhancement.sh:upgrade_spark_enhancement.sh:

 #!/usr/bin/env bash

 # Copyright (C) Microsoft Corporation. All rights reserved.

 # Arguments:
 # $1 Enhancement jar path

 if [ "$#" -ne 1 ]; then
     >&2 echo "Please provide the upgrade jar path."
     exit 1
 fi

 install_jar() {
     tmp_jar_path="/tmp/spark-enhancement-hotfix-$( date +%s )"

     if wget -O "$tmp_jar_path" "$2"; then
         for FILE in "$1"/spark-enhancement*.jar
         do
             back_up_path="$FILE.original.$( date +%s )"
             echo "Back up $FILE to $back_up_path"
             mv "$FILE" "$back_up_path"
             echo "Copy the hotfix jar file from $tmp_jar_path   to $FILE"
             cp "$tmp_jar_path" "$FILE"

             "Hotfix done."
             break
         done
     else    
         >&2 echo "Download jar file failed."
         exit 1
     fi
 }

 jars_folder="/usr/hdp/current/spark2-client/jars"
 jar_path=$1

 if ls ${jars_folder}/spark-enhancement*.jar 1>/dev/null 2>&1;   then
     install_jar "$jars_folder" "$jar_path"
 else
     >&2 echo "There is no target jar on this node. Exit with no action."
     exit 0
 fi

[使用状況] :Usage:

upgrade_spark_enhancement.sh https://${jar_path}

:Example:

upgrade_spark_enhancement.sh https://${account_name}.blob.core.windows.net/packages/jars/spark-enhancement-${version}.jar

bash ファイルを Azure Portal から使用するにはTo use the bash file from Azure portal

  1. Azure portal を起動し、目的のクラスターを選択します。Launch Azure portal, and select your cluster.

  2. [スクリプト アクション][新規で送信] の順にクリックします。Click Script actions, then Submit new. [スクリプト操作を追加] フォームを完成させた後、 [作成] ボタンをクリックします。Complete the Submit script action form, then click Create button.

    • スクリプトの種類: [カスタム] を選択します。Script type: select Custom.
    • 名前: スクリプト名を指定します。Name: specify a script name.
    • Bash スクリプト URI: bash ファイルをプライベート クラスターにアップロードした後、ここに URL をコピーします。Bash script URI: upload the bash file to private cluster then copy URL here. または、提供された URI を使用します。Alternatively, use the URI provided.
     https://hdinsighttoolingstorage.blob.core.windows.net/shsscriptactions/upgrade_spark_enhancement.sh
    
    • [ヘッド][ワーカー] をオンにします。Check on Head and Worker.

    • パラメーター: bash の使用法に従ってパラメーターを設定します。Parameters: set the parameters follow the bash usage.

      Azure portal、スクリプト操作を追加

既知の問題Known issues

  1. 現在は、Spark 2.3 および 2.4 のクラスターでのみ動作します。Currently, it only works for Spark 2.3 and 2.4 cluster.

  2. RDD を使用している入力/出力データは、[データ] タブには表示されません。Input/output data using RDD will not show in data tab.

次の手順Next steps

お問い合わせContact us

フィードバックがある場合やこのツールの使用中に問題が発生した場合は、hdivstool@microsoft.com に電子メールをお送りください。If you have any feedback, or if you encounter any other problems when using this tool, send an email at (hdivstool@microsoft.com).