기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
에서 시작하기 AWS CLI
AWS CLI 명령을 사용하여에서 EMR Serverless를 시작하여 애플리케이션을 생성하고, 작업을 실행하고, 작업 실행 출력을 확인하고, 리소스를 삭제합니다.
1단계: EMR Serverless 애플리케이션 생성
emr-serverless
create-application
명령을 사용하여 첫 번째 EMR Serverless 애플리케이션을 생성합니다. 애플리케이션 유형 및 사용하려는 애플리케이션 버전과 연결된 Amazon EMR 릴리스 레이블을 지정해야 합니다. 애플리케이션 이름은 선택 사항입니다.
Spark 애플리케이션을 생성하려면 다음 명령을 실행합니다.
aws emr-serverless create-application \
--release-label emr-6.6.0 \
--type "SPARK" \
--name my-application
출력에서 반환된 애플리케이션 ID를 기록합니다. ID를 사용하여 애플리케이션을 시작하고 작업 제출 중에 이후 이를
로 참조합니다.application-id
2단계: EMR Serverless 애플리케이션에 작업 실행 제출 섹션으로 진행하기 전에 애플리케이션이 get-application
API를 사용하여 CREATED
상태에 도달했는지 확인합니다.
aws emr-serverless get-application \
--application-id application-id
EMR Serverless는 요청된 작업을 수용할 작업자를 생성합니다. 기본적으로 온디맨드로 생성되지만 애플리케이션을 생성할 때 initialCapacity
파라미터를 설정하여 사전 초기화된 용량을 지정할 수도 있습니다. 애플리케이션에서 maximumCapacity
파라미터와 함께 사용할 수 있는 총 최대 용량을 제한할 수도 있습니다. 이러한 옵션에 대해 자세히 알아보려면 EMR Serverless 작업 시 애플리케이션 구성 섹션을 참조하세요.
2단계: EMR Serverless 애플리케이션에 작업 실행 제출
이제 EMR Serverless 애플리케이션에서 작업을 실행할 준비가 되었습니다.
이 단계에서는 PySpark 스크립트를 사용하여 여러 텍스트 파일에서 고유한 단어가 발생하는 횟수를 계산합니다. 퍼블릭 읽기 전용 S3 버킷은 스크립트 및 데이터세트를 모두 저장합니다. 애플리케이션은 Spark 런타임의 출력 파일과 로그 데이터를 사용자가 생성한 S3 버킷의 /output
및 /logs
디렉터리로 전송합니다.
Spark 작업을 실행하는 방법
-
다음 명령을 사용하여 새 버킷에 실행할 샘플 스크립트를 복사합니다.
aws s3 cp s3://us-east-1.elasticmapreduce/emr-containers/samples/wordcount/scripts/wordcount.py s3://
amzn-s3-demo-bucket
/scripts/ -
다음 명령에서
를 애플리케이션 ID로 대체합니다.application-id
을 작업 런타임 역할 생성에서 생성한 런타임 역할 ARN으로 대체합니다.job-role-arn
을 작업 실행을 직접 호출하려는 이름으로 바꿉니다. 모든job-run-name
문자열을 사용자가 생성한 Amazon S3 버킷으로 바꾸고 경로에amzn-s3-demo-bucket
/output
을 추가합니다. 그러면 EMR Serverless에서 애플리케이션의 출력 파일을 복사할 수 있는 새 폴더가 버킷에 생성됩니다.aws emr-serverless start-job-run \ --application-id
application-id
\ --execution-role-arnjob-role-arn
\ --namejob-run-name
\ --job-driver '{ "sparkSubmit": { "entryPoint": "s3://amzn-s3-demo-bucket
/scripts/wordcount.py", "entryPointArguments": ["s3://amzn-s3-demo-bucket
/emr-serverless-spark/output"], "sparkSubmitParameters": "--conf spark.executor.cores=1 --conf spark.executor.memory=4g --conf spark.driver.cores=1 --conf spark.driver.memory=4g --conf spark.executor.instances=1" } }' -
출력에서 반환된 작업 실행 ID를 기록합니다. 다음 단계에서
를 이 ID로 바꿉니다.job-run-id
3단계: 작업 실행의 출력 검토
작업 실행을 완료하는 데 일반적으로 3~5분이 소요됩니다.
다음 명령을 사용하여 Spark 작업의 상태를 확인할 수 있습니다.
aws emr-serverless get-job-run \
--application-id application-id
\
--job-run-id job-run-id
로그 대상을 s3://
로 설정하면 amzn-s3-demo-bucket
/emr-serverless-spark/logss3://
에서 이 특정 작업 실행에 대한 로그를 찾을 수 있습니다.amzn-s3-demo-bucket
/emr-serverless-spark/logs/applications/application-id
/jobs/job-run-id
Spark 애플리케이션의 경우 EMR Serverless는 30초마다 이벤트 로그를 S3 로그 대상의 sparklogs
폴더로 푸시합니다. 작업이 완료되면 드라이버 및 실행기에 대한 Spark 런타임 로그가 driver
또는 executor
와 같은 작업자 유형에 따라 적절하게 이름이 지정된 폴더에 업로드됩니다. PySpark 작업의 출력은 s3://
에 업로드됩니다.amzn-s3-demo-bucket
/output/
4단계: 정리
이 자습서 작업을 마치면 생성한 리소스를 삭제하는 방법을 고려합니다. 다시 사용할 의도가 없는 리소스는 해제하는 것이 좋습니다.
애플리케이션 삭제
애플리케이션을 삭제하려면 다음 명령을 사용합니다.
aws emr-serverless delete-application \
--application-id application-id
S3 로그 버킷 삭제
S3 로깅 및 출력 버킷을 삭제하려면 다음 명령을 사용합니다.
을 EMR Serverless에 대한 스토리지 준비에서 생성한 S3 버킷 이름으로 바꿉니다.amzn-s3-demo-bucket
aws s3 rm s3://amzn-s3-demo-bucket
--recursive
aws s3api delete-bucket --bucket amzn-s3-demo-bucket
작업 런타임 역할 삭제
런타임 역할을 삭제하려면 역할에서 정책을 분리합니다. 그런 다음, 역할과 정책을 모두 삭제할 수 있습니다.
aws iam detach-role-policy \
--role-name EMRServerlessS3RuntimeRole \
--policy-arn policy-arn
역할을 삭제하려면 다음 명령을 사용합니다.
aws iam delete-role \
--role-name EMRServerlessS3RuntimeRole
역할에 연결된 정책을 삭제하려면 다음 명령을 사용합니다.
aws iam delete-policy \
--policy-arn policy-arn
Spark 및 Hive 작업 실행에 대한 추가 예제는 EMR Serverless 작업을 실행하는 경우 Spark 구성 사용 및 EMR Serverless 작업을 실행하는 경우 Hive 구성 사용 섹션을 참조하세요.