

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

# Amazon EMR on EKS에 대한 Apache Livy를 사용하여 Spark 애플리케이션 실행
<a name="job-runs-apache-livy-run-spark"></a>

Apache Livy로 Spark 애플리케이션을 실행하기 전에 [Amazon EMR on EKS에 대한 Apache Livy 설정](https://docs.aws.amazon.com/emr/latest/EMR-on-EKS-DevelopmentGuide/job-runs-apache-livy-setup.html) 및 [Amazon EMR on EKS에 대한 Apache Livy 시작하기](https://docs.aws.amazon.com/emr/latest/EMR-on-EKS-DevelopmentGuide/job-runs-apache-livy-install.html)의 단계를 완료했는지 확인합니다.

Apache Livy를 사용하여 두 가지 유형의 애플리케이션을 실행할 수 있습니다.
+ 배치 세션 - Spark 배치 작업을 제출하는 Livy 워크로드의 한 유형.
+ 대화형 세션 - Spark 쿼리를 실행할 수 있는 프로그래밍 방식 및 시각적 인터페이스를 제공하는 Livy 워크로드의 한 유형.

**참고**  
서로 다른 세션의 드라이버 및 실행기 포드는 서로 통신할 수 있습니다. 네임스페이스는 포드 간 보안을 보장하지 않습니다. Kubernetes는 지정된 네임스페이스 내 포드 하위 세트에 대한 선택적 권한을 허용하지 않습니다.

## 배치 세션 실행
<a name="job-runs-apache-livy-run-spark-batch"></a>

배치 작업을 제출하려면 다음 명령을 사용합니다.

```
curl -s -k -H 'Content-Type: application/json' -X POST \
      -d '{
            "name": "my-session",
            "file": "entryPoint_location (S3 or local)",
            "args": ["argument1", "argument2", ...],
            "conf": {
                "spark.kubernetes.namespace": "<spark-namespace>",
                "spark.kubernetes.container.image": "public.ecr.aws/emr-on-eks/spark/emr-7.12.0:latest",
                "spark.kubernetes.authenticate.driver.serviceAccountName": "<spark-service-account>"
            }
          }' <livy-endpoint>/batches
```

배치 작업을 모니터링하려면 다음 명령을 사용합니다.

```
curl -s -k -H 'Content-Type: application/json' -X GET <livy-endpoint>/batches/my-session
```

## 대화형 세션 구성
<a name="job-runs-apache-livy-run-spark-interactive"></a>

Apache Livy를 사용하여 대화형 세션을 실행하려면 다음 단계를 참조하세요.

1. 자체 호스팅 또는 SageMaker AI Jupyter Notebook과 같은 관리형 Jupyter Notebook에 액세스할 수 있는지 확인합니다. Jupyter Notebook에 [sparkmagic](https://github.com/jupyter-incubator/sparkmagic/blob/master/README.md)이 설치되어 있어야 합니다.

1. Spark 구성 `spark.kubernetes.file.upload.path`에 대한 버킷을 생성합니다. Spark 서비스 계정이 버킷에 대한 읽기 및 쓰기 액세스 권한을 보유하는지 확인합니다. Spark 서비스 계정을 구성하는 방법에 대한 자세한 내용은 서비스 계정에 대한 IAM 역할(IRSA)을 사용하여 액세스 권한 설정을 참조하세요.

1. `%load_ext sparkmagic.magics` 명령을 사용하여 Jupyter Notebook에 sparkmagic을 로드합니다.

1. `%manage_spark` 명령을 실행하여 Jupyter Notebook으로 Livy 엔드포인트를 설정합니다. **엔드포인트 추가** 탭을 선택하고 구성된 인증 유형을 선택하며 노트북에 Livy 엔드포인트를 추가한 다음, **엔드포인트 추가**를 선택합니다.

1. 다시 `%manage_spark`를 실행하여 Spark 컨텍스트를 생성한 다음, **세션 생성**으로 이동합니다. Livy 엔드포인트를 선택하고 고유한 세션 이름을 지정하며 언어를 선택한 후 다음 속성을 추가합니다.

   ```
   {
     "conf": {
       "spark.kubernetes.namespace": "livy-namespace",
       "spark.kubernetes.container.image": "public.ecr.aws/emr-on-eks/spark/emr-7.12.0:latest",
       "spark.kubernetes.authenticate.driver.serviceAccountName": "<spark-service-account>", 
       "spark.kubernetes.file.upload.path": "<URI_TO_S3_LOCATION_>"
     }
   }
   ```

1. 애플리케이션을 제출하고 Spark 컨텍스트가 생성될 때까지 기다립니다.

1. 대화형 세션의 상태를 모니터링하려면 다음 명령을 실행합니다.

   ```
   curl -s -k -H 'Content-Type: application/json' -X GET livy-endpoint/sessions/my-interactive-session
   ```

## Spark 애플리케이션 모니터링
<a name="job-runs-apache-livy-run-ui"></a>

Livy UI를 사용하여 Spark 애플리케이션의 진행 상황을 모니터링하려면 `http://<livy-endpoint>/ui` 링크를 사용합니다.