「Amazon SageMaker StudioでSpark UIをホストする」
ホストする Amazon SageMaker StudioでSpark UI
Amazon SageMakerは、大規模データ処理のための人気のある分散コンピューティングフレームワークであるApache Sparkを使用して、分散データ処理ジョブを実行するためのいくつかの方法を提供しています。
Amazon SageMaker StudioからAmazon SageMaker StudioノートブックとAWS Glueインタラクティブセッションを接続して、サーバーレスクラスターでSparkジョブを実行することで、Sparkアプリケーションをインタラクティブに実行することができます。インタラクティブセッションでは、クラスターの管理について心配することなく、Apache SparkまたはRayを選択して大規模なデータセットを簡単に処理することができます。
また、環境をより細かく制御する必要がある場合は、事前に構築されたSageMaker Sparkコンテナを使用して、Amazon SageMaker Processingで完全に管理された分散クラスターでSparkアプリケーションをバッチジョブとして実行することもできます。このオプションでは、複数のインスタンスタイプ(コンピューティング最適化、メモリ最適化など)、クラスターのノード数、クラスターの構成を選択することができます。これにより、データ処理とモデルトレーニングの柔軟性が向上します。
最後に、Amazon EMRクラスターにStudioノートブックを接続するか、Amazon Elastic Compute Cloud(Amazon EC2)上でSparkクラスターを実行することで、Sparkアプリケーションを実行することができます。
これらのオプションをすべて使用すると、Sparkイベントログを生成して保存し、ウェブベースのユーザーインターフェースであるSpark UIを介して分析することができます。Spark UIは、Sparkアプリケーションの進行状況を監視し、リソースの使用状況を追跡し、エラーをデバッグするためのSpark History Serverを実行します。
この記事では、SageMaker StudioにSpark History Serverをインストールして実行し、異なるAWSサービス(AWS Glueインタラクティブセッション、SageMaker Processingジョブ、Amazon EMR)で生成され、Amazon Simple Storage Service(Amazon S3)バケットに保存されたSparkログを分析するためのソリューションを共有します。
ソリューションの概要
このソリューションは、Spark History ServerをSageMaker StudioのJupyter Serverアプリに統合します。これにより、ユーザーはSageMaker Studio IDEから直接Sparkログにアクセスすることができます。統合されたSpark History Serverは、以下の機能をサポートしています:
- SageMaker Processing Sparkジョブによって生成されたログへのアクセス
- AWS Glue Sparkアプリケーションによって生成されたログへのアクセス
- セルフマネージドSparkクラスターとAmazon EMRによって生成されたログへのアクセス
また、sm-spark-cli
というユーティリティコマンドラインインターフェース(CLI)も提供されており、SageMaker StudioシステムターミナルからSpark UIと対話することができます。 sm-spark-cli
を使用すると、SageMaker Studioを離れることなくSpark History Serverを管理することができます。
このソリューションは、次のアクションを実行するシェルスクリプトで構成されています:
- SageMaker StudioユーザープロファイルまたはSageMaker Studio共有スペースにSparkをインストールする
- ユーザープロファイルまたは共有スペースに
sm-spark-cli
をインストールする
SageMaker StudioドメインにSpark UIを手動でインストールする
SageMaker StudioでSpark UIをホストするには、次の手順を実行します:
- SageMaker Studioランチャーからシステムターミナルを選択します。
- システムターミナルで次のコマンドを実行します:
curl -LO https://github.com/aws-samples/amazon-sagemaker-spark-ui/releases/download/v0.1.0/amazon-sagemaker-spark-ui-0.1.0.tar.gz
tar -xvzf amazon-sagemaker-spark-ui-0.1.0.tar.gz
cd amazon-sagemaker-spark-ui-0.1.0/install-scripts
chmod +x install-history-server.sh
./install-history-server.sh
コマンドは数秒で完了します。
- インストールが完了したら、提供された
sm-spark-cli
を使用してSpark UIを起動し、次のコードを実行してウェブブラウザからアクセスすることができます:
sm-spark-cli start s3://DOC-EXAMPLE-BUCKET/<SPARK_EVENT_LOGS_LOCATION>
SageMaker Processing、AWS Glue、またはAmazon EMR によって生成されたイベントログは、Spark アプリケーションを実行する際に設定することができます。
SageMaker Studio ノートブックおよび AWS Glue インタラクティブセッションでは、ノートブックから直接 Spark イベントログの場所を設定することができます。これは sparkmagic
カーネルを使用して行います。
sparkmagic
カーネルには、ノートブックを介してリモートの Spark クラスタと対話するためのツールセットが含まれています。Spark のコードを実行したり、SQL クエリを実行したり、エグゼキュータのメモリやコアのような Spark の設定を構成するためのマジックコマンド(%spark
、%sql
)を提供します。
SageMaker Processing ジョブでは、SageMaker Python SDK から直接 Spark イベントログの場所を設定することができます。
詳細については、AWS のドキュメントを参照してください:
- SageMaker Processing の場合は、PySparkProcessor を参照してください
- AWS Glue インタラクティブセッションの場合は、Spark UI の構成を参照してください(コンソール)
- Amazon EMR の場合は、出力先の場所を構成してください
生成された URL を選択して Spark UI にアクセスすることができます。
以下のスクリーンショットは、Spark UI の例を示しています。
Studio システムターミナルで sm-spark-cli status
コマンドを使用して Spark History Server のステータスを確認することができます。
必要に応じて、Spark History Server を停止することもできます。
SageMaker Studio ドメイン内のユーザーのために Spark UI のインストールを自動化する
IT 管理者として、ライフサイクル設定を使用して SageMaker Studio ユーザーのインストールを自動化することができます。これは、SageMaker Studio ドメイン内のすべてのユーザープロファイルまたは特定のユーザープロファイルに対して行うことができます。詳細については、ライフサイクル設定を使用した Amazon SageMaker Studio のカスタマイズを参照してください。
以下のコマンドを AWS コマンドラインインターフェース(AWS CLI)と適切なアクセス権限が設定されたターミナルから実行して、インストールを行います:
curl -LO https://github.com/aws-samples/amazon-sagemaker-spark-ui/releases/download/v0.1.0/amazon-sagemaker-spark-ui-0.1.0.tar.gz
tar -xvzf amazon-sagemaker-spark-ui-0.1.0.tar.gz
cd amazon-sagemaker-spark-ui-0.1.0/install-scripts
LCC_CONTENT=`openssl base64 -A -in install-history-server.sh`
aws sagemaker create-studio-lifecycle-config \
--studio-lifecycle-config-name install-spark-ui-on-jupyterserver \
--studio-lifecycle-config-content $LCC_CONTENT \
--studio-lifecycle-config-app-type JupyterServer \
--query 'StudioLifecycleConfigArn'
aws sagemaker update-domain \
--region {YOUR_AWS_REGION} \
--domain-id {YOUR_STUDIO_DOMAIN_ID} \
--default-user-settings \
'{
"JupyterServerAppSettings": {
"DefaultResourceSpec": {
"LifecycleConfigArn": "arn:aws:sagemaker:{YOUR_AWS_REGION}:{YOUR_STUDIO_DOMAIN_ID}:studio-lifecycle-config/install-spark-ui-on-jupyterserver",
"InstanceType": "system"
},
"LifecycleConfigArns": [
"arn:aws:sagemaker:{YOUR_AWS_REGION}:{YOUR_STUDIO_DOMAIN_ID}:studio-lifecycle-config/install-spark-ui-on-jupyterserver"
]
}}'
Jupyterサーバーを再起動した後、Spark UIとsm-spark-cli
はSageMaker Studio環境で利用できるようになります。
クリーンアップ
このセクションでは、SageMaker Studioドメイン内のSpark UIを手動または自動でクリーンアップする方法を説明します。
Spark UIの手動アンインストール
SageMaker StudioでSpark UIを手動でアンインストールするには、以下の手順を完了します:
- SageMaker Studioランチャーでシステムターミナルを選択します。
- システムターミナルで以下のコマンドを実行します:
cd amazon-sagemaker-spark-ui-0.1.0/install-scripts
chmod +x uninstall-history-server.sh
./uninstall-history-server.sh
すべてのSageMaker Studioユーザープロファイルに対してSpark UIを自動的にアンインストールする
SageMaker Studioのすべてのユーザープロファイルに対してSpark UIを自動的にアンインストールするには、以下の手順を完了します:
- SageMakerコンソールで、ナビゲーションペインでドメインを選択し、SageMaker Studioドメインを選択します。
- ドメインの詳細ページで、環境タブに移動します。
- SageMaker Studio上のSpark UIのライフサイクル設定を選択します。
- デタッチを選択します。
- SageMaker StudioユーザープロファイルのJupyterサーバーアプリを削除して再起動します。
結論
この投稿では、SageMaker StudioにSpark UIを迅速にインストールするために使用できるソリューションを共有しました。Spark UIをSageMakerにホストすることで、機械学習(ML)およびデータエンジニアリングチームはどこからでもアクセスしてSparkログを分析し、プロジェクトの提供をスピードアップすることができます。IT管理者は、クラウドでのソリューションのプロビジョニングを標準化し、MLプロジェクトのためのカスタム開発環境の拡散を回避することができます。
この投稿のすべてのコードはGitHubリポジトリで利用できます。
We will continue to update VoAGI; if you have any questions or suggestions, please contact us!
Was this article helpful?
93 out of 132 found this helpful
Related articles