翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
EMR Studio でカーネルとライブラリをインストールして使用する
各 EMR notebooks には、プリインストールされたライブラリとカーネルのセットが付属しています。EMR クラスターがカーネルとライブラリのあるリポジトリにアクセスできる場合は、クラスターに追加のライブラリとカーネルをインストールすることができます。たとえば、クラスターがプライベートサブネットにある場合は、ネットワークアドレス変換 (NAT) を設定して、クラスターがパブリックの PyPI リポジトリにアクセスしてライブラリをインストールするためのパスを指定する必要があります。さまざまなネットワーク設定の外部アクセス設定の詳細については、「Amazon VPC ユーザーガイド」の「シナリオと例」を参照してください。
注記
EMR Notebooks は、コンソールで EMR Studio Workspace として使用できます。コンソールの [ワークスペースの作成] ボタンを使用すると、新しいノートブックを作成できます。EMR Notebooks ユーザーが Workspace にアクセスしたり作成したりするには、追加の IAM ロール権限が必要です。詳細については、「Amazon EMR Notebooks are Amazon EMR Studio Workspaces in the console」および「Amazon EMR console」を参照してください。
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 notebooks を実行するすべてのユーザーが使用できます。この方法でインストールした Python ライブラリは、プライマリノードで実行されるプロセスでのみ使用できます。ライブラリはコアノードまたはタスクノードにはインストールされず、それらのノードで実行されているエグゼキュターでは使用できません。
注記
Amazon EMR バージョン 5.30.1、5.31.0、および 6.1.0 では、クラスターのプライマリノードにカーネルとライブラリをインストールするためには、追加のステップを実行する必要があります。
この機能を有効にするには、以下の操作を行います。
-
EMR Notebooks のサービスロールにアタッチされているアクセス許可ポリシーで、次のアクションが許可されていることを確認します。
elasticmapreduce:ListSteps
詳細については、「EMR Notebooks のサービスロール」を参照してください。
-
AWS CLI を使用して、以下の例に示すように、EMR Notebooks をセットアップするクラスターでステップを実行します。ステップ名
EMRNotebooksSetup
を使用する必要があります。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
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://
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 クラスタープライマリノードに接続する」を参照してください。
例 - カーネルをインストールする
以下の例は、クラスターのプライマリノードに接続されている間にターミナルコマンドを使用して Kotlin カーネルをインストールする方法を示しています。
sudo /emr/notebook-env/bin/conda install kotlin-jupyter-kernel -c jetbrains
注記
これらの手順では、カーネルの依存関係はインストールされません。カーネルにサードパーティーの依存関係がある場合、ノートブックでカーネルを使用するためには、その前に、追加のセットアップ手順を実行する必要があります。
ノートブックスコープのライブラリの考慮事項および制限
ノートブックスコープのライブラリを使用する場合は、以下の点を考慮してください。
-
ノートブックスコープのライブラリは、Amazon EMR リリース 5.26.0 以降で作成したクラスターで使用できます。
-
ノートブックスコープのライブラリは、PySpark カーネルのみでの使用を意図しています。
-
すべてのユーザーがノートブックのセルから追加のノートブックスコープのライブラリをインストールできます。ノートブックのユーザーは、それらのライブラリを 1 回のノートブックセッションでのみ使用できます。他のユーザーが同じライブラリを必要とする場合や同じユーザーが別のセッションで同じライブラリを必要とする場合は、ライブラリを再インストールする必要があります。
-
アンインストールできるのは、
install_pypi_package
API を使用してインストールされたライブラリのみです。クラスターにプリインストールされたライブラリをアンインストールすることはできません。 -
異なるバージョンの同じライブラリがノートブックスコープのライブラリとしてクラスターにインストールされている場合、ノートブックスコープのライブラリのバージョンはクラスター全体のライブラリのバージョンを上書きします。
ノートブックスコープのライブラリの操作
ライブラリをインストールするには、そのライブラリが存在する PyPI リポジトリに Amazon EMR クラスターがアクセスできる必要があります。
以下の例は、PySpark カーネルおよび API を使用してノートブックのセルからライブラリを一覧表示、インストール、アンインストールするシンプルなコマンドを示しています。その他の例については、「AWS Big Data Blog」の記事「Install Python libraries on a running cluster with EMR Notebooks
例 - 現在のライブラリの一覧表示
以下のコマンドは、現在の 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
sc.install_pypi_package("arrow==0.14.0", "https://pypi.org/simple")
例 - ライブラリのアンインストール
以下のコマンドは、Arrow ライブラリをアンインストールし、現在のセッションからノートブックスコープのライブラリとして削除します。
sc.uninstall_package("arrow")