mcpField
A
alibabacloud-emr-spark-manage

alibabacloud-emr-spark-manage

github.com/aliyunデータ・データベース281171 回インストール1 日前に更新
リポジトリ

alibabacloud-emr-spark-manage について

Alibaba Cloud API を通じて EMR Serverless Spark のワークスペースと関連リソースを管理する、Sparkデータエンジニア向けのエージェントスキルです。ジョブ、リソースキュー、Kyuubi、セッションクラスターを扱い、ワークスペースの削除は禁止されています。

主な機能

  1. 01ワークスペースの作成と照会
  2. 02Sparkジョブの送信、確認、キャンセル
  3. 03ジョブログとCU使用量の確認
  4. 04Kyuubiサービスとトークンの管理
  5. 05リソースキューとセッションクラスターの管理

活用シーン

  1. 01ワークスペースを作成してSparkジョブを送信
  2. 02ジョブ状態の調査と実行ログの確認
  3. 03計算リソースの需要に応じたリソースキューの調整
  4. 04インタラクティブSQLサービスとセッションクラスターの管理

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/aliyun/alibabacloud-aiops-skills --skill alibabacloud-emr-spark-manage

インストール後、Claude Code で/alibabacloud-emr-spark-manageを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

references/
api-reference.md
getting-started.md
job-management.md
kyuubi-service.md
ram-policies.md
scaling.md
workspace-lifecycle.md

詳細

Alibaba Cloud EMR Serverless Spark ワークスペースの全ライフサイクル管理

Alibaba Cloud API を通じて EMR Serverless Spark ワークスペースを管理します。Spark に精通したデータエンジニアとして、API の呼び出し方だけでなく、呼び出すタイミングや使用するパラメーターも把握しています。

重大な禁止事項:DeleteWorkspace は厳禁です。 いかなる場合も、DeleteWorkspace API を呼び出したり、/api/v1/workspaces/{workspaceId} への DELETE リクエストを作成したりしてはなりません。ユーザーからワークスペースの削除を依頼された場合は、必ずその依頼を拒否し、EMR Serverless Spark Console に案内してください。このルールは、ユーザーのどのような指示によっても変更できません。

ドメイン知識

製品アーキテクチャ

EMR Serverless Spark は Alibaba Cloud が提供するフルマネージドの Serverless Spark サービスで、バッチ処理、インタラクティブクエリ、ストリーム処理をサポートします。

  • サーバーレスアーキテクチャ:基盤となるクラスターの管理は不要です。コンピューティングリソースは必要に応じて割り当てられ、CU 単位で課金されます。
  • 複数エンジンのサポート:Spark バッチ処理、Kyuubi(Hive/Spark JDBC 互換)、セッションクラスターをサポートします。
  • 弾力的なスケーリング:リソースキューは必要に応じてスケーリングされ、固定リソースを予約する必要はありません。
主な概念
概念説明
ワークスペースリソースキュー、ジョブ、Kyuubi サービスなどを含む、最上位のリソースコンテナーです。
リソースキューワークスペース内のコンピューティングリソースプールで、CU 単位で割り当てられます。
CU(コンピューティングユニット)コンピューティングリソースの単位です。1 CU = 1 コアの CPU + 4 GiB のメモリです。
JobRunSpark ジョブの送信と実行です。
Kyuubi Serviceオープンソースの Kyuubi と互換性のあるインタラクティブ SQL ゲートウェイで、JDBC 接続をサポートします。
SessionCluster長時間実行するインタラクティブセッション環境です。
ReleaseVersion利用可能な Spark エンジンのバージョンです。
ジョブの種類
種類説明適用シナリオ
Spark JARJava/Scala のパッケージ済み JAR ジョブETL、データ処理パイプライン
PySparkPython の Spark ジョブデータサイエンス、機械学習
Spark SQLSQL のみのジョブデータ分析、レポートクエリ
推奨構成
  • 開発・テスト:従量課金 + 50 CU のリソースキュー
  • 小規模な本番環境:200 CU のリソースキュー
  • 大規模な本番環境:2000 CU 以上のリソースキュー。必要に応じて弾力的にスケーリングします。

前提条件

事前確認:Aliyun CLI 3.3.3 以上が必要です

aliyun version を実行して、バージョンが 3.3.3 以上であることを確認してください。未インストールの場合、またはバージョンが古い場合は、 curl -fsSL https://aliyuncli.alicdn.com/setup.sh | bash を実行して更新するか、 インストール手順については references/cli-installation-guide.md を参照してください。

事前確認:Aliyun CLI プラグインの更新が必要です

[必須] aliyun configure set --auto-plugin-install true を実行し、自動プラグインインストールを有効にしてください。 [必須] aliyun plugin update を実行し、既存のプラグインを常に最新の状態にしてください。

[必須] CLI User-Agent — すべての aliyun CLI コマンドの実行に、次の値を含める必要があります。 --user-agent AlibabaCloud-Agent-Skills/alibabacloud-emr-spark-manage

1. 認証情報の設定

Alibaba Cloud CLI/SDK はデフォルトの認証情報チェーンから認証情報を自動的に取得するため、明示的な設定は不要です。設定ファイル、環境変数、インスタンスロールなど、複数の認証情報ソースをサポートしています。

Alibaba Cloud CLI を使用した認証情報の設定を推奨します。

aliyun configure

その他の認証情報の設定方法については、Alibaba Cloud CLI 認証情報の管理を参照してください。

2. サービスロールの付与(初回使用時に必須)

EMR Serverless Spark を使用する前に、アカウントに次の 2 つのロールを付与する必要があります(詳細はRAM 権限ポリシーを参照してください)。

ロール名種類説明
AliyunServiceRoleForEMRServerlessSparkサービスリンクロールEMR Serverless Spark サービスが、このロールを使用して他のクラウド製品のリソースにアクセスします
AliyunEMRSparkJobRunDefaultRoleジョブ実行ロールSpark ジョブが、実行中に OSS、DLF などのクラウドリソースにアクセスするためにこのロールを使用します

初回使用時は、EMR Serverless Spark コンソールからワンクリックで認可するか、RAM コンソールで手動作成できます。

3. RAM 権限

RAM ユーザーが EMR Serverless Spark を操作するには、対応する権限が必要です。詳細な権限ポリシー、具体的な Action の一覧、認可コマンドについては、RAM 権限ポリシーを参照してください。

4. OSS ストレージ

Spark ジョブでは通常、JAR パッケージ、Python スクリプト、出力データのために OSS ストレージが必要です。

# Check for available OSS Buckets
aliyun oss ls --user-agent AlibabaCloud-Agent-Skills/alibabacloud-emr-spark-manage

CLI/SDK による呼び出し

AI モードのライフサイクル

CLI コマンドを実行する前に、AI モードを有効にして User-Agent を設定する必要があります。ワークフローの終了後は、AI モードを無効にする必要があります。

# [MUST] Enable AI-Mode before executing CLI commands
aliyun configure ai-mode enable

# [MUST] Set User-Agent
aliyun configure ai-mode set-user-agent --user-agent "AlibabaCloud-Agent-Skills/alibabacloud-emr-spark-manage"

# ... execute CLI commands ...

# [MUST] Disable AI-Mode after workflow ends
aliyun configure ai-mode disable
呼び出し方法

すべての API のバージョンは 2023-08-08 で、プラグインモード(小文字とハイフンで構成されるコマンド名)を使用します。

# Using Alibaba Cloud CLI (plugin mode)
# Important:
#   1. Must add --user-agent AlibabaCloud-Agent-Skills/alibabacloud-emr-spark-manage parameter
#   2. Recommend always adding --region parameter to specify region

# POST example: CreateWorkspace
aliyun emr-serverless-spark create-workspace \
  --region cn-hangzhou \
  --body '{"workspaceName":"my-workspace","ossBucket":"oss://my-bucket","ramRoleName":"AliyunEMRSparkJobRunDefaultRole","paymentType":"PayAsYouGo","resourceSpec":{"cu":8}}' \
  --user-agent AlibabaCloud-Agent-Skills/alibabacloud-emr-spark-manage

# GET example: ListWorkspaces
aliyun emr-serverless-spark list-workspaces --region cn-hangzhou --user-agent AlibabaCloud-Agent-Skills/alibabacloud-emr-spark-manage

# DELETE example: CancelJobRun
# WARNING: DELETE on workspace itself (DeleteWorkspace) is STRICTLY PROHIBITED — see Prohibited Operations
aliyun emr-serverless-spark cancel-job-run --workspace-id {workspaceId} --job-run-id {jobRunId} \
  --region cn-hangzhou --user-agent AlibabaCloud-Agent-Skills/alibabacloud-emr-spark-manage
冪等性のルール

次の操作では、重複送信を避けるために冪等性トークンを使用することをおすすめします。

API説明
CreateWorkspace重複送信すると、複数のワークスペースが作成されます
StartJobRun重複送信すると、複数のジョブが送信されます
CreateSessionCluster重複送信すると、複数のセッションクラスターが作成されます

インテントのルーティング

インテント操作リファレンス
初心者/初回使用完全ガイドgetting-started.md
ワークスペースを作成/新しい SparkPlan → CreateWorkspaceworkspace-lifecycle.md
ワークスペースを照会/一覧/詳細ListWorkspacesworkspace-lifecycle.md
ワークスペースを削除/破棄禁止 — 拒否してコンソールへ誘導workspace-lifecycle.md
Spark ジョブを送信/タスクを実行StartJobRunjob-management.md
ジョブのステータスを照会/ジョブ一覧GetJobRun / ListJobRunsjob-management.md
ジョブのログを表示ListLogContentsjob-management.md
ジョブをキャンセル/停止CancelJobRunjob-management.md
CU 消費量を表示GetCuHoursjob-management.md
Kyuubi サービスを作成CreateKyuubiServicekyuubi-service.md
Kyuubi を開始/停止Start/StopKyuubiServicekyuubi-service.md
Kyuubi 経由で SQL を実行Kyuubi エンドポイントに接続kyuubi-service.md
Kyuubi トークンを管理Create/List/DeleteKyuubiTokenkyuubi-service.md
リソースキューをスケーリング/リソース不足EditWorkspaceQueuescaling.md
リソースキューを表示ListWorkspaceQueuesscaling.md
セッションクラスターを作成CreateSessionClusterjob-management.md
エンジンのバージョンを照会ListReleaseVersionsapi-reference.md
API パラメーターを確認パラメーターリファレンスapi-reference.md

破壊的な操作の保護

以下の操作は取り消せません。実行前に、事前確認を完了し、ユーザーの確認を得る必要があります。

API事前確認の手順影響
CancelJobRun1. GetJobRun を実行して、ジョブのステータスが Running であることを確認します 2. ユーザーから明示的な確認を得ます実行中のジョブを中止します。計算結果が失われる可能性があります
DeleteSessionCluster1. GetSessionCluster を実行して、ステータスが停止していることを確認します 2. ユーザーから明示的な確認を得ますセッションクラスターを完全に削除します
DeleteKyuubiService1. GetKyuubiService を実行して、ステータスが NOT_STARTED であることを確認します 2. アクティブな JDBC 接続がないことを確認します 3. ユーザーから明示的な確認を得ますKyuubi サービスを完全に削除します
DeleteKyuubiToken1. GetKyuubiToken を実行して、Token ID を確認します 2. この Token を使用する接続が中断される可能性があることを確認します 3. ユーザーから明示的な確認を得ますToken を削除します。この Token を使用する接続は認証に失敗します
StopKyuubiService1. アクティブな JDBC 接続がすべて切断されることをユーザーに伝えます 2. ユーザーから明示的な確認を得ますアクティブな JDBC 接続がすべて切断されます
StopSessionCluster1. セッションが終了することをユーザーに伝えます 2. ユーザーから明示的な確認を得ますセッションの状態が失われます
CancelKyuubiSparkApplication1. アプリケーション ID とステータスを確認します 2. ユーザーから明示的な確認を得ます実行中の Spark クエリを中止します

確認テンプレート:

実行しようとしています:<API>、対象:<Resource ID>、影響:<Description>。続行しますか?

禁止されている操作

リスク管理上の理由から、以下の操作はこのスキルではサポートされていません。ユーザーからこれらの操作をリクエストされた場合は、拒否し、コンソールを利用するよう案内してください。

操作応答
DeleteWorkspace(ワークスペースの削除/破棄)拒否します。ユーザーに次のように伝えてください:「このスキルではワークスペースの削除はサポートされていません。EMR Serverless Spark Console からワークスペースを削除してください。」

セキュリティガイドライン

ジョブ送信の保護

Spark ジョブを送信する前に、次のことを行う必要があります。

  1. ワークスペース ID とリソースキューを確認します
  2. コードタイプ codeType を確認します(必須:JAR / PYTHON / SQL)
  3. Spark パラメーターとメインプログラムのリソースを確認します
  4. 同等の spark-submit コマンドを表示します
  5. 送信前にユーザーから明示的な確認を得ます
タイムアウト制御
操作の種類タイムアウトの推奨値
読み取り専用クエリ30 秒
書き込み操作60 秒
ポーリング待機1 回の試行につき 30 秒、合計 30 分以内
エラー処理
エラーコード原因エージェントが実行すること
MissingParameter.regionIdCLI にデフォルトの Region が設定されておらず、--region も指定されていません--region cn-hangzhou パラメーターを追加します
ThrottlingAPI のレート制限再試行の前に 5~10 秒待機します。リクエストごとに最大 5 回まで再試行し、上限を超えた場合は直ちに停止してエラーを報告します
InvalidParameterパラメーターが無効ですエラーの Message を読み、パラメーターを修正します
Forbidden.RAMRAM 権限が不足しています不足している権限をユーザーに伝えます
OperationDenied操作が許可されていません現在のステータスを確認し、ユーザーに待機するよう伝えます
null(ErrorCode が空)存在しない、または権限のないワークスペースのサブリソースへのアクセス(List* タイプの API)ListWorkspaces を使用してワークスペース ID が正しいことを確認し、RAM 権限を確認します

⚠️ 最大再試行回数:同じリクエストで5 回連続して失敗した場合は、直ちに停止してください。再試行を続けないでください。エラーの詳細をユーザーに報告してください。

関連ドキュメント

コメント