노트북을 사용하여 Amazon EMR Spark 인스턴스 제어 - Amazon SageMaker AI

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

노트북을 사용하여 Amazon EMR Spark 인스턴스 제어

중요

Amazon SageMaker Studio 또는 Amazon SageMaker Studio Classic에서 Amazon SageMaker 리소스를 만들도록 허용하는 사용자 지정 IAM 정책은 해당 리소스에 태그를 지정할 수 있는 권한도 부여해야 합니다. Studio와 Studio Classic은 만드는 리소스에 태그를 자동으로 지정하기 때문에 리소스에 태그를 추가할 권한이 필요합니다. IAM 정책이 Studio 및 Studio Classic에서 리소스를 만들도록 허용하지만 태그 지정은 허용하지 않는 경우 리소스 만들기를 시도할 때 'AccessDenied' 오류가 발생할 수 있습니다. 자세한 내용은 SageMaker AI 리소스에 태그를 지정할 수 있는 권한 제공 섹션을 참조하세요.

SageMaker 리소스를 만들 수 있는 권한을 부여하는 AWS Amazon SageMaker AI에 대한 관리형 정책에는 해당 리소스를 만드는 동안 태그를 추가할 수 있는 권한이 이미 포함되어 있습니다.

사용자 지정 수명 주기 구성 스크립트로 생성된 노트북 인스턴스를 사용하여 노트북에서 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/에서 Amazon EMR 콘솔을 엽니다.

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

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

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

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

Sparkmagic을 사용하여 Amazon EMR Spark 인스턴스를 제어하는 노트북을 만들려면
  1. https://console.aws.amazon.com/sagemaker/ Amazon SageMaker AI 콘솔을 엽니다.

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

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

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

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

    # 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"
  6. 스크립트의 PARAMETERS섹션에서 your.emr.master.ip를 Amazon EMR 인스턴스의 마스터 퍼블릭 DNS 이름으로 바꿉니다.

  7. 구성 생성을 선택합니다.

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

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

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

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

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

참고

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

Amazon EMR 인스턴스와 노트북 사이의 연결을 테스트하려면
  1. 노트북의 상태가 InService일 때 Jupyter 열기를 선택하여 노트북을 엽니다.

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

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

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

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