단축된 시작 시간으로 Spark ETL 작업 실행 - AWS Glue

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

단축된 시작 시간으로 Spark ETL 작업 실행

AWS Glue 버전 2.0 이상에서는 시작 시간을 단축하여 AWS Glue에서 Apache Spark ETL(추출, 변환, 로드) 작업을 실행하기 위한 업그레이드된 인프라를 제공합니다. 대기 시간이 단축되어 데이터 엔지니어는 생산성을 높이고 AWS Glue와의 상호 작용성을 높일 수 있습니다. 작업 시작 시간의 편차를 줄이면 분석에 사용할 수 있는 데이터의 SLA를 충족하거나 초과할 수 있습니다.

AWS Glue ETL 작업에 이 기능을 사용하려면 작업 생성 시 Glue version에 대해 2.0 버전 이상을 선택합니다.

지원되는 새로운 기능

이 섹션에서는 AWS Glue 버전 2.0 이상에서 지원되는 새로운 기능에 대해 설명합니다.

작업 수준에서 추가 Python 모듈 지정 지원

AWS Glue 버전 2.0 이상을 사용하면 작업 수준에서 추가 Python 모듈이나 다른 버전을 제공할 수도 있습니다. --additional-python-modules 옵션을 쉼표로 구분된 Python 모듈 목록과 함께 사용하여 새 모듈을 추가하거나 기존 모듈의 버전을 변경할 수 있습니다.

예를 들어 새 scikit-learn 모듈을 업데이트하거나 추가하려면 키/값 "--additional-python-modules", "scikit-learn==0.21.3"을 사용합니다.

또한 --additional-python-modules 옵션 내에서 Python 휠 모듈에 대한 Amazon S3 경로를 지정할 수 있습니다. 예:

--additional-python-modules s3://aws-glue-native-spark/tests/j4.2/ephem-3.7.7.1-cp37-cp37m-linux_x86_64.whl,s3://aws-glue-native-spark/tests/j4.2/fbprophet-0.6-py3-none-any.whl,scikit-learn==0.21.3

AWS Glue는 Python 패키지 설치 프로그램(pip3)을 사용하여 추가 모듈을 설치합니다. 모듈 설치를 위해 python-modules-installer-option으로 지정된 추가 옵션을 pip3에 전달할 수 있습니다. pip3의 비호환성 또는 제한 사항이 적용됩니다.

AWS Glue 버전 2.0에서 이미 제공되는 Python 모듈

AWS Glue 버전 2.0은 기본적으로 다음과 같은 Python 모듈을 지원합니다.

  • setuptools—45.2.0

  • subprocess32—3.5.4

  • ptvsd—4.3.2

  • pydevd—1.9.0

  • PyMySQL—0.9.3

  • docutils—0.15.2

  • jmespath—0.9.4

  • six—1.14.0

  • python_dateutil—2.8.1

  • urllib3—1.25.8

  • botocore—1.15.4

  • s3transfer—0.3.3

  • boto3—1.12.4

  • certifi—2019.11.28

  • chardet—3.0.4

  • idna—2.9

  • requests—2.23.0

  • pyparsing—2.4.6

  • enum34—1.1.9

  • pytz—2019.3

  • numpy—1.18.1

  • cycler—0.10.0

  • kiwisolver—1.1.0

  • scipy—1.4.1

  • pandas—1.0.1

  • pyarrow—0.16.0

  • matplotlib—3.1.3

  • pyhocon—0.3.54

  • mpmath—1.1.0

  • sympy—1.5.1

  • patsy—0.5.1

  • statsmodels—0.11.1

  • fsspec—0.6.2

  • s3fs—0.4.0

  • Cython—0.29.15

  • joblib—0.14.1

  • pmdarima—1.5.3

  • scikit-learn—0.22.1

  • tbats—1.0.9

로깅 동작

AWS Glue 버전 2.0 이상에서는 다른 기본 로깅 동작을 지원합니다. 차이점은 다음과 같습니다.

  • 로깅이 실시간으로 수행됩니다.

  • 드라이버와 실행기를 위한 별도의 스트림이 있습니다.

  • 각 드라이버와 실행기에는 출력 스트림과 오류 스트림의 두 가지 스트림이 있습니다.

드라이버 및 실행기 스트림

드라이버 스트림은 작업 실행 ID로 식별됩니다. 실행기 스트림은 작업 <run id>_<executor task id>로 식별됩니다. 예:

  • "logStreamName": "jr_8255308b426fff1b4e09e00e0bd5612b1b4ec848d7884cebe61ed33a31789..._g-f65f617bd31d54bd94482af755b6cdf464542..."

출력 및 오류 스트림

출력 스트림에는 코드의 표준 출력(stdout)이 있습니다. 오류 스트림에는 코드/라이브러리의 로깅 메시지가 있습니다.

  • 로그 스트림:

    • 드라이버 로그 스트림에는 <jr>이 있으며, 여기서 <jr>은 작업 실행 ID입니다.

    • 실행기 로그 스트림에는 <jr>_<g>가 있습니다. 여기서 <g>는 실행기의 태스크 ID입니다. 드라이버 오류 로그에서 실행기 태스크 ID를 조회할 수 있습니다.

AWS Glue 버전 2.0의 기본 로그 그룹은 다음과 같습니다.

  • 출력의 경우 /aws-glue/jobs/logs/output

  • 오류의 경우 /aws-glue/jobs/logs/error

보안 구성이 제공되면 로그 그룹 이름이 다음으로 변경됩니다.

  • /aws-glue/jobs/<security configuration>-role/<Role Name>/output

  • /aws-glue/jobs/<security configuration>-role/<Role Name>/error

콘솔에서 [로그(Logs)] 링크는 출력 로그 그룹을 가리키고 [오류(Error)] 링크는 오류 로그 그룹을 가리킵니다. 연속 로깅을 사용하면 [로그(Logs)] 링크는 연속 로그 그룹을 가리키고 [출력(Output)] 링크는 출력 로그 그룹을 가리킵니다.

로깅 규칙

참고

연속 로깅의 기본 로그 그룹 이름은 /aws-glue/jobs/logs-v2입니다.

AWS Glue 버전 2.0 이상에서 연속 로깅은 AWS Glue 버전 1.0과 동일한 동작을 수행합니다.

  • 기본 로그 그룹: /aws-glue/jobs/logs-v2

  • 드라이버 로그 스트림: <jr>-driver

  • 실행기 로그 스트림: <jr>-<executor ID>

    --continuous-log-logGroupName을 설정하여 로그 그룹 이름을 변경할 수 있습니다.

    --continous-log-logStreamPrefix를 설정하여 로그 스트림 이름에 접두사를 붙일 수 있습니다.

지원되지 않는 기능

다음 AWS Glue 기능은 지원되지 않습니다.

  • 개발 엔드포인트

  • AWS Glue 버전 2.0 이상은 Apache YARN에서 실행되지 않으므로 YARN 설정이 적용되지 않습니다.

  • AWS Glue 버전 2.0 이상에는 Hadoop 분산 파일 시스템(HDFS)이 없습니다.

  • AWS Glue 버전 2.0 이상에서는 동적 할당을 사용하지 않으므로 ExecutorAllocationManager 지표가 제공되지 않습니다.

  • AWS Glue 버전 2.0 이상 작업의 경우 작업자 수와 작업자 유형을 지정하지만 maxCapacity는 지정하지 않습니다.

  • AWS Glue 버전 2.0 이상에서는 기본값으로 s3n을 지원하지 않습니다. s3 또는 s3a를 사용하는 것이 좋습니다. 어떤 이유로 작업에서 s3n을 사용해야 하는 경우 다음 추가 인수를 전달할 수 있습니다.

    --conf spark.hadoop.fs.s3n.impl=com.amazon.ws.emr.hadoop.fs.EmrFileSystem