はじめに
こんにちは、ただいま風邪でダウンしているomkです。
皆様におかれましては体調にはお気をつけてどうかご自愛ください。
さて、クリスマスまでいよいよラスト1週間!慌ただしい季節ですが頑張って走り抜けましょう!!
本題
re:Inventのキャッチアップをしていたときにたまたま見かけたんですが、しれっとGlue Studioの画面上でSpark UIが見られるようになっていました。
https://aws.amazon.com/jp/about-aws/whats-new/2023/11/aws-glue-serverless-spark-ui-observability-metrics/
ちょっと前まではCloudFormationでSpark UIをホストするEC2を建てる方法が用意されていて、
その時のやり方は以下に記載があります。
https://docs.aws.amazon.com/ja_jp/glue/latest/dg/monitor-spark-ui-history.html
今だとログの記録をレガシーにすることで同じようにできると思います。
それはそうとコンソールからSpark UIが見られるようになったのでやってみます。
やってみた
Glue Studioからテキトーなジョブを作ります。
今回は2つのテーブルを整形してJoinして集計するだけの簡単な処理をします。
Spark UIの設定は「Job details」の「Advanced properties」にあります。
Spark UIのログの出力のチェックボックスとS3の出力先指定とログの内容の設定ですね。
これらの設定を行えばGlueのコンソールからSpark UIが見られるようになります。
以前と違うのはログがStandard(標準)とLegacy(レガシー)とで選べるくらいですね。
StandardだとWEBのUIから確認ができて、Legacyだと上に述べた方法で確認ができます。
両方のログを表示することもできます。
表示
ジョブのRunsから実行ごとにSparkUIを表示できます。
最初は画面がクルクルして表示できませんでしたがページのリロードを行えば表示できるようになりました。
これを見ることで「どこの処理に時間がかかっているのか」や「どこの処理にどれだけのワーカーを多く使っているのか」などといった情報がわかります。
このUIを確認しながら処理のボトルネックを探したりコスト最適化を図ります。
旧来のやり方と比較して、見た目はほぼほぼそのままで、Glueのコンソールに埋め込まれているので対象のGlueジョブの実行履歴とで突き合わせずに簡単に見やすくなっている点で良くなっていると思います。
Spark UIのために1台サーバを持ち続けているのもコスト面や管理面で煩わしさがあったので今後特に理由がない限りはこっちを使っていくかなーという感じです。
ただ時間がUTCなのでちょ~っと分かりづらさはありますね(Spark UI側のAM・PM表記をやめてくれればまだいいんですが……)。
そんなわけでGlueでSpark UIが簡単に使えるようになったので使っていない方はぜひ使ってみてはいかがでしょうか。
おしまい!!また明日!!
アーキテクト課のomkです。
AWSについて雑多に取り組んだ内容を発信しています!!