EMR Studio でのカーネルとライブラリのインストールと使用 - Amazon EMR

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

EMR Studio でのカーネルとライブラリのインストールと使用

各EMRノートブックには、あらかじめインストールされたライブラリとカーネルのセットが付属しています。EMR クラスターがカーネルとライブラリがあるリポジトリにアクセスできる場合は、追加のライブラリとカーネルをクラスターにインストールできます。例えば、プライベートサブネット内のクラスターの場合、ネットワークアドレス変換 (NAT) を設定し、クラスターがパブリック PyPI リポジトリにアクセスしてライブラリをインストールするためのパスを提供する必要があります。さまざまなネットワーク設定の外部アクセスの設定の詳細については、「Amazon VPCユーザーガイド」の「シナリオと例」を参照してください。

注記

EMR ノートブックは、コンソールで EMR Studio Workspaces として使用できます。コンソールのワークスペースの作成ボタンを使用すると、新しいノートブックを作成できます。Workspaces にアクセスまたは作成するには、EMRノートブックユーザーに追加のIAMロールアクセス許可が必要です。詳細については、「コンソール」および「Amazon コンソール」の「Amazon EMR Notebooks are Amazon EMR Studio Workspaces」を参照してください。 EMR

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. EMR Notebooks のサービスロールにアタッチされたアクセス許可ポリシーで、次のアクションが許可されていることを確認します。

    elasticmapreduce:ListSteps

    詳細については、EMR「ノートブックのサービスロール」を参照してください。

  2. AWS CLI を使用して、次の例に示すようにEMRノートブックを設定するステップをクラスターで実行します。ステップ名 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 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 仮想環境を作成することもできます。例については、「 の使用」を参照してください。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から実行する必要があります。詳細については、「を使用して Amazon EMRクラスターのプライマリノードに接続する SSH」を参照してください。

例 - カーネルをインストールする

以下の例は、クラスターのプライマリノードに接続されている間にターミナルコマンドを使用して Kotlin カーネルをインストールする方法を示しています。

sudo /emr/notebook-env/bin/conda install kotlin-jupyter-kernel -c jetbrains
注記

これらの手順では、カーネルの依存関係はインストールされません。カーネルにサードパーティーの依存関係がある場合、ノートブックでカーネルを使用するためには、その前に、追加のセットアップ手順を実行する必要があります。

ノートブックスコープのライブラリの考慮事項および制限

ノートブックスコープのライブラリを使用する場合は、以下の点を考慮してください。

  • ノートブックスコープライブラリは、Amazon EMRリリース 5.26.0 以降で作成したクラスターで使用できます。

  • ノートブック範囲のライブラリは、カーネルでのみ PySpark使用されるように設計されています。

  • すべてのユーザーがノートブックのセルから追加のノートブックスコープのライブラリをインストールできます。ノートブックのユーザーは、それらのライブラリを 1 回のノートブックセッションでのみ使用できます。他のユーザーが同じライブラリを必要とする場合や同じユーザーが別のセッションで同じライブラリを必要とする場合は、ライブラリを再インストールする必要があります。

  • でインストールされたライブラリのみをアンインストールできますinstall_pypi_packageAPI。クラスターにプリインストールされたライブラリをアンインストールすることはできません。

  • 異なるバージョンの同じライブラリがノートブックスコープのライブラリとしてクラスターにインストールされている場合、ノートブックスコープのライブラリのバージョンはクラスター全体のライブラリのバージョンを上書きします。

ノートブックスコープのライブラリの操作

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

次の例は、 PySpark カーネルと を使用してノートブックセル内からライブラリを一覧表示、インストール、アンインストールするためのシンプルなコマンドを示していますAPIs。その他の例については、 AWS ビッグデータブログのEMRノートブックの投稿で実行中のクラスターに 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")