로그 저장 - Amazon EMR

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

로그 저장

EMR Serverless에서 작업 진행 상황을 모니터링하고 작업 실패 문제를 해결하기 위해 EMR Serverless에서 애플리케이션 로그를 저장하고 제공하는 방법을 선택할 수 있습니다. 작업 실행을 제출하는 경우 관리형 스토리지, Amazon S3 및 Amazon CloudWatch를 로깅 옵션으로 지정할 수 있습니다.

CloudWatch를 사용하면 사용하려는 로그 유형 및 로그 위치를 지정하거나 기본 유형 및 위치를 수락할 수 있습니다. Cloudwatch 로그에 대한 자세한 내용은 Amazon CloudWatch를 사용하는 EMR Serverless에 대한 로깅 섹션을 참조하세요. 다음 표에서는 관리형 스토리지 및 S3 로깅을 사용하는 경우 관리형 스토리지, Amazon S3 버킷 또는 둘 다를 선택할 때 예상할 수 있는 로그 위치와 UI 가용성을 보여줍니다.

옵션 이벤트 로그 컨테이너 로그 애플리케이션 UI

관리형 스토리지

관리형 스토리지에 저장됨

관리형 스토리지에 저장됨

지원

관리형 스토리지와 S3 버킷 모두

두 장소에 모두 저장됨

S3 버킷에 저장됨

지원

Amazon S3 버킷

S3 버킷에 저장됨

S3 버킷에 저장됨

지원되지 않음1

1 관리형 스토리지 옵션을 선택한 상태로 유지하는 것이 좋습니다. 그렇지 않으면 기본 제공 애플리케이션 UI를 사용할 수 없습니다.

관리형 스토리지를 사용하는 EMR Serverless에 대한 로깅

기본적으로 EMR Serverless는 애플리케이션 로그를 Amazon EMR 관리형 스토리지에 최대 30일 동안 안전하게 저장합니다.

참고

기본 옵션을 끄면 Amazon EMR에서 사용자를 대신하여 작업 문제를 해결할 수 없습니다.

EMR Studio에서 이 옵션을 끄려면 제출 작업 페이지의 추가 설정 섹션에서 30일 동안 AWS에서 로그 유지 허용 확인란을 선택 취소합니다.

AWS CLI에서 이 옵션을 끄려면 작업 실행을 제출하는 경우 managedPersistenceMonitoringConfiguration 구성을 사용합니다.

{ "monitoringConfiguration": { "managedPersistenceMonitoringConfiguration": { "enabled": false } } }

Amazon S3 버킷을 사용하는 EMR Serverless에 대한 로깅

작업에서 Amazon S3로 로그 데이터를 전송하려면 먼저 작업 실행 역할에 대한 권한 정책에 다음 권한을 포함해야 합니다. amzn-s3-demo-logging-bucket을 로깅 버킷의 이름으로 바꿉니다.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:PutObject" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-logging-bucket/*" ] } ] }

AWS CLI에서 로그를 저장하도록 Amazon S3 버킷을 설정하려면 작업 실행을 시작할 때 s3MonitoringConfiguration 구성을 사용합니다. 이를 수행하려면 구성에서 다음 --configuration-overrides를 제공합니다.

{ "monitoringConfiguration": { "s3MonitoringConfiguration": { "logUri": "s3://amzn-s3-demo-logging-bucket/logs/" } } }

재시도를 활성화하지 않은 배치 작업의 경우 EMR Serverless는 로그를 다음 경로로 전송합니다.

'/applications/<applicationId>/jobs/<jobId>'

EMR Serverless 릴리스 7.1.0 이상에서는 스트리밍 작업 및 배치 작업에 대한 재시도를 지원합니다. 재시도가 활성화된 상태에서 작업을 실행하면 EMR Serverless는 로그 경로 접두사에 시도 번호를 자동으로 추가하므로, 로그를 효과적으로 식별하고 추적할 수 있습니다.

'/applications/<applicationId>/jobs/<jobId>/attempts/<attemptNumber>/'

Amazon CloudWatch를 사용하는 EMR Serverless에 대한 로깅

EMR Serverless 애플리케이션에 작업을 제출하는 경우 Amazon CloudWatch를 애플리케이션 로그를 저장하는 옵션으로 선택할 수 있습니다. 이를 통해 CloudWatch Logs Insights 및 Live Tail과 같은 CloudWatch 로그 분석 기능을 사용할 수 있습니다. 추가 분석을 위해 CloudWatch에서 OpenSearch와 같은 다른 시스템으로 로그를 스트리밍할 수도 있습니다.

EMR Serverless는 드라이버 로그에 대한 실시간 로깅을 제공합니다. CloudWatch Live Tail 기능을 사용하거나 CloudWatch CLI 테일 명령을 통해 로그를 실시간으로 볼 수 있습니다.

기본적으로 EMR Serverless에서는 CloudWatch 로깅이 비활성화됩니다. 이를 활성화하려면 AWS CLI의 구성을 참조하세요.

참고

Amazon CloudWatch는 로그를 실시간으로 게시하므로 작업자에서 더 많은 리소스가 사용됩니다. 더 적은 작업자 용량을 선택하면 작업 런타임에 미치는 영향이 커질 수 있습니다. CloudWatch 로깅을 활성화하는 경우 더 큰 작업자 용량을 선택하는 것이 좋습니다. 초당 트랜잭션 수(TPS) 비율이 PutLogEvents에서 너무 낮으면 로그 게시가 스로틀링될 수도 있습니다. CloudWatch 스로틀링 구성은 EMR Serverless를 포함한 모든 서비스에 대해 전역으로 적용됩니다. 자세한 내용은 AWS re:post의 CloudWatch Logs의 스로틀링 오류를 해결하려면 어떻게 해야 합니까?를 참조하세요.

CloudWatch를 사용하여 로깅하는 데 필요한 권한

작업에서 Amazon CloudWatch로 로그 데이터를 전송하려면 먼저 작업 실행 역할에 대한 권한 정책에 다음 권한을 포함해야 합니다.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "logs:DescribeLogGroups" ], "Resource": [ "arn:aws:logs:AWS 리전:111122223333:*" ] }, { "Effect": "Allow", "Action": [ "logs:PutLogEvents", "logs:CreateLogGroup", "logs:CreateLogStream", "logs:DescribeLogStreams" ], "Resource": [ "arn:aws:logs:AWS 리전:111122223333:log-group:my-log-group-name:*" ] } ] }

AWS CLI

AWS CLI에서 EMR Serverless에 대한 로그를 저장하도록 Amazon CloudWatch를 설정하려면 작업 실행을 시작할 때 cloudWatchLoggingConfiguration 구성을 사용합니다. 이를 수행하려면 다음 구성 재정의를 제공합니다. 선택적으로 로그 그룹 이름, 로그 스트림 접두사 이름, 로그 유형 및 암호화 키 ARN을 제공할 수도 있습니다.

선택적 값을 지정하지 않으면 CloudWatch는 기본 로그 스트림 /applications/applicationId/jobs/jobId/worker-type을 사용하여 로그를 기본 로그 그룹 /aws/emr-serverless에 게시합니다.

EMR Serverless 릴리스 7.1.0 이상에서는 스트리밍 작업 및 배치 작업에 대한 재시도를 지원합니다. 작업에 대한 재시도를 활성화하면 EMR Serverless는 로그 경로 접두사에 시도 번호를 자동으로 추가하므로, 로그를 효과적으로 식별하고 추적할 수 있습니다.

'/applications/<applicationId>/jobs/<jobId>/attempts/<attemptNumber>/worker-type'

다음에서는 EMR Serverless의 기본 설정으로 Amazon CloudWatch 로깅을 활성화하는 데 필요한 최소 구성을 보여줍니다.

{ "monitoringConfiguration": { "cloudWatchLoggingConfiguration": { "enabled": true } } }

다음 예제에서는 EMR Serverless에 대해 Amazon CloudWatch 로깅을 켤 때 지정할 수 있는 모든 필수 및 선택적 구성을 보여줍니다. 지원되는 logTypes 값도 이 예제 아래에 나와 있습니다.

{ "monitoringConfiguration": { "cloudWatchLoggingConfiguration": { "enabled": true, // Required "logGroupName": "Example_logGroup", // Optional "logStreamNamePrefix": "Example_logStream", // Optional "encryptionKeyArn": "key-arn", // Optional "logTypes": { "SPARK_DRIVER": ["stdout", "stderr"] //List of values } } } }

기본적으로 EMR Serverless는 드라이버 stdout 및 stderr 로그만 CloudWatch에 게시합니다. 다른 로그를 원하는 경우 logTypes 필드를 사용하여 컨테이너 역할 및 해당 로그 유형을 지정할 수 있습니다.

다음 목록에서는 logTypes 구성에 지정할 수 있는 지원되는 작업자 유형을 보여줍니다.

Spark
  • SPARK_DRIVER : ["STDERR", "STDOUT"]

  • SPARK_EXECUTOR : ["STDERR", "STDOUT"]

Hive
  • HIVE_DRIVER : ["STDERR", "STDOUT", "HIVE_LOG", "TEZ_AM"]

  • TEZ_TASK : ["STDERR", "STDOUT", "SYSTEM_LOGS"]