

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

# 노트북을 사용하여 Amazon EMR Spark 인스턴스 제어
<a name="nbi-lifecycle-config-emr"></a>

**중요**  
Amazon SageMaker Studio 또는 Amazon SageMaker Studio Classic에서 Amazon SageMaker 리소스를 만들도록 허용하는 사용자 지정 IAM 정책은 해당 리소스에 태그를 지정할 수 있는 권한도 부여해야 합니다. Studio와 Studio Classic은 만드는 리소스에 태그를 자동으로 지정하기 때문에 리소스에 태그를 추가할 권한이 필요합니다. IAM 정책이 Studio 및 Studio Classic에서 리소스를 만들도록 허용하지만 태그 지정은 허용하지 않는 경우 리소스 만들기를 시도할 때 'AccessDenied' 오류가 발생할 수 있습니다. 자세한 내용은 [SageMaker AI 리소스 태그 지정을 위한 권한 제공](security_iam_id-based-policy-examples.md#grant-tagging-permissions) 섹션을 참조하세요.  
SageMaker 리소스를 만들 수 있는 권한을 부여하는 [AWS Amazon SageMaker AI에 대한 관리형 정책](security-iam-awsmanpol.md)에는 해당 리소스를 만드는 동안 태그를 추가할 수 있는 권한이 이미 포함되어 있습니다.

사용자 지정 수명 주기 구성 스크립트로 생성된 노트북 인스턴스를 사용하여 노트북에서 AWS 서비스에 액세스할 수 있습니다. 예를 들어, Sparkmagic이 있는 노트북을 사용하여 Amazon EMR 인스턴스와 같은 다른 AWS 리소스를 제어할 수 있는 스크립트를 생성할 수 있습니다. 그런 다음 노트북에서 데이터 분석을 실행하는 대신 Amazon EMR 인스턴스를 사용하여 데이터를 처리할 수 있습니다. 이렇게 하면 인스턴스를 사용하여 데이터를 처리하지 않기 때문에 더 작은 노트북 인스턴스를 만들 수 있습니다. 이 기능은 데이터를 처리하기 위해 대규모 노트북 인스턴스가 필요한 대용량 데이터 집합이 있는 경우에 유용합니다.

이 프로세스에는 Amazon SageMaker AI 콘솔을 사용하는 다음 세 가지 절차가 필요합니다.
+ Amazon EMR Spark 인스턴스 생성
+ Jupyter notebook 생성
+ 노트북과 Amazon EMR 연결 테스트

**Sparkmagic을 사용하여 노트북에서 제어할 수 있는 Amazon EMR Spark 인스턴스를 만들려면**

1. [https://console.aws.amazon.com/elasticmapreduce/](https://console.aws.amazon.com/elasticmapreduce/)에서 Amazon EMR 콘솔을 엽니다.

1. 탐색 창에서 **클러스터 생성**을 선택합니다.

1. **클러스터 생성 - 빠른 옵션** 페이지의 **소프트웨어 구성**에서 **Spark: Spark 2.4.4 on Hadoop 2.8.5 YARN with Ganglia 3.7.2 and Zeppelin 0.8.2**을 선택합니다.

1. 이 페이지에서 추가 파라미터를 설정한 다음 **클러스터 생성**을 선택합니다.

1. **클러스터** 페이지에서, 생성한 클러스터 이름을 선택합니다. **마스터 퍼블릭 DNS**, **EMR 마스터의 보안 그룹**, EMR 클러스터가 생성된 VPC 이름과 서브넷 ID를 메모합니다. 노트북을 만들 때 이러한 값을 사용합니다.

**Sparkmagic을 사용하여 Amazon EMR Spark 인스턴스를 제어하는 노트북을 만들려면**

1. [https://console.aws.amazon.com/sagemaker/](https://console.aws.amazon.com/sagemaker/)에서 Amazon SageMaker AI 콘솔을 엽니다.

1. 탐색 창의 **노트북 인스턴스**에서 **노트북 생성**을 선택합니다.

1. 노트북 인스턴스 이름을 입력하고 인스턴스 유형을 선택합니다.

1. **추가 구성**을 선택한 다음 **수명 주기 구성**에서 **새 수명 주기 구성 만들기**를 선택합니다.

1. 수명 주기 구성 스크립트에 다음 코드를 추가합니다.

   ```
   # OVERVIEW
   # This script connects an Amazon EMR cluster to an Amazon SageMaker notebook instance that uses Sparkmagic.
   #
   # Note that this script will fail if the Amazon EMR cluster's master node IP address is not reachable.
   #   1. Ensure that the EMR master node IP is resolvable from the notebook instance.
   #      One way to accomplish this is to have the notebook instance and the Amazon EMR cluster in the same subnet.
   #   2. Ensure the EMR master node security group provides inbound access from the notebook instance security group.
   #       Type        - Protocol - Port - Source
   #       Custom TCP  - TCP      - 8998 - $NOTEBOOK_SECURITY_GROUP
   #   3. Ensure the notebook instance has internet connectivity to fetch the SparkMagic example config.
   #
   # https://aws.amazon.com/blogs/machine-learning/build-amazon-sagemaker-notebooks-backed-by-spark-in-amazon-emr/
   
   # PARAMETERS
   EMR_MASTER_IP=your.emr.master.ip
   
   
   cd /home/ec2-user/.sparkmagic
   
   echo "Fetching Sparkmagic example config from GitHub..."
   wget https://raw.githubusercontent.com/jupyter-incubator/sparkmagic/master/sparkmagic/example_config.json
   
   echo "Replacing EMR master node IP in Sparkmagic config..."
   sed -i -- "s/localhost/$EMR_MASTER_IP/g" example_config.json
   mv example_config.json config.json
   
   echo "Sending a sample request to Livy.."
   curl "$EMR_MASTER_IP:8998/sessions"
   ```

1. 스크립트의 `PARAMETERS`섹션에서 `your.emr.master.ip`를 Amazon EMR 인스턴스의 마스터 퍼블릭 DNS 이름으로 바꿉니다.

1. **구성 생성**을 선택합니다.

1. **노트북 생성** 페이지에서 **네트워크 - 선택사항**을 선택합니다.

1. Amazon EMR 인스턴스가 있는 VPC 및 서브넷을 선택합니다.

1. Amazon EMR 마스터 노드에서 사용하는 보안 그룹을 선택합니다.

1. **노트북 인스턴스 생성**을 선택합니다.

노트북 인스턴스를 만드는 동안의 상태는 **보류 중**입니다. 인스턴스가 생성되고 수명 주기 구성 스크립트가 성공적으로 실행되면 상태는 **InService**가 됩니다.

**참고**  
노트북 인스턴스가 Amazon EMR 인스턴스에 연결되지 않는 경우에는 SageMaker AI가 노트북 인스턴스를 만들 수 없습니다. Amazon EMR 인스턴스와 노트북이 동일한 VPC 및 서브넷에 있지 않거나, 노트북에서 Amazon EMR 마스터 보안 그룹을 사용하지 않거나, 스크립트의 마스터 퍼블릭 DNS 이름이 올바르지 않은 경우 연결에 실패할 수 있습니다.

**Amazon EMR 인스턴스와 노트북 사이의 연결을 테스트하려면**

1.  노트북의 상태가 **InService**일 때 **Jupyter 열기**를 선택하여 노트북을 엽니다.

1. **새로 만들기**를 선택한 다음 **Sparkmagic (PySpark)**을 선택합니다.

1. 코드 셀에서 **%%info**을 입력한 다음 셀을 실행합니다.

   다음과 같이 유사하게 출력됩니다.

   ```
   Current session configs: {'driverMemory': '1000M', 'executorCores': 2, 'kind': 'pyspark'}
                       No active sessions.
   ```