ablog

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

VPC内 Glue Job が使用するIPアドレス数

VPC内に Spark Job と Python Shell のジョブを作成した際に使用する IP アドレス数を確認した。1ジョブの1回の実行当たり、Spark Job は Worker 数、Python Shell は 1 つのIPアドレスを消費する。

ジョブの種類 使用するIPアドレス Worker数/DPU
Spark Job Worker数 10 workers
Python Shell 1つ 1/16 DPU,1 DPU
  • Spark job

検証を行った構成

共通
  • VPC Endpoint
    • 使用する VPC に com.amazonaws.ap-northeast-1.s3(Gateway型) の VPC エンドポイントを作成する。


  • VPC
    • VPCにアタッチされているルートテーブルのターゲットに VPCエンドポイントを追加する。


  • Glue Connection
    • VPCエンドポイント経由で Glue Job から S3 にアクセスするために Glue Connection を作成する。

  • Security group
    • Glue Connection で使用する Security group はインバウンドルールで自セキュリティグループからの全てのトラフィックを許可する。

Spark Job
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

import time
time.sleep(60)

## @params: [JOB_NAME]
args = getResolvedOptions(sys.argv, ['JOB_NAME'])

sc = SparkContext()
glueContext = GlueContext(sc)
spark = glueContext.spark_session
job = Job(glueContext)
job.init(args['JOB_NAME'], args)
job.commit()
  • Job details
    • Script filename: SparkJob.py
    • Type: Spark
    • Language: Python 3
    • Worker type: G 1X
    • Requested number of workers: 10
    • Additional network connections: 作成した Glue connection を指定

Python Shell
import sys
import time

print(sys.version)
time.sleep(60)
  • Job details
    • Script filename: SparkJob.py
    • Type: Python Shell
    • Python version: Python 3.9
    • Data processing units: 1 DPU
    • Additional network connections: 作成した Glue connection を指定