背景・目的
先日(2022/4/21)、Glue Studio ジョブノートブックが発表されました。
ジョブノートブックは、インタラクティブにSparkを実行できる機能を有しているとのことで、従来の開発エンドポイントを用いたノートブックと異なり、サーバレスのようです。
まだ、理解が出来ていないため、実際に触って試したいと思います。
まとめ
- 簡単に、ノートブックの作成ができました。
- ノートブックの起動や停止も速いです。
概要
ノートブックの仕様の概要
-
以下の特徴があるようです。
- Jupyter ノートブックに基づいて、ノートブックインターフェイスでジョブをインタラクティブにオーサリング可能
- オーサリングという言葉が、私には馴染みがなかったのですが、e-Wordsには、以下のように記載がありました。ここでは「ジョブを作る」ことと、理解しておけばよいかと思いました。
-
オーサリングとは、文字や画像、音声、動画などの要素を組み合わせて一つのソフトウェアやメディア作品を製作すること。特に、それをプログラムなどのコード記述を伴わずに行うこと。
-
- オーサリングという言葉が、私には馴染みがなかったのですが、e-Wordsには、以下のように記載がありました。ここでは「ジョブを作る」ことと、理解しておけばよいかと思いました。
- ノートブックを通じて、完全なジョブを実行せずにジョブスクリプトを編集して出力を表示可能
- 完全なジョブを実行せずにデータ統合コードを編集して出力を表示
- マークダウンを追加してノートブックを .ipynb ファイルとジョブスクリプトとして保存可能
- ソフトウェアをローカルにインストールしたり、サーバーを管理したりしなくても、ノートブックをスタート可能
-
ボタンをクリックするだけで、ノートブックを Glue ジョブに変換
- 個人的には、これが便利と感じました。
- Jupyter ノートブックに基づいて、ノートブックインターフェイスでジョブをインタラクティブにオーサリング可能
-
以下の利点があるようです。
- プロビジョニングまたは管理するクラスターがない
- 支払うべきアイドルクラスターがない。
- 事前設定は不要
- Jupyter ノートブックの取り付けは不要
- AWS Glue ETL と同じランタイム/プラットフォーム
-
また、VPCやネットワーク接続、開發エンドポイントなどが不要で、すぐに開発が可能なようです。
-
以下の手順を実行し、ジョブの作成が可能なようです。
- 必要な IAM 許可を設定する
- ノートブックセッションを開始してジョブを作成する
- ノートブックのセルにコードを書き込む
- コードを実行してテストし、出力を表示する
- ジョブを保存する
-
ノートブックを保存すると、ノートブックが完全な AWS Glue ジョブになり、ジョブ実行のスケジュール設定、ジョブパラメータの設定、およびノートブックのすぐ横にあるジョブ実行履歴の表示など、ジョブのすべての側面を管理できるとのことです。
2022/4/21時点で、以下のリージョンで使用が可能とのこと。
- 米国東部 (バージニア北部)
- 米国東部 (オハイオ)
- 米国西部 (オレゴン)
- アジアパシフィック (東京)
- 欧州 (アイルランド)
実践
こちらを参考に、試します。
IAMロール作成
ステップ1 信頼されたエンティティを選択
ステップ2 許可を追加
- 以下のAWSマネジメントポリシーを選択して、次へをクリックします。
- AWSGlueConsoleFullAccess
- AmazonS3FullAccess
S3は、必要に応じて設定してください。
ステップ3 名前、確認、および作成
以下を確認し、「ロールを作成」をクリックします。
ロール名について
データプレビューとノートブックコマンドが正しく動作するようにするには、文字列 AWSGlueServiceRole で始まる名前のロールを使用することが必要とのことです。
ロールに別の名前を指定する場合は、iam:passrole IAM のロールに対するロールの信頼ポリシーを許可し、設定することが必要らしいです。詳細は、こちらを参照してください。
- ロール名をAWSGlueServiceRole-Studio
- ステップ1:信頼されたエンティティを選択は、glueのサービスプリンシパルが選択されていること。
- ステップ2:許可を追加するでは、前画面で設定したIAMポリシーが選択されていることを確認。
- タグは、設定無し。
ノートブックの起動
- Glue Studioでノートブックを起動します。
Glue Studioに移動
Notebook setup
- Create Jobで、以下を選択し、Createをクリックします。
- Jupyter Notebook
- Option>Create a new notebook from scratch
-
Initial Valuesに以下を入力し、「Start notebook job」をクリックします。
- Job nameに、notebooktest-job
- IAM Roleに、先程作成したIAMロールの「AWSGlueServiceRole-Studio」
実行
- とりあえず、デフォルトで入っているGlueのコードを実行してみます。
Welcome to the Glue Interactive Sessions Kernel
For more information on available magic commands, please type %help in any new cell.
Please view our Getting Started page to access the most up-to-date information on the Interactive Sessions kernel: https://docs.aws.amazon.com/glue/latest/dg/interactive-sessions.html
Authenticating with environment variables and user-defined glue_role_arn: arn:aws:iam::XXXXXXXXXXXXX:role/AWSGlueServiceRole-Studio
Attempting to use existing AssumeRole session credentials.
Trying to create a Glue session for the kernel.
Worker Type: G.1X
Number of Workers: 5
Session ID: bfaa147b-814e-4f1a-b759-5deb55fd4d7c
Applying the following default arguments:
--glue_kernel_version 0.30
--enable-glue-datacatalog true
Waiting for session bfaa147b-814e-4f1a-b759-5deb55fd4d7c to get into ready status...
Session bfaa147b-814e-4f1a-b759-5deb55fd4d7c has been created
- ワーカタイプがG.1X、ワーカー数が5つ起動されているのが分かります。
ノートブックの保存と再開
Markdownでドキュメント作成
- 保存されたことが分かるように、以下を入力し実行します。
# Save test
保存
終了
ジョブの確認
再起動
ダウンロード〜再開
- ノートブックのダウンロードを試してみます。
ダウンロード
- Download Notebookをクリックします。
終了
- 再び、Terminate serverで終了します。
アップロード
起動
-
先程と同様に、Job nameとIAM Roleを指定しCreateを起動します。(同じものを指定しています。)
- Job nameに、notebooktest-job
- IAM Roleに、先程作成したIAMロールの「AWSGlueServiceRole-Studio」
保存(一回目は、失敗します)
削除
考察
- 今回、Glue Studioジョブノートブックを試してみました。起動、終了が素早く、簡単にできました。
- 私は、従来の開発エンドポイントを使ってノートブックを起動したりしたことはありませんが、専用インスタンスを起動し続けることでの料金の心配もなさそうです。
- 今回は、開発していませんがインタラクティブに開発、確認ができるので効率は良さそうです。
- 今後、ノートブックを使用してジョブを開発し、効率性などを体験してみます。
参考