Apache Spark ウェブ UI を使用したジョブのモニタリング - AWS Glue

Apache Spark ウェブ UI を使用したジョブのモニタリング

Apache Spark ウェブ UI を使用して、AWS Glue ジョブシステムで実行されている AWS Glue ETL ジョブと、 AWS Glue 開発エンドポイントで実行されている Spark アプリケーションをモニタリングおよびデバッグできます。Spark UI では、ジョブごとに以下の項目を確認できます。

  • 各 Spark ステージのイベントタイムライン

  • ジョブの Directed Acyclic Graph (DAG)

  • SparkSQL クエリの物理プランと論理プラン

  • 各ジョブの基盤となる Spark 環境変数

Spark UI を有効にするには、AWS Glue コンソールまたは AWS Command Line Interface (AWS CLI) を使用できます。Spark UI を有効にすると、AWS Glue ETL ジョブと、AWS Glue 開発エンドポイントの Spark アプリケーションの Spark イベントログを Amazon Simple Storage Service (Amazon S3) の指定個所に保持できます。AWS Glue に用意されているサンプルの AWS CloudFormation テンプレートでは、Spark 履歴サーバーを起動し、イベントログを使用して Spark UI を表示することもできます。Amazon S3 に保持されているイベントログは、ジョブの実行中 (リアルタイム) でも、ジョブの完了後でも Spark UI で使用できます。

次の例に示す Spark アプリケーションでは、2 つのデータソースから読み取り、結合変換を実行し、それを Parquet 形式で Amazon S3 に書き込みます。

import sys from awsglue.transforms import * from awsglue.utils import getResolvedOptions from pyspark.context import SparkContext from awsglue.context import GlueContext from awsglue.job import Job from pyspark.sql.functions import count, when, expr, col, sum, isnull from pyspark.sql.functions import countDistinct from awsglue.dynamicframe import DynamicFrame args = getResolvedOptions(sys.argv, ['JOB_NAME']) sc = SparkContext() glueContext = GlueContext(sc) spark = glueContext.spark_session job = Job(glueContext) job.init(args['JOB_NAME']) df_persons = spark.read.json("s3://awsglue-datasets/examples/us-legislators/all/persons.json") df_memberships = spark.read.json("s3://awsglue-datasets/examples/us-legislators/all/memberships.json") df_joined = df_persons.join(df_memberships, df_persons.id == df_memberships.person_id, 'fullouter') df_joined.write.parquet("s3://aws-glue-demo-sparkui/output/") job.commit()

次の DAG 可視化は、この Spark ジョブのさまざまなステージを示しています。


      ジョブ 0 の 2 つの完了済みステージを示す Spark UI のスクリーンショット。

次に示すジョブのイベントタイムラインは、さまざまな Spark エグゼキュターの開始、実行、終了を示しています。


      さまざまな Spark エグゼキュターの完了、失敗、アクティブの各ステージを示す Spark UI のスクリーンショット。

次の画面は、SparkSQL クエリプランの詳細を示しています。

  • 解析された論理プラン

  • 分析された論理プラン

  • 最適化された論理プラン

  • 実行のための物理プラン


      SparkSQL クエリプラン: 解析された論理プラン、分析された論理プラン、最適化された論理プラン、および実行のための物理プラン。

この場合も、AWS Glue の連続ログ記録を使用し、Spark ドライバーとエグゼキュターの Spark アプリケーションログストリームを表示できます。詳細については、「AWS Glue ジョブの連続ログ記録」を参照してください。