Amazon EMR クラスターに Python ライブラリをインストールする際の問題をトラブルシューティングしたいです。
解決策
Python パッケージは Amazon EMR ではご利用いただけません
注: デフォルトでは、Amazon EMR が Python をインストールします。ただし、Amazon EMR はすべての Python ライブラリをインストールするわけではありません。
Python パッケージが Amazon EMR で利用できない場合は、パッケージが見つからないというエラーが発生したノードにログインします。次に、次の例のようなコマンドを実行して、Python パッケージがインストールされているかどうかを確認します。
特定のパッケージがインストールされているかどうかを確認するコマンドの例:
sudo pip3 freeze | grep pandas;
sudo pip3 freeze | grep numpy
注: pandas と numpy を確認したい Python パッケージに置き換えてください。
想定される出力:
pandas==1.3.5
numpy==1.21.6
クラスターにインストールされているすべての Python ライブラリのリストを表示するコマンド例:
sudo pip3 freeze
想定される出力:
aws-cfn-bootstrap==2.0
beautifulsoup4==4.9.3
boto==2.49.0
click==8.1.3
docutils==0.14
jmespath==1.0.1
numpy==1.21.6
pandas==1.3.5
...
Python シェルでは、次の例のようなコマンドを実行することもできます。
import pandas as pd;
import numpy as np
前述のコマンドが ModuleNotFoundError: No module named 'python_library' などのエラーを返す場合、ライブラリはインストールされていません。
Amazon EMR クラスターに Python ライブラリをインストールするには、次のコマンドを実行します。
sudo pip3 install pandas scipy sklearn
注: pandas scipy sklearn を、インストールする Python ライブラリに置き換えてください。
または、次のコマンドを実行して、.txt ファイルから Python パッケージを読み込んでインストールすることもできます。
sudo pip3 install -r requirements.txt
注: requirements.txt を、インストールする Python パッケージとライブラリのリストを含む .txt ファイルに置き換えてください。
詳細については、Python パッケージングのウェブサイトにある「Installing packages」(パッケージのインストール) を参照してください。また、「Installing and using kernels and libraries in EMR Studio」(EMR Studio でのカーネルとライブラリのインストールと使用) も参照してください。
Python パッケージは、クラスターのスケーリング中に新しくプロビジョニングされたコアノードまたはタスクノードでは使用できません
個々のノードに手動でインストールされた Python パッケージは、クラスターのスケーリング中に、新しくプロビジョニングされたコアノードまたはタスクノードで使用できない場合があります。
新しくプロビジョニングされたノードにパッケージが存在することを確認するには、ライブラリを手動でインストールするのではなく、ブートストラップアクションを使用してライブラリをインストールします。
インストールするパッケージがブートストラップログを使用しても使用できない場合は、ブートストラップログをチェックして問題を特定してください。
実行中のインスタンス
実行中のインスタンスのブートストラップログを確認するには、まず SSH を使用してプライマリノードに接続します。次に、/var/log/bootstrap-actions/bootStrapNumber/stderr と /var/log/bootstrap-actions/bootStrapNumber/stdout にあるブートストラップログでエラーがないか確認します。
注: 前述のパスで、bootStrapNumber をブートストラップスクリプト番号に置き換えてください。
新しいインスタンス
新しいインスタンスの場合、ブートストラップログは Amazon EMR ログ記録用に設定した Amazon Simple Storage Service (Amazon S3) バケットにキャプチャされます。s3://DOC-EXAMPLE-LOG-BUCKET/cluster-id/node/instance-id/bootstrap-actions/bootStrapNumber/stdout と s3://DOC-EXAMPLE-LOG-BUCKET/cluster-id/node/instance-id/bootstrap-actions/bootStrapNumber/stderr にあるブートストラップログでエラーがないか確認してください。
注: 前述のパスで、bootStrapNumber はブートストラップスクリプト番号を表します。