ablog

不器用で落着きのない技術者のメモ

Spark UI で Glue ジョブの結果を確認する手順

S3 に Spark event log 用のパス(例: s3://spark-ui-tokyo-ya/eventlog)を作成し、Glueジョブの[モニタリングオプション]-[Spark UI] にチェックを入れ、[Amazon S3 prefix for Spark event logs]にその S3 のパスを指定し、CloudFormation で Spark History Server 用の EC2 インスタンス作成時に EventLogDir に S3 のパスを指定する。

  • https://docs.aws.amazon.com/ja_jp/glue/latest/dg/monitor-spark-ui-history.html で使用するリージョンの「Launch Stack」をクリックする。
    • スタック名:SparkUIStack
    • Spark UI Configuration:0.0.0.0/0
      • CloudFormation Stack 作成"完了"後に My ÎP に変更する
    • HistoryServerPort:18080(デフォルト値)
    • EventLogDir:s3a://[YOUR BUCKET NAME]/eventlog
      • 任意のS3バケットを指定(Glueと同じリージョンにする)
    • SparkPackageLocation:デフォルト値
    • KeystorePath:何も入力しない
    • KeystorePassword:任意の値(英数字だけだと成功した)
    • InstanceType:r5.4xlarge
    • LastAmiId:デフォルト値
    • VpcId:任意のVPC
    • SubnetId:上記VpcIdが所属するSubnet

CloudFormation の出力の SparkUiPublicUrl に Spark UI の URL が表示される。
f:id:yohei-a:20200629023134p:plain

Spark UI にアクセスする

f:id:yohei-a:20200629022908p:plain

デバッグ

確認ポイント
  • サブネットで「自動割り当てIP設定」が有効になっているか
  • KeystorePassword は英数字のみでないといけない?(CFnがコケたので英数字のみにしたら成功)
  • ネットワーク的に到達可能か(VPC/Subnet/SecurityGroup)
    • VPN接続などしている場合はVPN接続なしなども試してみる。
    • 社内ネットワークなどでポートが制限されている場合は、CFn 実行時に許可されているポートに設定する。
  • CFn で s3a://[bucket name]/eventlog のようにパスを指定しているか
  • ログ
    • /aws-glue/sparkui_cfn/cfn-init.log
    • /aws-glue/sparkui_cfn/spark_history_server.log
EC2インスタンスにログインする