「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をホストするには、次の手順を実行します:

  1. SageMaker Studioランチャーからシステムターミナルを選択します。

  1. システムターミナルで次のコマンドを実行します:
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

コマンドは数秒で完了します。

  1. インストールが完了したら、提供された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を手動でアンインストールするには、以下の手順を完了します:

  1. SageMaker Studioランチャーでシステムターミナルを選択します。

  1. システムターミナルで以下のコマンドを実行します:
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を自動的にアンインストールするには、以下の手順を完了します:

  1. SageMakerコンソールで、ナビゲーションペインでドメインを選択し、SageMaker Studioドメインを選択します。

  1. ドメインの詳細ページで、環境タブに移動します。
  2. SageMaker Studio上のSpark UIのライフサイクル設定を選択します。
  3. デタッチを選択します。

  1. 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!

Share:

Was this article helpful?

93 out of 132 found this helpful

Discover more

データサイエンス

NVIDIAは、企業向けカスタム生成AIモデルの開発を迅速に進めています

<p>今日の無料でオープンソースの<a href=”https://www.voagi.com/distilbert-smaller-faster-cheaper-and-li...

データサイエンス

マシンラーニングに取り組むため、プライベートエクイティはデータサイエンスの才能を採用しています

プライベートエクイティファームは、機械学習とデータ分析を投資プロセスに統合する際、データサイエンスの専門家にデータを...

データサイエンス

「機械が収穫するためではない」 AIに対するデータの反乱勃発

「A.I.企業が許可なくオンラインコンテンツを消費することにうんざりしたため、ファンフィクション作家、俳優、ソーシャルメ...

AI研究

「Google Researchが探求:AIのフィードバックは、大規模な言語モデルの効果的な強化学習において人間の入力を置き換えることができるのか?」

人間のフィードバックは、機械学習モデルを改善し最適化するために不可欠です。近年、人間のフィードバックからの強化学習(R...

AI研究

「MITの研究者が、おそらくほぼ正確な(PAC)プライバシーによる機械学習モデルのプライバシー保護において、ブレークスルーを達成」

MITの研究者たちは、機械学習モデル内にエンコードされた機微なデータを保護するという課題について、大きな進歩を遂げました...

コンピュータサイエンス

数値計算のための二分法の使用方法

コンピュータ科学と数学のサブフィールドである数値計算は、コンピュータを用いた数値計算手法とアルゴリズムを用いて数学の...