AWS Glue 開発エンドポイントで SageMaker ノートブックを使用する方法 - AWS Glue

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

AWS Glue 開発エンドポイントで SageMaker ノートブックを使用する方法

開発エンドポイントにアクセスする一般的な方法の 1 つは、SageMaker ノートブックの Jupyter を使用することです。Jupyter Notebook は、可視化、分析、機械学習などで広く使用されているオープンソースのウェブアプリケーションです。AWS Glue SageMaker ノートブックにより、AWS Glue 開発エンドポイントを使用した Jupyter Notebook を使用できます。AWS Glue SageMaker ノートブックでは、Jupyter Notebook 環境は SparkMagic (リモートの Spark クラスターに Spark ジョブを送信するオープンソースの Jupyter プラグイン) で事前設定されています。Apache Livyは、REST API を介してリモート Spark クラスターとのやり取りを可能にするサービスです。AWS Glue SageMaker ノートブックでは、SparkMagic は、AWS Glue 開発エンドポイントで実行されている Livy サーバーに対して REST API を呼び出すように設定されています。

各コンポーネントの動作について、次のテキストフローで説明します。

AWS Glue SageMaker ノートブック: (Jupyter → SparkMagic) → (ネットワーク) → AWS Glue 開発エンドポイント: (Apache Livy → Apache Spark)

Jupyter Notebook 上の各段落に記述された Spark スクリプトを実行すると、Spark コードが SparkMagic 経由で Livy サーバーに送信され、「livy-session-N」という名前の Spark ジョブが Spark クラスター上で実行されます。このジョブは、Livy セッションと呼ばれます。ノートブックセッションが存続している間、Spark ジョブは実行されます。Spark ジョブは、ノートブックから Jupyter カーネルをシャットダウンしたとき、またはセッションがタイムアウトしたときに終了します。ノートブック (.ipynb) ファイルごとに 1 つの Spark ジョブが起動します。

単一の AWS Glue 開発エンドポイントで複数の SageMaker ノートブックインスタンスを使用でき ます。SageMaker ノートブックインスタンスごとに、複数のノートブックファイルを作成できます。各ノートブックファイルを開いて段落を実行すると、SparkMagic 経由で Spark クラスター上のノートブックファイルごとに Livy セッションが起動します。各 Livy セッションは、単一の Spark ジョブに対応します。

AWS Glue 開発エンドポイントと SageMaker ノートブックのデフォルトの動作

Spark ジョブは、[Spark configuration] (Spark の設定) に基づいて実行されます。Spark の設定には複数の方法があります (Spark クラスター設定、SparkMagic の設定など)。

デフォルトでは、Spark は Spark クラスター設定に基づいて Livy セッションにクラスターリソースを割り当てます。AWS Glue 開発エンドポイントでは、クラスター設定はワーカーのタイプによって異なります。ワーカータイプごとの共通設定について説明した表を次に示します。

標準 G.1X G.2X
spark.driver.memory 5G 10G 20G
spark.executor.memory 5G 10G 20G
spark.executor.cores 4 8 16
spark.dynamicAllocation.enabled TRUE TRUE TRUE

Sparkエグゼキュターの最大数は、DPU (または NumberOfWorkers) とワーカータイプの組み合わせによって自動的に計算されます。

標準 G.1X G.2X
Spark エグゼキュターの最大数 (DPU - 1) * 2 - 1 (NumberOfWorkers - 1) (NumberOfWorkers - 1)

例えば、開発エンドポイントに 10 ワーカーあり、ワーカータイプが G.1X の場合、Spark エグゼキュターは 9 つになり、各エグゼキュターは 10G のメモリを持つため、クラスター全体のエグゼキュターメモリは 90G になります。

指定されたワーカータイプに関係なく、Spark 動的リソース割り当てが有効になります。データセットが十分に大きい場合、spark.dynamicAllocation.maxExecutors はデフォルトで設定されていないため、Spark はすべてのエグゼキュターを単一の Livy セッションに割り当てることができます。つまり、同じ開発エンドポイント上の他の Livy セッションは、新しいエグゼキュターの起動を待つことになります。データセットが小さい場合、Spark は同時に複数の Livy セッションにエグゼキュターを割り当てることができます。

注記

さまざまなユースケースでリソースがどのように割り当てられるか、および動作を変更するための設定方法の詳細については、「高度な設定: 複数のユーザー間で開発エンドポイントを共有する」を参照してください。