쿠키 기본 설정 선택

당사는 사이트와 서비스를 제공하는 데 필요한 필수 쿠키 및 유사한 도구를 사용합니다. 고객이 사이트를 어떻게 사용하는지 파악하고 개선할 수 있도록 성능 쿠키를 사용해 익명의 통계를 수집합니다. 필수 쿠키는 비활성화할 수 없지만 '사용자 지정' 또는 ‘거부’를 클릭하여 성능 쿠키를 거부할 수 있습니다.

사용자가 동의하는 경우 AWS와 승인된 제3자도 쿠키를 사용하여 유용한 사이트 기능을 제공하고, 사용자의 기본 설정을 기억하고, 관련 광고를 비롯한 관련 콘텐츠를 표시합니다. 필수가 아닌 모든 쿠키를 수락하거나 거부하려면 ‘수락’ 또는 ‘거부’를 클릭하세요. 더 자세한 내용을 선택하려면 ‘사용자 정의’를 클릭하세요.

에서 시작하기 AWS CLI - Amazon EMR

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

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

에서 시작하기 AWS CLI

AWS CLI 명령을 사용하여에서 EMR Serverless를 시작하여 애플리케이션을 생성하고, 작업을 실행하고, 작업 실행 출력을 확인하고, 리소스를 삭제합니다.

1단계: EMR Serverless 애플리케이션 생성

emr-serverless create-application 명령을 사용하여 첫 번째 EMR Serverless 애플리케이션을 생성합니다. 애플리케이션 유형 및 사용하려는 애플리케이션 버전과 연결된 Amazon EMR 릴리스 레이블을 지정해야 합니다. 애플리케이션 이름은 선택 사항입니다.

Spark

Spark 애플리케이션을 생성하려면 다음 명령을 실행합니다.

aws emr-serverless create-application \ --release-label emr-6.6.0 \ --type "SPARK" \ --name my-application
Hive

Hive 애플리케이션을 생성하려면 다음 명령을 실행합니다.

aws emr-serverless create-application \ --release-label emr-6.6.0 \ --type "HIVE" \ --name my-application

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 애플리케이션에서 작업을 실행할 준비가 되었습니다.

Spark

이 단계에서는 PySpark 스크립트를 사용하여 여러 텍스트 파일에서 고유한 단어가 발생하는 횟수를 계산합니다. 퍼블릭 읽기 전용 S3 버킷은 스크립트 및 데이터세트를 모두 저장합니다. 애플리케이션은 Spark 런타임의 출력 파일과 로그 데이터를 사용자가 생성한 S3 버킷의 /output/logs 디렉터리로 전송합니다.

Spark 작업을 실행하는 방법
  1. 다음 명령을 사용하여 새 버킷에 실행할 샘플 스크립트를 복사합니다.

    aws s3 cp s3://us-east-1.elasticmapreduce/emr-containers/samples/wordcount/scripts/wordcount.py s3://amzn-s3-demo-bucket/scripts/
  2. 다음 명령에서 application-id를 애플리케이션 ID로 대체합니다. job-role-arn작업 런타임 역할 생성에서 생성한 런타임 역할 ARN으로 대체합니다. job-run-name을 작업 실행을 직접 호출하려는 이름으로 바꿉니다. 모든 amzn-s3-demo-bucket 문자열을 사용자가 생성한 Amazon S3 버킷으로 바꾸고 경로에 /output을 추가합니다. 그러면 EMR Serverless에서 애플리케이션의 출력 파일을 복사할 수 있는 새 폴더가 버킷에 생성됩니다.

    aws emr-serverless start-job-run \ --application-id application-id \ --execution-role-arn job-role-arn \ --name job-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" } }'
  3. 출력에서 반환된 작업 실행 ID를 기록합니다. 다음 단계에서 job-run-id를 이 ID로 바꿉니다.

Hive

이 자습서에서는 테이블을 생성하고, 몇 개의 레코드를 삽입하며, 개수 집계 쿼리를 실행합니다. Hive 작업을 실행하려면 먼저 단일 작업의 일부로 실행할 모든 Hive 쿼리가 포함된 파일을 생성하고 S3에 파일을 업로드한 다음, Hive 작업을 시작할 때 이 S3 경로를 지정합니다.

Hive 작업을 실행하는 방법
  1. Hive 작업에서 실행하려는 모든 쿼리가 포함된 hive-query.ql 파일을 생성합니다.

    create database if not exists emrserverless; use emrserverless; create table if not exists test_table(id int); drop table if exists Values__Tmp__Table__1; insert into test_table values (1),(2),(2),(3),(3),(3); select id, count(id) from test_table group by id order by id desc;
  2. 다음 명령을 사용하여 S3 버킷에 hive-query.ql을 업로드합니다.

    aws s3 cp hive-query.ql s3://amzn-s3-demo-bucket/emr-serverless-hive/query/hive-query.ql
  3. 다음 명령에서 application-id를 자체 애플리케이션 ID로 대체합니다. job-role-arn작업 런타임 역할 생성에서 생성한 런타임 역할 ARN으로 대체합니다. 모든 amzn-s3-demo-bucket 문자열을 사용자가 생성한 Amazon S3 버킷으로 바꾸고 경로에 /output/logs를 추가합니다. 그러면 버킷에 새 폴더가 생성되고, 여기로 EMR Serverless에서 애플리케이션의 출력 및 로그 파일을 복사할 수 있습니다.

    aws emr-serverless start-job-run \ --application-id application-id \ --execution-role-arn job-role-arn \ --job-driver '{ "hive": { "query": "s3://amzn-s3-demo-bucket/emr-serverless-hive/query/hive-query.ql", "parameters": "--hiveconf hive.log.explain.output=false" } }' \ --configuration-overrides '{ "applicationConfiguration": [{ "classification": "hive-site", "properties": { "hive.exec.scratchdir": "s3://amzn-s3-demo-bucket/emr-serverless-hive/hive/scratch", "hive.metastore.warehouse.dir": "s3://amzn-s3-demo-bucket/emr-serverless-hive/hive/warehouse", "hive.driver.cores": "2", "hive.driver.memory": "4g", "hive.tez.container.size": "4096", "hive.tez.cpu.vcores": "1" } }], "monitoringConfiguration": { "s3MonitoringConfiguration": { "logUri": "s3://amzn-s3-demo-bucket/emr-serverless-hive/logs" } } }'
  4. 출력에서 반환된 작업 실행 ID를 기록합니다. 다음 단계에서 job-run-id를 이 ID로 바꿉니다.

이 단계에서는 PySpark 스크립트를 사용하여 여러 텍스트 파일에서 고유한 단어가 발생하는 횟수를 계산합니다. 퍼블릭 읽기 전용 S3 버킷은 스크립트 및 데이터세트를 모두 저장합니다. 애플리케이션은 Spark 런타임의 출력 파일과 로그 데이터를 사용자가 생성한 S3 버킷의 /output/logs 디렉터리로 전송합니다.

Spark 작업을 실행하는 방법
  1. 다음 명령을 사용하여 새 버킷에 실행할 샘플 스크립트를 복사합니다.

    aws s3 cp s3://us-east-1.elasticmapreduce/emr-containers/samples/wordcount/scripts/wordcount.py s3://amzn-s3-demo-bucket/scripts/
  2. 다음 명령에서 application-id를 애플리케이션 ID로 대체합니다. job-role-arn작업 런타임 역할 생성에서 생성한 런타임 역할 ARN으로 대체합니다. job-run-name을 작업 실행을 직접 호출하려는 이름으로 바꿉니다. 모든 amzn-s3-demo-bucket 문자열을 사용자가 생성한 Amazon S3 버킷으로 바꾸고 경로에 /output을 추가합니다. 그러면 EMR Serverless에서 애플리케이션의 출력 파일을 복사할 수 있는 새 폴더가 버킷에 생성됩니다.

    aws emr-serverless start-job-run \ --application-id application-id \ --execution-role-arn job-role-arn \ --name job-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" } }'
  3. 출력에서 반환된 작업 실행 ID를 기록합니다. 다음 단계에서 job-run-id를 이 ID로 바꿉니다.

3단계: 작업 실행의 출력 검토

작업 실행을 완료하는 데 일반적으로 3~5분이 소요됩니다.

Spark

다음 명령을 사용하여 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/logs로 설정하면 s3://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/에 업로드됩니다.

Hive

다음 명령을 사용하여 Hive 작업의 상태를 확인할 수 있습니다.

aws emr-serverless get-job-run \ --application-id application-id \ --job-run-id job-run-id

로그 대상을 s3://amzn-s3-demo-bucket/emr-serverless-hive/logs로 설정하면 s3://amzn-s3-demo-bucket/emr-serverless-hive/logs/applications/application-id/jobs/job-run-id에서 이 특정 작업 실행에 대한 로그를 찾을 수 있습니다.

Hive 애플리케이션의 경우 EMR Serverless는 S3 로그 대상의 HIVE_DRIVER 폴더에 Hive 드라이버, TEZ_TASK 폴더에 Tez 태스크 로그를 지속적으로 업로드합니다. 작업 실행이 SUCCEEDED 상태에 도달하면 configurationOverridesmonitoringConfiguration 필드에 지정한 Amazon S3 위치에서 Hive 쿼리의 출력을 사용할 수 있습니다.

다음 명령을 사용하여 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/logs로 설정하면 s3://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 로깅 및 출력 버킷을 삭제하려면 다음 명령을 사용합니다. amzn-s3-demo-bucketEMR Serverless에 대한 스토리지 준비에서 생성한 S3 버킷 이름으로 바꿉니다.

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 구성 사용 섹션을 참조하세요.

프라이버시사이트 이용 약관쿠키 기본 설정
© 2025, Amazon Web Services, Inc. 또는 계열사. All rights reserved.