기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
magic 명령으로 커널 개선
개요
EMR스튜디오와 EMR 노트북은 명령을 지원합니다magic. Magic명령 또는 magics는 데이터를 실행하고 분석하는 데 도움이 되도록 IPython 커널에서 제공하는 향상된 기능입니다. IPythonPython으로 구축된 대화형 셸 환경입니다.
Amazon은 EMR 또한 Spark 관련 커널 (, PySpark SparkR 및 Scala 커널) 에 특정 magic 명령을 제공하고 클러스터의 Livy를 사용하여 Spark 작업을 제출하는 패키지를 지원합니다Sparkmagic.
EMR노트북에 Python 커널이 있으면 magic 명령을 사용할 수 있습니다. 마찬가지로 모든 Spark 관련 커널은 Sparkmagic 명령을 지원합니다.
magic이라고도 하는 Magic 명령에는 두 가지 종류가 있습니다.
-
줄 magic - 이 magic 명령은 단일
%
접두사로 표시되며 한 줄의 코드에서 작동함 -
셀 magic - 이 magic 명령은 이중
%%
접두사로 표시되며 여러 줄의 코드에서 작동함
사용 가능한 모든 magic에 대한 자세한 내용은 magic 및 Sparkmagic 명령 나열 섹션을 참조하세요.
고려 사항 및 제한
-
EMR서버리스는 실행을
spark-submit
지원하지%%sh
않습니다. EMRmagic노트북은 지원하지 않습니다. -
EMREKS클러스터의 Amazon은 EMR Studio용 Sparkmagic 명령을 지원하지 않습니다. 이는 관리형 엔드포인트와 함께 사용하는 Spark 커널이 Kubernetes에 내장되어 있으며, Sparkmagic 및 Livy에서는 지원되지 않기 때문입니다. 다음 예제에서 볼 수 있듯이 Spark 구성을 SparkContext 객체에 직접 설정하여 해결 방법으로 사용할 수 있습니다.
spark.conf.set("spark.driver.maxResultSize", '6g')
-
다음과 같은 magic 명령 및 동작은 금지됩니다. AWS
-
%alias
-
%alias_magic
-
%automagic
-
%macro
-
%configure
를proxy_user
수정 -
%env
또는%set_env
를KERNEL_USERNAME
수정
-
magic 및 Sparkmagic 명령 나열
사용 가능한 magic 명령 목록을 보려면 다음 명령을 사용합니다.
-
%lsmagic
은 현재 사용 가능한 모든 magic 함수를 나열합니다. -
%%help
는 Sparkmagic 패키지에서 제공하는 현재 사용 가능한 Spark 관련 magic 함수를 나열합니다.
%%configure
를 사용하여 Spark 구성
가장 유용한 Sparkmagic 명령 중 하나는 세션 생성 파라미터를 구성하는 %%configure
명령입니다. conf
설정을 사용하여 Apache Spark 구성 설명서
예 Maven 리포지토리 또는 Amazon S3에서 EMR 노트북에 외부 JAR 파일 추가
다음 접근 방식을 사용하여 에서 지원하는 모든 Spark 관련 커널에 외부 JAR 파일 종속성을 추가할 수 있습니다. Sparkmagic
%%configure -f {"conf": { "spark.jars.packages": "com.jsuereth:scala-arm_2.11:2.0,ml.combust.bundle:bundle-ml_2.11:0.13.0,com.databricks:dbutils-api_2.11:0.0.3", "spark.jars": "s3://
DOC-EXAMPLE-BUCKET
/my-jar.jar" } }
예 : Hudi 구성
노트북 편집기를 사용하여 노트북이 Hudi를 사용하도록 구성할 수 있습니다EMR.
%%configure { "conf": { "spark.jars": "hdfs://apps/hudi/lib/hudi-spark-bundle.jar,hdfs:///apps/hudi/lib/spark-spark-avro.jar", "spark.serializer": "org.apache.spark.serializer.KryoSerializer", "spark.sql.hive.convertMetastoreParquet":"false" } }
%%sh
를 사용하여 spark-submit
실행
%%sh
magic는 연결된 클러스터 인스턴스의 하위 프로세스에서 쉘 명령을 실행합니다. 일반적으로 Spark 관련 커널 중 하나를 사용하여 연결된 클러스터에서 Spark 애플리케이션을 실행합니다. 하지만 Python 커널을 사용하여 Spark 애플리케이션을 제출하려는 경우 다음 magic을 사용할 수 있습니다. 이때 버킷 이름을 소문자로 바꾼 버킷 이름으로 바꿉니다.
%%sh spark-submit --master yarn --deploy-mode cluster s3://
DOC-EXAMPLE-BUCKET
/test.py
이 예제에서는 클러스터가 s3://
의 위치에 액세스할 수 있어야 합니다. 그렇지 않으면 명령이 실패합니다.DOC-EXAMPLE-BUCKET
/test.py
%%sh
magic과 함께 Linux 명령을 사용할 수 있습니다. Spark 또는 YARN 명령을 실행하려면 다음 옵션 중 하나를 사용하여 emr-notebook
Hadoop 사용자를 생성하고 사용자에게 명령을 실행할 권한을 부여하십시오.
-
다음 명령을 실행하여 새 사용자를 명시적으로 생성할 수 있습니다.
hadoop fs -mkdir /user/emr-notebook hadoop fs -chown emr-notebook /user/emr-notebook
-
Livy에서 사용자 위장 기능을 켜면 자동으로 사용자가 생성됩니다. 자세한 내용은 사용자 위장을 활성화하여 Spark 사용자 및 작업 활동 모니터링 섹션을 참조하세요.
%%display
를 사용하여 Spark DataFrame 시각화
%%display
magic을 사용하여 Spark DataFrame을 시각화할 수 있습니다. 이 magic을 사용하려면 다음 명령을 실행합니다.
%%display df
다음 이미지와 같이 결과를 테이블 형식으로 보도록 선택합니다.
![결과를 테이블 형식으로 표시하는 %%display magic 사용 출력.](images/magic-display-table.png)
다섯 가지 유형의 차트로 데이터를 시각화하도록 선택할 수도 있습니다. 옵션으로, 파이, 산점도, 선형, 영역 및 막대 차트가 있습니다.
![결과를 차트 형식으로 표시하는 %%display magic 사용 출력.](images/magic-display-chart.png)
노트북 s 사용 EMR magic
EMRAmazon은 Python3 및 magic Spark 기반 커널과 함께 사용할 수 있는 다음과 같은 EMR 노트북을 제공합니다.
-
%mount_workspace_dir
- Workspace의 다른 파일에서 코드를 가져오고 실행할 수 있도록 Workspace 디렉터리를 클러스터에 마운트참고
%mount_workspace_dir
을 사용하면 Python 3 커널만 로컬 파일 시스템에 액세스할 수 있습니다. Spark 실행기는 이 커널로 마운트된 디렉터리에 액세스할 수 없습니다. -
%umount_workspace_dir
- 클러스터에서 Workspace 디렉토리를 마운트 해제합니다. -
%generate_s3_download_url
- 노트북 출력에 Amazon S3 객체의 임시 다운로드 링크 생성
사전 조건
EMRmagic노트북을 설치하기 전에 다음 작업을 완료하십시오.
-
클러스터 EC2 인스턴스의 서비스 역할 (EC2인스턴스 프로필)에 Amazon S3에 대한 읽기 액세스 권한이 있는지 확인합니다.
AmazonElasticMapReduceforEC2Role
관리형 정책을 포함하는EMR_EC2_DefaultRole
은 이 요구 사항을 충족합니다. 사용자 지정 역할 또는 정책을 사용하는 경우 필요한 S3 권한이 있는지 확인합니다.참고
EMRmagic노트북은 클러스터에서 노트북 사용자로 실행되며 EC2 인스턴스 프로필을 사용하여 Amazon S3와 상호 작용합니다. 클러스터에 Workspace 디렉터리를 마운트하면 해당 EMR 클러스터에 연결할 권한이 있는 모든 작업 공간과 EMR 노트북이 마운트된 디렉터리에 액세스할 수 있습니다.
디렉터리는 기본적으로 읽기 전용으로 마운트됩니다.
s3fs-fuse
및goofys
에서 읽기-쓰기 마운트를 허용하는 동안에는 디렉터리를 읽기-쓰기 모드로 마운트하도록 마운트 파라미터를 수정하지 않는 것이 좋습니다. 쓰기 액세스를 허용하면 디렉터리에 대한 모든 변경 사항이 S3 버킷에 기록됩니다. 실수로 삭제하거나 덮어쓰는 것을 방지하기 위해 S3 버킷의 버전 관리를 활성화할 수 있습니다. 자세한 내용은 S3 버킷에서 버전 관리 사용을 참조하세요. -
클러스터에서 다음 스크립트 중 하나를 실행하여 Notebooks의 종속 항목을 설치합니다. EMR magic 스크립트를 실행하려면 이미 실행 중인 클러스터가 있는 경우 Amazon EMR 클러스터에서 명령 및 스크립트 실행의 지침을 따를 수 있습니다. 사용자 지정 부트스트랩 작업 사용
설치할 종속 항목을 선택할 수 있습니다. s3fs-fuse와 goofys
모두 Amazon S3 버킷을 클러스터의 로컬 파일 시스템으로 마운트할 수 있는 FUSE (사용자 공간의 파일 시스템) 도구입니다. 이 도구는 다음과 비슷한 경험을 s3fs
제공합니다. POSIX POSIX호환 파일 시스템보다 성능을 선호하는 경우 이goofys
도구를 선택하는 것이 좋습니다.Amazon EMR 7.x 시리즈는 EPEL 리포지토리를 지원하지 않는 아마존 리눅스 2023을 사용합니다. Amazon EMR 7.x를 사용하는 경우 GitHubs3fs-fuse
지침에 따라 설치하십시오. s3fs-fuse
5.x 또는 6.x 시리즈를 사용하는 경우 다음 명령을 사용하여 설치하십시오.s3fs-fuse
#!/bin/sh # Install the s3fs dependency for EMR Notebooks magics sudo amazon-linux-extras install epel -y sudo yum install s3fs-fuse -y
또는
#!/bin/sh # Install the goofys dependency for EMR Notebooks magics sudo wget https://github.com/kahing/goofys/releases/latest/download/goofys -P /usr/bin/ sudo chmod ugo+x /usr/bin/goofys
노트북 s 설치 EMR magic
참고
아마존 EMR 릴리스 6.0~6.9.0, 5.0~5.36.0에서는 패키지 버전 0.2.0 이상만 emr-notebooks-magics
지원됩니다. %mount_workspace_dir
magic
노트북 s를 설치하려면 다음 단계를 완료하십시오. EMR magic
-
노트북에서 다음 명령을 실행하여
emr-notebooks-magics
패키지를 설치합니다. %pip install boto3 --upgrade %pip install botocore --upgrade %pip install emr-notebooks-magics --upgrade
-
커널을 다시 시작하여 EMR 노트북 magic s를 로드하십시오.
-
다음 명령을 사용하여 설치를 확인합니다. 그러면
%mount_workspace_dir
에 대한 출력 도움말 텍스트가 표시됩니다.%mount_workspace_dir?
%mount_workspace_dir
을 사용하여 Workspace 디렉토리 마운트
%mount_workspace_dir
magic를 사용하면 Workspace 디렉터리를 EMR 클러스터에 마운트하여 디렉터리에 저장된 다른 파일, 모듈 또는 패키지를 가져와서 실행할 수 있습니다.
다음 예제에서는 전체 Workspace 디렉터리를 클러스터에 마운트하고 선택 사항을 지정합니다.
디렉토리를 마운트할 때 goofys를 사용하는 인수입니다.<--fuse-type>
%mount_workspace_dir .
<--fuse-type goofys>
Workspace 디렉터리가 마운트되었는지 확인하려면 다음 예제를 사용하여 ls
명령으로 현재 작업 디렉터리를 표시합니다. 출력에는 Workspace에 있는 모든 파일이 표시됩니다.
%%sh ls
Workspace에서 변경을 완료하면 다음 명령을 사용하여 Workspace 디렉터리를 마운트 해제할 수 있습니다.
참고
Workspace가 중지되거나 분리된 경우에도 Workspace 디렉터리는 클러스터에 마운트된 상태로 유지됩니다. Workspace 디렉터리를 명시적으로 마운트 해제해야 합니다.
%umount_workspace_dir
%generate_s3_download_url
을 사용하여 Amazon S3 객체 다운로드
이 generate_s3_download_url
명령은 Amazon S3에 저장된 객체에 URL 대해 미리 서명된 객체를 생성합니다. 미리 서명된 URL 객체를 사용하여 로컬 시스템에 객체를 다운로드할 수 있습니다. 예를 들어 코드를 generate_s3_download_url
실행하여 Amazon S3에 작성한 SQL 쿼리의 결과를 다운로드할 수 있습니다.
미리 서명된 URL 항목은 기본적으로 60분 동안 유효합니다. --expires-in
플래그에 시간(초)을 지정하여 만료 시간을 변경할 수 있습니다. 예를 들어, URL 는 30분 동안 유효한 계정을 --expires-in 1800
생성합니다.
다음 예제는 전체 Amazon S3 경로(
)를 지정하여 객체에 대한 다운로드 링크를 생성합니다.s3://EXAMPLE-DOC-BUCKET/path/to/my/object
%generate_s3_download_url
s3://EXAMPLE-DOC-BUCKET/path/to/my/object
generate_s3_download_url
사용에 대해 자세히 알아보려면 다음 명령을 실행하여 도움말 텍스트를 표시합니다.
%generate_s3_download_url?
%execute_notebook
을 사용하여 헤드리스 모드에서 노트북 실행
%execute_notebook
magic을 사용하면 헤드리스 모드에서 다른 노트북을 실행하고 실행한 각 셀의 출력을 볼 수 있습니다. 이를 magic 위해서는 EMR Amazon과 Amazon이 EC2 공유하는 인스턴스 역할에 대한 추가 권한이 필요합니다. 추가 권한을 부여하는 방법에 대한 자세한 내용을 보려면 %execute_notebook?
명령을 실행합니다.
장기 실행 작업에서는 미활동으로 인해 시스템이 절전 모드로 전환되거나 인터넷 연결이 일시적으로 끊길 수 있습니다. 이로 인해 브라우저와 Jupyter Server 간 연결이 끊어질 수 있습니다. 이 경우 Jupyter 서버에서 실행하고 전송한 셀의 출력이 손실될 수 있습니다.
를 사용하여 %execute_notebook
magic 헤드리스 모드에서 노트북을 실행하면 로컬 네트워크에 장애가 발생하더라도 EMR Notebooks는 실행된 셀의 출력을 캡처합니다. EMR노트북은 실행한 노트북과 이름이 같은 새 노트북에 출력을 점진적으로 저장합니다. EMR그러면 Notebooks는 노트북을 작업 공간 내의 새 폴더에 배치합니다. 헤드리스 실행은 동일한 클러스터에서 수행되고 서비스 역할 EMR_Notebook_DefaultRole
을 사용하지만 추가 인수를 통해 기본값을 변경할 수 있습니다.
헤드리스 모드에서 노트북을 실행하려면 다음 명령을 사용합니다.
%execute_notebook
<relative-file-path>
헤드리스 실행에 대한 클러스터 ID 및 서비스 역할을 지정하려면 다음 명령을 사용합니다.
%execute_notebook
<notebook_name>
.ipynb --cluster-id <emr-cluster-id> --service-role <emr-notebook-service-role>
EMRAmazon과 Amazon이 인스턴스 역할을 EC2 공유하는 경우 역할에 다음과 같은 추가 권한이 필요합니다.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "elasticmapreduce:StartNotebookExecution", "elasticmapreduce:DescribeNotebookExecution", "ec2:DescribeInstances" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "iam:PassRole" ], "Resource": "arn:aws:iam::<AccoundId>:role/EMR_Notebooks_DefaultRole" } ] }
참고
%execute_notebook
magic을 사용하려면 emr-notebooks-magics
패키지 버전 0.2.3 이상을 설치합니다.