

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

# EMR Studio에서 커널과 라이브러리 설치 및 사용
<a name="emr-managed-notebooks-installing-libraries-and-kernels"></a>

각 EMR 노트북에는 사전 설치된 라이브러리 및 커널 세트가 함께 제공됩니다. 커널과 라이브러리가 위치하고 있는 리포지토리에 클러스터가 액세스할 수 있는 경우 EMR 클러스터에 추가 라이브러리와 커널을 설치할 수 있습니다. 예를 들어, 프라이빗 서브넷에 있는 클러스터의 경우 NAT(네트워크 주소 변환)를 구성하고 클러스터가 퍼블릭 PyPI 리포지토리에 액세스하여 라이브러리를 설치할 수 있도록 경로를 제공해야 합니다. 다양한 네트워크 구성에서 외부 액세스를 구성하는 방법에 대한 자세한 내용은 *Amazon VPC 사용 설명서*에서 [시나리오 및 예제](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_Scenarios.html)를 참조하세요.

**참고**  
EMR Notebooks는 콘솔에서 EMR Studio Workspace로 사용 가능합니다. 콘솔의 **워크스페이스 생성** 버튼을 사용하면 새 노트북을 생성할 수 있습니다. EMR Notebooks 사용자는 Workspace에 액세스하거나 Workspace를 생성하려면 추가 IAM 역할 권한이 필요합니다. 자세한 내용은 [Amazon EMR Notebooks가 콘솔에서 Amazon EMR Studio 워크스페이스 역할](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-managed-notebooks-migration.html) 및 [Amazon EMR 콘솔](https://docs.aws.amazon.com/emr/latest/ManagementGuide/whats-new-in-console.html)을 참조하세요.<a name="emr-managed-notebooks-serverless"></a>

EMR Serverless 애플리케이션에는 다음과 같이 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 라이브러리 설치
<a name="emr-managed-notebooks-cluster-kernel"></a>

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

**참고**  
Amazon EMR 버전 5.30.1, 5.31.0 및 6.1.0의 경우 클러스터의 프라이머리 노드에 커널과 라이브러리를 설치하려면 추가 단계를 수행해야 합니다.  
이 기능을 활성화하려면 다음을 수행합니다.  
EMR Notebooks의 서비스 역할에 연결된 권한 정책이 다음 작업을 허용하는지 확인합니다.  
`elasticmapreduce:ListSteps`  
자세한 내용은 [EMR Notebooks 서비스 역할](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-managed-notebooks-service-role.html)을 참조하세요.
 AWS CLI 를 사용하여 다음 예제와 같이 EMR 노트북을 설정하는 클러스터에서 단계를 실행합니다. `EMRNotebooksSetup` 단계 이름을 사용해야 합니다. *us-east-1*을 클러스터가 상주하는 리전으로 바꿉니다. 자세한 내용은 [AWS CLI를 사용하여 클러스터에 단계 추가](https://docs.aws.amazon.com/emr/latest/ManagementGuide/add-step-cli.html)를 참조하세요.  

   ```
   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`를 사용하여 커널과 라이브러리를 설치할 수 있습니다.

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

```
%pip install pmdarima
```
업데이트된 패키지를 사용하려면 커널을 다시 시작해야 할 수 있습니다. [https://ipython.readthedocs.io/en/stable/interactive/magics.html#cellmagic-sh](https://ipython.readthedocs.io/en/stable/interactive/magics.html#cellmagic-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 실행기에서 실행됩니다. 자세한 내용은 [노트북 범위 라이브러리 사용](#emr-managed-notebooks-custom-libraries-limitations)을 참조하세요.  
PySpark 커널 내에 여러 Python 라이브러리를 패키징하려는 경우 격리된 Python 가상 환경을 생성할 수도 있습니다. 예제는 [Using Virtualenv](https://spark.apache.org/docs/latest/api/python/tutorial/python_packaging.html#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://amzn-s3-demo-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://amzn-s3-demo-bucket/prefix/my_pyspark_venv.tar.gz#environment",
   "spark.submit.deployMode":"cluster"
   }
}
```
`conda`를 사용하여 Python 라이브러리를 설치할 수도 있습니다. sudo 액세스 권한이 없어도 `conda`를 사용할 수 있습니다. SSH를 사용하여 프라이머리 노드에 연결한 다음, 터미널에서 `conda`를 실행해야 합니다. 자세한 내용은 [SSH를 사용하여 Amazon EMR 클러스터 프라이머리 노드에 연결](emr-connect-master-node-ssh.md) 단원을 참조하십시오.

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

```
sudo /emr/notebook-env/bin/conda install kotlin-jupyter-kernel -c jetbrains
```
이 지침에서는 커널 종속 항목을 설치하지 않습니다. 커널에 타사 종속 항목이 있는 경우 노트북에서 커널을 사용하려면 먼저 추가 설정 단계를 수행해야 할 수 있습니다.

## 노트북 범위 라이브러리의 고려 사항 및 제한 사항
<a name="emr-managed-notebooks-custom-libraries-limitations"></a>

노트북 범위의 라이브러리를 사용할 때는 다음을 고려합니다.
+ 노트북 범위 라이브러리는 Amazon EMR 릴리스 5.26.0 이상으로 생성한 클러스터에서 사용할 수 있습니다.
+ 노트북 범위의 라이브러리는 PySpark 커널에서만 사용할 수 있습니다.
+ 모든 사용자는 노트북 셀 내에서 노트북 범위의 라이브러리를 추가로 설치할 수 있습니다. 이러한 라이브러리는 단일 노트북 세션 중에 해당 노트북 사용자만 사용할 수 있습니다. 다른 사용자가 동일한 라이브러리를 필요로 하거나 동일한 사용자가 다른 세션에서 동일한 라이브러리를 필요로 하는 경우 라이브러리를 다시 설치해야 합니다.
+ `install_pypi_package` API를 사용하여 설치된 라이브러리만 제거할 수 있습니다. 클러스터에 사전 설치된 라이브러리는 제거할 수 없습니다.
+ 다른 버전의 동일한 라이브러리가 클러스터 및 노트북 범위의 라이브러리로 설치된 경우 노트북 범위 라이브러리 버전이 클러스터 라이브러리 버전을 재정의합니다.

## 노트북 범위의 라이브러리 작업
<a name="emr-managed-notebooks-work-with-libraries"></a>

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

다음 예제는 PySpark 커널과 API를 사용하여 노트북 셀에서 라이브러리를 나열, 설치 및 제거하는 간단한 명령을 보여줍니다. 추가 예제는 AWS 빅 데이터 블로그[의 EMR Notebooks 게시물을 사용하여 실행 중인 클러스터에 Python 라이브러리 설치를](https://aws.amazon.com/blogs/big-data/install-python-libraries-on-a-running-cluster-with-emr-notebooks/) 참조하세요.

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

```
sc.list_packages()
```

**Example - Celery 라이브러리 설치**  
다음 명령은 [Celery](https://pypi.org/project/celery/) 라이브러리를 노트북 범위의 라이브러리로 설치합니다.  

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

```
import celery
sc.range(1,10000,1,100).map(lambda x: celery.__version__).collect()
```

**Example - Arrow 라이브러리 설치, 버전 및 리포지토리 지정**  
다음 명령은 [Arrow](https://pypi.org/project/arrow/) 라이브러리를 노트북 범위의 라이브러리로 설치하고 라이브러리 버전 및 리포지토리 URL을 지정합니다.  

```
sc.install_pypi_package("arrow==0.14.0", "https://pypi.org/simple")
```

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

```
sc.uninstall_package("arrow")
```