커널과 라이브러리 설치 및 사용 - 아마존 EMR

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

커널과 라이브러리 설치 및 사용

참고

EMR노트북은 콘솔에서 EMR Studio Workspace로 사용할 수 있습니다. 콘솔의 워크스페이스 만들기 버튼을 사용하여 새 노트북을 만들 수 있습니다. 워크스페이스에 액세스하거나 워크스페이스를 만들려면 EMR Notebooks 사용자에게 추가 IAM 역할 권한이 필요합니다. 자세한 내용은 Amazon EMR 노트북은 콘솔 및 Amazon 콘솔의 Amazon EMR 스튜디오 워크스페이스임을 참조하십시오. EMR

각 EMR 노트북에는 사전 설치된 라이브러리 및 커널 세트가 함께 제공됩니다. 클러스터가 커널과 라이브러리가 있는 저장소에 액세스할 수 있는 경우 EMR 클러스터에 추가 라이브러리와 커널을 설치할 수 있습니다. 예를 들어 프라이빗 서브넷에 있는 클러스터의 경우 네트워크 주소 변환 (NAT) 을 구성하고 클러스터가 퍼블릭 PyPI 리포지토리에 액세스하여 라이브러리를 설치할 수 있는 경로를 제공해야 할 수 있습니다. 다양한 네트워크 구성을 위한 외부 액세스 구성에 대한 자세한 내용은 Amazon VPC User Guide의 시나리오 및 예제를 참조하십시오.

EMR서버리스 애플리케이션은 다음과 같은 Python용 사전 설치된 라이브러리와 함께 제공됩니다. PySpark

  • Python 라이브러리 – ggplot, matplotlib, numpy, pandas, plotly, bokeh, scikit-learn, scipy, scipy

  • PySpark 라이브러리 —ggplot,matplotlib,,numpy,pandas,plotly,bokeh, scikit-learn scipy scipy

클러스터 프라이머리 노드에 커널 및 Python 라이브러리 설치

Amazon EMR 릴리스 버전 5.30.0 이상 (6.0.0은 제외) 에서는 클러스터의 기본 노드에 Python 라이브러리와 커널을 추가로 설치할 수 있습니다. 설치 후에는 클러스터에 연결된 노트북을 실행하는 모든 사용자가 이러한 커널과 라이브러리를 사용할 수 있습니다. EMR 이 방법으로 설치한 Python 라이브러리는 프라이머리 노드에서 실행되는 프로세스에서만 사용할 수 있습니다. 이 라이브러리는 코어 또는 작업 노드에 설치되지 않으며 해당 노드에서 실행되는 실행기에서 사용할 수 없습니다.

참고

Amazon EMR 버전 5.30.1, 5.31.0 및 6.1.0의 경우 클러스터의 기본 노드에 커널과 라이브러리를 설치하려면 추가 단계를 수행해야 합니다.

이 기능을 활성화하려면 다음을 수행합니다.

  1. Notebook의 서비스 역할에 연결된 권한 정책이 다음 작업을 허용하는지 확인하십시오. EMR

    elasticmapreduce:ListSteps

    자세한 내용은 EMR노트북의 서비스 역할을 참조하십시오.

  2. AWS CLI 를 사용하여 클러스터에서 다음 예와 같이 EMR Notebook을 설정하는 단계를 실행합니다. EMRNotebooksSetup 단계 이름을 사용해야 합니다. Replace us-east-1 클러스터가 위치한 지역과 함께 자세한 내용은 AWS CLI를 사용하여 클러스터에 단계 추가를 참조하세요.

    aws emr add-steps --cluster-id MyClusterID --steps Type=CUSTOM_JAR,Name=EMRNotebooksSetup,ActionOnFailure=CONTINUE,Jar=s3://us-east-1.elasticmapreduce/libs/script-runner/script-runner.jar,Args=["s3://awssupportdatasvcs.com/bootstrap-actions/EMRNotebooksSetup/emr-notebooks-setup.sh"]

프라이머리 노드의 /emr/notebook-env/bin 디렉터리에 pip 또는 conda를 사용하여 커널과 라이브러리를 설치할 수 있습니다.

예 - Python 라이브러리 설치

Python3 커널의 경우 노트북 셀 내에서 %pip 매직을 명령으로 실행하여 Python 라이브러리를 설치합니다.

%pip install pmdarima

업데이트된 패키지를 사용하려면 커널을 다시 시작해야 할 수 있습니다. %%sh Spark 매직을 사용하여 pip를 간접 호출할 수도 있습니다.

%%sh /emr/notebook-env/bin/pip install -U matplotlib /emr/notebook-env/bin/pip install -U pmdarima

PySpark 커널을 사용하는 경우 pip 명령을 사용하여 클러스터에 라이브러리를 설치하거나 노트북 내에서 노트북 범위의 라이브러리를 사용할 수 있습니다. PySpark

터미널에서 클러스터에서 pip 명령을 실행하려면 먼저 다음 명령에서 볼 수 있듯이 를 사용하여 SSH 기본 노드에 연결합니다.

sudo pip3 install -U matplotlib sudo pip3 install -U pmdarima

또는 노트북 범위 라이브러리를 사용할 수 있습니다. 노트북 범위 라이브러리의 경우 라이브러리 설치는 세션 범위로 제한되며 모든 Spark 실행기에서 실행됩니다. 자세한 내용은 노트북 범위 라이브러리 사용을 참조하세요.

PySpark 커널 내에 여러 Python 라이브러리를 패키징하려는 경우 격리된 Python 가상 환경을 만들 수도 있습니다. 예제는 Using Virtualenv를 참조하세요.

세션에서 Python 가상 환경을 생성하려면 다음 예제와 같이 노트북의 첫 번째 셀에 있는 %%configure 매직 명령의 Spark 속성 spark.yarn.dist.archives를 사용합니다.

%%configure -f { "conf": { "spark.yarn.appMasterEnv.PYSPARK_PYTHON":"./environment/bin/python", "spark.yarn.appMasterEnv.PYSPARK_DRIVER_PYTHON":"./environment/bin/python", "spark.yarn.dist.archives":"s3://DOC-EXAMPLE-BUCKET/prefix/my_pyspark_venv.tar.gz#environment", "spark.submit.deployMode":"cluster" } }

마찬가지로 Spark 실행기 환경을 생성할 수 있습니다.

%%configure -f { "conf": { "spark.yarn.appMasterEnv.PYSPARK_PYTHON":"./environment/bin/python", "spark.yarn.appMasterEnv.PYSPARK_DRIVER_PYTHON":"./environment/bin/python", "spark.executorEnv.PYSPARK_PYTHON":"./environment/bin/python", "spark.yarn.dist.archives":"s3://DOC-EXAMPLE-BUCKET/prefix/my_pyspark_venv.tar.gz#environment", "spark.submit.deployMode":"cluster" } }

conda를 사용하여 Python 라이브러리를 설치할 수도 있습니다. sudo 액세스 권한이 없어도 conda를 사용할 수 있습니다. 를 사용하여 기본 노드에 연결한 다음 conda 터미널에서 실행해야 합니다. SSH 자세한 내용은 를 사용하여 기본 노드에 연결 SSH 단원을 참조하십시오.

예 - 커널 설치

다음 예제에서는 클러스터의 프라이머리 노드에 연결된 상태에서 터미널 명령을 사용하여 Kotlin 커널을 설치하는 방법을 보여줍니다.

sudo /emr/notebook-env/bin/conda install kotlin-jupyter-kernel -c jetbrains
참고

이 지침에서는 커널 종속 항목을 설치하지 않습니다. 커널에 타사 종속 항목이 있는 경우 노트북에서 커널을 사용하려면 먼저 추가 설정 단계를 수행해야 할 수 있습니다.

노트북 범위 라이브러리의 고려 사항 및 제한 사항

노트북 범위의 라이브러리를 사용할 때는 다음을 고려합니다.

  • 노트북 범위 라이브러리는 Amazon EMR 릴리스 5.26.0 이상으로 생성한 클러스터에 사용할 수 있습니다.

  • 노트북 범위 라이브러리는 커널에서만 사용하도록 설계되었습니다. PySpark

  • 모든 사용자는 노트북 셀 내에서 노트북 범위의 라이브러리를 추가로 설치할 수 있습니다. 이러한 라이브러리는 단일 노트북 세션 중에 해당 노트북 사용자만 사용할 수 있습니다. 다른 사용자가 동일한 라이브러리를 필요로 하거나 동일한 사용자가 다른 세션에서 동일한 라이브러리를 필요로 하는 경우 라이브러리를 다시 설치해야 합니다.

  • 와 함께 설치된 라이브러리만 제거할 수 있습니다. install_pypi_package API 클러스터에 사전 설치된 라이브러리는 제거할 수 없습니다.

  • 다른 버전의 동일한 라이브러리가 클러스터 및 노트북 범위의 라이브러리로 설치된 경우 노트북 범위 라이브러리 버전이 클러스터 라이브러리 버전을 재정의합니다.

노트북 범위의 라이브러리 작업

라이브러리를 설치하려면 Amazon EMR 클러스터가 라이브러리가 위치한 PyPI 리포지토리에 액세스할 수 있어야 합니다.

다음 예제는 PySpark 커널 및 를 사용하여 노트북 셀 내에서 라이브러리를 나열, 설치 및 제거하는 간단한 명령을 보여줍니다. APIs 추가 예제는 AWS 빅데이터 블로그의 EMRNotebooks를 사용하여 실행 중인 클러스터에 Python 라이브러리 설치 게시물을 참조하십시오.

예 - 현재 라이브러리 나열

다음 명령은 현재 Spark 노트북 세션에 사용 가능한 Python 패키지를 나열합니다. 클러스터 및 노트북 범위의 라이브러리에 설치된 라이브러리가 나열됩니다.

sc.list_packages()
예 - Celery 라이브러리 설치

다음 명령은 Celery 라이브러리를 노트북 범위의 라이브러리로 설치합니다.

sc.install_pypi_package("celery")

라이브러리를 설치한 후, 다음 명령은 라이브러리가 Spark 드라이버 및 실행기에서 사용 가능한지 확인합니다.

import celery sc.range(1,10000,1,100).map(lambda x: celery.__version__).collect()
예 - Arrow 라이브러리 설치, 버전 및 리포지토리 지정

다음 명령은 라이브러리 버전 및 리포지토리의 사양에 따라 Arrow 라이브러리를 노트북 범위 라이브러리로 설치합니다. URL

sc.install_pypi_package("arrow==0.14.0", "https://pypi.org/simple")
예 - 라이브러리 제거

다음 명령은 Arrow 라이브러리를 제거하여 현재 세션에서 노트북 범위의 라이브러리를 제거합니다.

sc.uninstall_package("arrow")