0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

AWS GlueのJob metricsを確認してみた

Last updated at Posted at 2023-05-25

背景・目的

Glueに、Job metricsというチェックボックスがあり、これを有効にすることで、どのようなメトリクスが出力されるのかを確認してみました。

まとめ

  • Job metricsを有効にすることで、Driver、Executorごと、または全てのExecutorを集計したメトリクスが確認できます。(無効にすると一切出力されません。)
  • 30秒ごとに、GlueからCloudWatchにレポートされます。

概要

メトリクスは 30 秒ごとに AWS Glue から CloudWatch に報告され、CloudWatch メトリクスダッシュボードは 1 分ごとにそれらを表示するように設定されています。AWS Glue メトリクスは、以前に報告された値からデルタ値を表示します。必要に応じて、メトリクスダッシュボードは 30 秒の値を集計 (合計) し、最近 1 分間分の値を取得します。AWS Glue メトリクスは、スクリプトでの GlueContext の初期化時に有効になり、基本的には Apache Spark タスクの終了時にのみ更新されます。また、これまでに完了した Spark タスク全体の集計値を表します。

  • 30秒ごとにGlueからCloudWatchにレポートされる。
  • メトリクスダッシュボードでは1分ごとに表示されるように設定される。

すべての AWS Glue メトリクス名の前には、必ず次のいずれかの種類のプレフィックスが付きます。
glue.driver. – 名前がこのプレフィックスで始まるメトリクスは、Spark ドライバーのすべてのエグゼキュターから集計された AWS Glue メトリクスか、Spark ドライバーに対応する Spark メトリクスを表します。
.executorIdglue. – executorId は、特定の Spark エグゼキュターの番号です。ログに表示されているエグゼキュータに対応します。
glue.ALL. – 名前がこのプレフィックスで始まるメトリクスは、すべての Spark エグゼキュターからの値を集計します。

  • Driver、Executorごとのメトリクスが確認できる。
  • ALLは、すべてのExecutorからの値を集計したもの

詳細は、AWS Glue のメトリクスを確認することで、メトリクスの内容は確認できます。

実践

事前準備

  1. 30秒間に一回メトリクスが作られるので、最低でも30秒以上動作させるため、大きめのデータを用意します。
    image.png

実装

Job metricsを有効にした場合

  1. 下記のようにS3間でデータを連携するだけのジョブを作成します。
    image.png

  2. Job metricsをチェックし、実行します。
    image.png

  3. メトリクスが表示されました。
    image.png

  4. CLIでも確認します。表示されました。

    $ aws cloudwatch list-metrics --namespace Glue --region us-west-2 --dimensions Name=JobName,Value=cloudwatch-metric-test-enabled
    {
        "Metrics": [
            {
                "Namespace": "Glue",
                "MetricName": "glue.1.jvm.heap.usage",
                "Dimensions": [
                    {
                        "Name": "Type",
                        "Value": "gauge"
                    },
                    {
                        "Name": "JobRunId",
                        "Value": "jr_31a602e3b350f95ae9650cf032b64d2605f8c1afdd8b41e81fafe4a6cca580f2"
                    },
                    {
                        "Name": "JobName",
                        "Value": "cloudwatch-metric-test-enabled"
                    }
                ]
            },
    ・・・
    ・・・
    
  5. メトリクスの内容を確認します。なお、メトリクス名に番号が振られているものはexecutorIdとのことです。

    $ aws cloudwatch list-metrics --namespace Glue --region us-west-2 --dimensions Name=JobName,Value=cloudwatch-metric-test-enabled | grep MetricName | sort | uniq
                "MetricName": "glue.1.jvm.heap.usage",
                "MetricName": "glue.1.jvm.heap.used",
                "MetricName": "glue.1.s3.filesystem.read_bytes",
                "MetricName": "glue.1.s3.filesystem.write_bytes",
                "MetricName": "glue.1.system.cpuSystemLoad",
                "MetricName": "glue.2.jvm.heap.usage",
                "MetricName": "glue.2.jvm.heap.used",
                "MetricName": "glue.2.s3.filesystem.read_bytes",
                "MetricName": "glue.2.s3.filesystem.write_bytes",
                "MetricName": "glue.2.system.cpuSystemLoad",
                "MetricName": "glue.3.jvm.heap.usage",
                "MetricName": "glue.3.jvm.heap.used",
                "MetricName": "glue.3.s3.filesystem.read_bytes",
                "MetricName": "glue.3.s3.filesystem.write_bytes",
                "MetricName": "glue.3.system.cpuSystemLoad",
                "MetricName": "glue.4.jvm.heap.usage",
                "MetricName": "glue.4.jvm.heap.used",
                "MetricName": "glue.4.s3.filesystem.read_bytes",
                "MetricName": "glue.4.s3.filesystem.write_bytes",
                "MetricName": "glue.4.system.cpuSystemLoad",
                "MetricName": "glue.5.jvm.heap.usage",
                "MetricName": "glue.5.jvm.heap.used",
                "MetricName": "glue.5.s3.filesystem.read_bytes",
                "MetricName": "glue.5.s3.filesystem.write_bytes",
                "MetricName": "glue.5.system.cpuSystemLoad",
                "MetricName": "glue.6.jvm.heap.usage",
                "MetricName": "glue.6.jvm.heap.used",
                "MetricName": "glue.6.s3.filesystem.read_bytes",
                "MetricName": "glue.6.s3.filesystem.write_bytes",
                "MetricName": "glue.6.system.cpuSystemLoad",
                "MetricName": "glue.7.jvm.heap.usage",
                "MetricName": "glue.7.jvm.heap.used",
                "MetricName": "glue.7.s3.filesystem.read_bytes",
                "MetricName": "glue.7.s3.filesystem.write_bytes",
                "MetricName": "glue.7.system.cpuSystemLoad",
                "MetricName": "glue.8.jvm.heap.usage",
                "MetricName": "glue.8.jvm.heap.used",
                "MetricName": "glue.8.s3.filesystem.read_bytes",
                "MetricName": "glue.8.s3.filesystem.write_bytes",
                "MetricName": "glue.8.system.cpuSystemLoad",
                "MetricName": "glue.9.jvm.heap.usage",
                "MetricName": "glue.9.jvm.heap.used",
                "MetricName": "glue.9.s3.filesystem.read_bytes",
                "MetricName": "glue.9.s3.filesystem.write_bytes",
                "MetricName": "glue.9.system.cpuSystemLoad",
                "MetricName": "glue.ALL.jvm.heap.usage",
                "MetricName": "glue.ALL.jvm.heap.used",
                "MetricName": "glue.ALL.s3.filesystem.read_bytes",
                "MetricName": "glue.ALL.s3.filesystem.write_bytes",
                "MetricName": "glue.ALL.system.cpuSystemLoad",
                "MetricName": "glue.driver.BlockManager.disk.diskSpaceUsed_MB",
                "MetricName": "glue.driver.aggregate.bytesRead",
                "MetricName": "glue.driver.aggregate.elapsedTime",
                "MetricName": "glue.driver.aggregate.numCompletedStages",
                "MetricName": "glue.driver.aggregate.numCompletedTasks",
                "MetricName": "glue.driver.aggregate.numFailedTasks",
                "MetricName": "glue.driver.aggregate.numKilledTasks",
                "MetricName": "glue.driver.aggregate.recordsRead",
                "MetricName": "glue.driver.aggregate.shuffleBytesWritten",
                "MetricName": "glue.driver.aggregate.shuffleLocalBytesRead",
                "MetricName": "glue.driver.jvm.heap.usage",
                "MetricName": "glue.driver.jvm.heap.used",
                "MetricName": "glue.driver.s3.filesystem.read_bytes",
                "MetricName": "glue.driver.s3.filesystem.write_bytes",
                "MetricName": "glue.driver.system.cpuSystemLoad",
    $
    
  6. 1つのジョブの実行で65本のメトリクスが取得されるようです。

    $ aws cloudwatch list-metrics --namespace Glue --region us-west-2 --dimensions Name=JobName,Value=cloudwatch-metric-test-enabled | grep MetricName | sort | uniq | wc -l
          65
    $
    

Job metricsを無効にした場合

ちなみに、Job metricsを無効にした場合に、一切メトリクスは取得できないのか確認してみました。

  1. Job metricsのチェックを外し、実行します。
    image.png

  2. メトリクスは表示されません。
    image.png

  3. 念のためにCLIでも確認します。取得できません。

    $ aws cloudwatch list-metrics --namespace Glue --region us-west-2 --dimensions Name=JobName,Value=cloudwatch-metric-test-disable                             
    {
        "Metrics": []
    }
    $ 
    

参考

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?