

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# EMR Studio でカーネルとライブラリをインストールして使用する
<a name="emr-managed-notebooks-installing-libraries-and-kernels"></a>

各 EMR notebooks には、プリインストールされたライブラリとカーネルのセットが付属しています。EMR クラスターがカーネルとライブラリのあるリポジトリにアクセスできる場合は、クラスターに追加のライブラリとカーネルをインストールすることができます。たとえば、クラスターがプライベートサブネットにある場合は、ネットワークアドレス変換 (NAT) を設定して、クラスターがパブリックの PyPI リポジトリにアクセスしてライブラリをインストールするためのパスを指定する必要があります。さまざまなネットワーク設定の外部アクセス設定の詳細については、「[Amazon VPC ユーザーガイド](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_Scenarios.html)」の「*シナリオと例*」を参照してください。

**注記**  
EMR Notebooks は、コンソールで EMR Studio Workspace として使用できます。コンソールの **[ワークスペースの作成]** ボタンを使用すると、新しいノートブックを作成できます。EMR Notebooks ユーザーが Workspace にアクセスしたり作成したりするには、追加の IAM ロール権限が必要です。詳細については、「[Amazon EMR Notebooks are Amazon EMR Studio Workspaces in the console](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-managed-notebooks-migration.html)」および「[Amazon EMR console](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>

Amazon EMR リリースバージョン 5.30.0 以降 (6.0.0 を除く) では、クラスターのプライマリノードに追加の Python ライブラリとカーネルをインストールすることができます。インストールしたカーネルとライブラリは、クラスターにアタッチされている EMR notebooks を実行するすべてのユーザーが使用できます。この方法でインストールした 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)」を参照してください。
を使用して、次の例に示すように EMR Notebooks をセットアップするクラスターでステップ AWS CLI を実行します。ステップ名 `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 ライブラリをインストールすることもできます。`conda` を使用するのに sudo アクセスは必要ありません。プライマリノードに 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 カーネルのみでの使用を意図しています。
+ すべてのユーザーがノートブックのセルから追加のノートブックスコープのライブラリをインストールできます。ノートブックのユーザーは、それらのライブラリを 1 回のノートブックセッションでのみ使用できます。他のユーザーが同じライブラリを必要とする場合や同じユーザーが別のセッションで同じライブラリを必要とする場合は、ライブラリを再インストールする必要があります。
+ アンインストールできるのは、`install_pypi_package` API を使用してインストールされたライブラリのみです。クラスターにプリインストールされたライブラリをアンインストールすることはできません。
+ 異なるバージョンの同じライブラリがノートブックスコープのライブラリとしてクラスターにインストールされている場合、ノートブックスコープのライブラリのバージョンはクラスター全体のライブラリのバージョンを上書きします。

## ノートブックスコープのライブラリの操作
<a name="emr-managed-notebooks-work-with-libraries"></a>

ライブラリをインストールするには、そのライブラリが存在する PyPI リポジトリに Amazon EMR クラスターがアクセスできる必要があります。

以下の例は、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")
```