AWS Glue インタラクティブセッション、PySparkProcessor、または Sparkmagic カーネルを使用して大規模なデータワークロードを実行するために、Amazon SageMaker AI ノートブックインスタンスを構成したいと考えています。
解決策
SageMaker AI ノートブックインスタンスで Spark およびPySpark ワークロードを実行するための構成を行うには、次のいずれかの解決策を実行します。
ノートブックインスタンスに AWS Glue インタラクティブセッションを構成する
Apache Spark および PySpark ワークロードをサーバーレスで実行する場合は、ノートブックインスタンスに WS Glue インタラクティブセッションを構成します。ノートブックインスタンスを起動すると、インタラクティブセッションは PySpark カーネルと Spark カーネルを作成します。その後、Jupyter または JupyterLab アプリケーションの [ランチャー] タブから、インストールされたいずれかのカーネルを使用できます。
AWS Glue インタラクティブセッションへの権限を付与する
次の手順を実行します。
- AWS Identity and Access Management (IAM) コンソールを開きます。
- ナビゲーションペインの [アクセス管理] で [ロール] を選択します。
- SageMaker AI ノートブックインスタンスに使用する実行ロールを選択します。
- JSON エディタで次のインラインカスタム IAM ポリシーを作成します。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "uniqueStatementId",
"Effect": "Allow",
"Action": [
"iam:GetRole",
"iam:PassRole",
"sts:GetCallerIdentity"
],
"Resource": "YOUR-IAM-ROLE-ARN"
}
]
}
注: YOUR-IAM-ROLE-ARN をノートブックインスタンスの IAM 実行ロールの Amazon リソースネーム (ARN) に置き換えてください。
- IAM ロールに AWS Glue へのアクセス権を付与するには、[権限の追加] ドロップダウンメニューで [ポリシーをアタッチ] を選択します。次に、AwsGlueSessionUserRestrictedServiceRole を検索し、[ポリシーをアタッチ] を選択します。
- AWS Glue が IAM ロールを引き受けられるようにするには、[信頼関係] タブを選択し、サービスリストに glue.amazonaws.com を追加します。信頼ポリシーが次の例と同様であることを確認します。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "",
"Effect": "Allow",
"Principal": {
"Service": [
"sagemaker.amazonaws.com",
"glue.amazonaws.com"
]
},
"Action": "sts:AssumeRole"
}
]
}
ノートブックインスタンスに AWS Glue インタラクティブセッションカーネルをインストールする
次の手順を実行します。
-
起動時に AWS Glue カーネルを自動的にインストールするには、次のライフサイクル設定スクリプトを作成します。
#!/bin/bash
set -e
# Start conda environment
sudo -u ec2-user -i <<'EOF'
# Activate conda default environment
source /home/ec2-user/anaconda3/bin/activate JupyterSystemEnv
# Install/upgrade packages for boto3 and aws-glue-sessions
pip3 install --upgrade jupyter boto3 aws-glue-sessions
echo "AWS Glue Sessions Installed Successfully"
# Install Glue kernels
install-glue-kernels
echo "Glue Kernels Installed Successfully"
# Deactivate conda environment
conda deactivate
EOF
# Ensure script reports success
echo "Lifecycle configuration complete!"
systemctl restart jupyter-server
sudo touch /home/ec2-user/glue_ready
-
ノートブックインスタンスに移動し、インスタンスのステータスが InService ではないことを確認します。
-
ライフサイクル設定スクリプトをアタッチするには、[ノートブックインスタンスの設定] を選択し、[編集] を選択します。
-
[追加の構成] の [ライフサイクル設定] ドロップダウンリストから目的のライフサイクル設定スクリプトを選択します。
-
[ノートブックインスタンスを更新] を選択します。
注: ノートブックインスタンスの更新には、数分かかる場合があります。
-
ノートブックインスタンスを起動します。
-
JupyterLab を開き、[ランチャー] タブを選択します。
-
AWS Glue Spark または AWS Glue PySpark カーネルを選択してデータワークロードを実行します。
注: ワークロードの処理後は、AWS Glue の料金発生を防ぐために、JupyterLab でカーネルをシャットダウンしてください。
AWS Glue インタラクティブセッションの詳細な構成方法については、「Jupyter および AWS Glue Studio ノートブック用に AWS Glue インタラクティブセッションを構成する」を参照してください。
SageMaker AI ジョブの処理用に PySparkProcessor を構成する
PySparkProcessor を使用すると、PySpark スクリプトを処理ジョブとして実行できます。詳細については、SageMaker Read the Docs のウェブサイトで「PySparkProcessor」を参照してください。
注: PySparkProcessor は、事前ビルドされた SageMaker AI Spark コンテナを使用します。ユーザーは、引数 framework_version、py_version、および container_version のみを構成できます。
使用できるノートブックの例については、GitHub のウェブサイトで sagemaker-spark-processing.ipynb を参照してください。
SageMaker AI Sparkmagic カーネル用の Amazon EMR バックエンドクラスターを構成する
](https://docs.aws.amazon.com/sagemaker/latest/dg/nbi-al2.html#nbi-al2-kernel)Sparkmagic カーネル](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-overview.html#emr-overview-clusters)には、バックエンド [Amazon EMR クラスター[が必要です。Sparkmagic カーネルの使用時にバックエンド Amazon EMR クラスターが欠落している場合、次のエラーメッセージが表示されます。
"The code failed because of a fatal error: Error sending http request and maximum retry encountered..."
Amazon EMR で実行される Spark クラスターを設定し、ノートブックインスタンスに接続する方法については、「Amazon EMR 上の Spark をバックエンドとする Amazon SageMaker AI ノートブックをビルドする」を参照してください。
接続の確認後、次のコマンドを実行して sagemaker-studio-analytics-extension をアップグレードします。
pip install --upgrade sagemaker-studio-analytics-extension
sagemaker-studio-analytics-extension の最新バージョンでは、デフォルトのサーバーセッションタイムアウトが 60 秒から 120 秒にオーバーライドされます。詳細については、「Livy への接続がハングするか失敗する場合のトラブルシューティング」を参照してください。
拡張機能の更新後、PySpark カーネルを使用して Jupyter ノートブックを起動し、接続をテストします。接続に成功した場合は、次のようなメッセージが表示されます。
"Starting Spark application … SparkSession available as 'spark' "
接続後、PySpark をインポートしてワークロードを実行します。
関連情報
AWS Glue Studio への IAM 権限を設定する
インタラクティブセッションを使用して AWS Glue ジョブをビルドする