

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

# 를 사용하여 작업 실행 관리 AWS CLI
<a name="emr-eks-jobs-CLI"></a>

이 주제에서는 AWS Command Line Interface ()를 사용하여 작업 실행을 관리하는 방법을 다룹니다AWS CLI. 보안 파라미터, 드라이버 및 다양한 재정의 설정과 같은 속성을 자세히 설명합니다. 로깅을 구성하는 다양한 방법을 다루는 하위 주제도 포함되어 있습니다.

**Topics**
+ [작업 실행 구성 옵션](#emr-eks-jobs-parameters)
+ [Amazon S3 로그를 사용하도록 작업 실행 구성](emr-eks-jobs-s3.md)
+ [Amazon CloudWatch Logs를 사용하도록 작업 실행 구성](emr-eks-jobs-cloudwatch.md)
+ [작업 실행 나열](#emr-eks-jobs-list)
+ [작업 실행 설명](#emr-eks-jobs-describe)
+ [작업 실행 취소](#emr-eks-jobs-cancel)

## 작업 실행 구성 옵션
<a name="emr-eks-jobs-parameters"></a>

다음 옵션을 사용하여 작업 실행 파라미터를 구성합니다.
+ `--execution-role-arn`: 작업 실행에 사용되는 IAM 역할을 제공해야 합니다. 자세한 내용은 [Amazon EMR on EKS에서 작업 실행 역할 사용](iam-execution-role.md) 단원을 참조하십시오.
+ `--release-label`: Amazon EMR 버전 5.32.0 및 6.2.0 이상을 사용하여 Amazon EMR on EKS를 배포할 수 있습니다. Amazon EMR on EKS는 이전 Amazon EMR 릴리스 버전에서 지원되지 않습니다. 자세한 내용은 [Amazon EMR on EKS 릴리스](emr-eks-releases.md) 단원을 참조하십시오.
+ `--job-driver`: 작업 드라이버는 기본 작업에 대한 입력을 제공하는 데 사용됩니다. 실행하려는 작업 유형에 대한 값 중 하나만 전달할 수 있는 집합 유형 필드입니다. 다음은 지원되는 유형입니다.
  + Spark 제출 작업 - Spark 제출을 통해 명령을 실행하는 데 사용됩니다. 이 작업 유형을 사용하여 Spark 제출을 통해 Scala, PySpark, SparkR, SparkSQL 및 기타 지원되는 작업을 실행할 수 있습니다. 이 작업 유형에는 다음과 같은 파라미터가 있습니다.
    + Entrypoint - 실행하려는 기본 jar/py 파일에 대한 Hadoop 호환 파일 시스템(HCFS) 참조입니다.
    + EntryPointArguments - 기본 jar/py 파일에 전달하려는 인수의 배열입니다. entrypoint 코드를 사용하여 이러한 파라미터를 읽는 작업을 처리해야 합니다. 배열의 각 인수는 쉼표로 분리해야 합니다. EntryPointArguments 인수에는 (), \$1\$1 또는 []와 같은 괄호를 포함할 수 없습니다.
    + SparkSubmitParameters - 작업에 전송하려는 추가 Spark 파라미터입니다. 이 파라미터를 사용하여 드라이버 메모리 및 실행기 수와 같은 기본 Spark 속성(예: -conf 또는 -class)을 재정의합니다. 자세한 내용은 [Launching Applications with spark-submit](https://spark.apache.org/docs/latest/submitting-applications.html#launching-applications-with-spark-submit)을 참조하세요.
  + Spark SQL 작업 - Spark SQL을 통해 SQL 쿼리 파일을 실행하는 데 사용됩니다. 이 작업 유형을 사용하여 SparkSQL 작업을 실행할 수 있습니다. 이 작업 유형에는 다음과 같은 파라미터가 있습니다.
    + Entrypoint - 실행하려는 SQL 쿼리 파일에 대한 Hadoop 호환 파일 시스템(HCFS) 참조입니다.

      Spark SQL 작업에 사용할 수 있는 추가 Spark 파라미터 목록은 [StartJobRun API를 통해 Spark SQL 스크립트 실행](emr-eks-jobs-spark-sql-parameters.md) 섹션을 참조하세요.
+ `--configuration-overrides`: 애플리케이션에 대한 구성 객체를 제공하여 애플리케이션의 기본 구성을 재정의할 수 있습니다. 간편 구문을 사용하여 구성을 제공하거나 JSON 파일의 구성 객체를 참조할 수 있습니다. 구성 객체는 분류, 속성 및 선택적 중첩 구성으로 이루어져 있습니다. 속성은 해당 파일에서 재정의하려는 설정으로 구성됩니다. 단일 JSON 객체에서 여러 애플리케이션에 대해 다양한 분류를 지정할 수 있습니다. 사용 가능한 구성 분류는 Amazon EMR 릴리스 버전에 따라 달라집니다. Amazon EMR의 각 릴리스 버전에 사용할 수 있는 구성 분류 목록은 [Amazon EMR on EKS 릴리스](emr-eks-releases.md) 섹션을 참조하세요.

  애플리케이션 재정의 및 Spark 제출 파라미터에서 동일한 구성을 전달하는 경우 Spark 제출 파라미터가 우선합니다. 전체 구성 우선순위 목록은 가장 높은 우선순위부터 가장 낮은 우선순위 순으로 나열됩니다.
  + `SparkSession` 생성 시 제공되는 구성.
  + `—conf`를 사용하는 `sparkSubmitParameters`의 일부로 제공되는 구성.
  + 애플리케이션 재정의의 일부로 제공되는 구성.
  + 해당 릴리스에서 Amazon EMR이 선택하는 최적화된 구성.
  + 애플리케이션의 기본 오픈 소스 구성.

  Amazon CloudWatch 또는 Amazon S3를 사용하여 작업 실행을 모니터링하려면 CloudWatch에 대한 구성 세부 정보를 제공해야 합니다. 자세한 내용은 [Amazon S3 로그를 사용하도록 작업 실행 구성](emr-eks-jobs-s3.md) 및 [Amazon CloudWatch Logs를 사용하도록 작업 실행 구성](emr-eks-jobs-cloudwatch.md) 섹션을 참조하세요. S3 버킷 또는 CloudWatch 로그 그룹이 없는 경우 Amazon EMR은 로그를 버킷에 업로드하기 전에 그룹을 생성합니다.
+ Kubernetes 구성 옵션의 추가 목록은 [Spark Properties on Kubernetes](https://spark.apache.org/docs/latest/running-on-kubernetes.html#configuration)를 참조하세요.

  다음 Spark 구성은 지원되지 않습니다.
  + `spark.kubernetes.authenticate.driver.serviceAccountName`
  + `spark.kubernetes.authenticate.executor.serviceAccountName`
  + `spark.kubernetes.namespace`
  + `spark.kubernetes.driver.pod.name`
  + `spark.kubernetes.container.image.pullPolicy`
  + `spark.kubernetes.container.image`
**참고**  
사용자 지정 도커 이미지에 `spark.kubernetes.container.image`를 사용할 수 있습니다. 자세한 내용은 [Amazon EMR on EKS에 대한 도커 이미지 사용자 지정](docker-custom-images.md) 단원을 참조하십시오.

# Amazon S3 로그를 사용하도록 작업 실행 구성
<a name="emr-eks-jobs-s3"></a>

작업 진행 상황을 모니터링하고 실패 문제를 해결하려면 Amazon S3, Amazon CloudWatch Logs 또는 둘 다로 로그 정보를 전송하도록 작업을 구성해야 합니다. 이 주제는 Amazon EMR on EKS에서 시작된 작업에 Amazon S3에 애플리케이션 로그를 게시하는 작업을 시작하는 데 도움이 됩니다.

**S3 로그 IAM 정책**

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

------
#### [ JSON ]

****  

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

------

**참고**  
Amazon EMR on EKS는 Amazon S3 버킷을 생성할 수도 있습니다. Amazon S3 버킷을 사용할 수 없는 경우 IAM 정책에 `“s3:CreateBucket”` 권한을 포함합니다.

Amazon S3에 로그를 전송할 수 있는 적절한 권한을 실행 역할에 부여한 후 [를 사용하여 작업 실행 관리 AWS CLI](emr-eks-jobs-CLI.md)에서와 같이 `start-job-run` 요청의 `monitoringConfiguration` 섹션에 `s3MonitoringConfiguration`이 전달되면 로그 데이터가 다음 Amazon S3 위치로 전송됩니다.
+ 제출자 로그 - /*logUri*/*virtual-cluster-id*/jobs/*job-id*/containers/*pod-name*/(stderr.gz/stdout.gz)
+ 드라이버 로그 - /*logUri*/*virtual-cluster-id*/jobs/*job-id*/containers/*spark-application-id*/spark-*job-id*-driver/(stderr.gz/stdout.gz)
+ 실행기 로그 - /*logUri*/*virtual-cluster-id*/jobs/*job-id*/containers/*spark-application-id*/*executor-pod-name*/(stderr.gz/stdout.gz)

# Amazon CloudWatch Logs를 사용하도록 작업 실행 구성
<a name="emr-eks-jobs-cloudwatch"></a>

작업 진행 상황을 모니터링하고 실패 문제를 해결하려면 Amazon S3, Amazon CloudWatch Logs 또는 둘 다로 로그 정보를 전송하도록 작업을 구성해야 합니다. 이 주제는 Amazon EMR on EKS에서 시작된 작업에서 CloudWatch Logs를 사용하는 데 도움이 됩니다. CloudWatch Logs에 대한 자세한 정보는 Amazon CloudWatch 사용 설명서의 [로그 파일 모니터링](https://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/WhatIsCloudWatchLogs.html)을 참조하세요.

**CloudWatch Logs IAM 정책**

작업에서 CloudWatch Log로 로그 데이터를 전송하려면 먼저 작업 실행 역할에 대한 권한 정책에 다음 권한이 포함되어야 합니다. *my\$1log\$1group\$1name* 및 *my\$1log\$1stream\$1prefix*를 각각 CloudWatch 로그 그룹 및 로그 스트림 이름으로 바꿉니다. 실행 역할 ARN에 적절한 권한이 있는 한, Amazon EMR on EKS는 로그 그룹과 로그 스트림이 없는 경우 해당 로그 그룹과 로그 스트림을 생성합니다.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "logs:CreateLogStream",
        "logs:DescribeLogGroups",
        "logs:DescribeLogStreams"
      ],
      "Resource": [
        "arn:aws:logs:*:*:*"
      ],
      "Sid": "AllowLOGSCreatelogstream"
    },
    {
      "Effect": "Allow",
      "Action": [
        "logs:PutLogEvents"
      ],
      "Resource": [
        "arn:aws:logs:*:*:log-group:my_log_group_name:log-stream:my_log_stream_prefix/*"
      ],
      "Sid": "AllowLOGSPutlogevents"
    }
  ]
}
```

------

**참고**  
Amazon EMR on EKS는 로그 스트림을 생성할 수도 있습니다. 로그 스트림이 없는 경우 IAM 정책에 `"logs:CreateLogGroup"` 권한이 포함되어야 합니다.

실행 역할에 적절한 권한을 부여한 후 [를 사용하여 작업 실행 관리 AWS CLI](emr-eks-jobs-CLI.md)에서와 같이 애플리케이션은 `start-job-run` 요청의 `monitoringConfiguration` 섹션에 `cloudWatchMonitoringConfiguration`이 전달되면 로그 데이터를 CloudWatch Logs로 보냅니다.

`StartJobRun` API에서 *log\$1group\$1name*은 CloudWatch의 로그 그룹 이름이고 *log\$1stream\$1prefix*는 CloudWatch의 로그 스트림 이름 접두사입니다. AWS Management Console에서 이러한 로그를 보고 검색할 수 있습니다.
+ 제출자 로그 - *logGroup*/*logStreamPrefix*/*virtual-cluster-id*/jobs/*job-id*/containers/*pod-name*/(stderr/stdout)
+ 드라이버 로그 - *logGroup*/*logStreamPrefix*/*virtual-cluster-id*/jobs/*job-id*/containers/*spark-application-id*/spark-*job-id*-driver/(stderrstdout)
+ 실행기 로그 - *logGroup*/*logStreamPrefix*/*virtual-cluster-id*/jobs/*job-id*/containers/*spark-application-id*/*executor-pod-name*/(stderr/stdout)

## 작업 실행 나열
<a name="emr-eks-jobs-list"></a>

다음 예제에서 볼 수 있듯이 `list-job-run`을 실행하여 작업 실행 상태를 표시할 수 있습니다.

```
aws emr-containers list-job-runs --virtual-cluster-id <cluster-id>
```

## 작업 실행 설명
<a name="emr-eks-jobs-describe"></a>

다음 예제에서 볼 수 있듯이 `describe-job-run`을 실행하여 작업 상태, 상태 세부 정보, 작업 이름 등 작업에 대한 추가 세부 정보를 가져올 수 있습니다.

```
aws emr-containers describe-job-run --virtual-cluster-id cluster-id --id job-run-id
```

## 작업 실행 취소
<a name="emr-eks-jobs-cancel"></a>

다음 예제에서 볼 수 있듯이 `cancel-job-run`을 실행하여 실행 중인 작업을 취소할 수 있습니다.

```
aws emr-containers cancel-job-run --virtual-cluster-id cluster-id --id job-run-id
```