クォータグループ(クォータ)は、MaxCompute 内のコンピューティングリソースのプールであり、ご利用のコンピューティングジョブに CPU およびメモリを提供します。MaxCompute を使用すると、ジョブのリソース要件に応じて適切なクォータにジョブを割り当てることができ、リソースの効率的な利用が促進されます。
背景情報
MaxCompute のクォータは、以下の方法で使用できます。
プロジェクトをデフォルトのコンピューティングクォータに関連付けます。このプロジェクトで送信されたジョブは、そのクォータ内で実行されます。
ジョブレベルでコンピューティングクォータを指定します(クォータの使用)。これにより、単一のプロジェクトから複数のクォータ(サブスクリプションおよび従量課金の両方)にジョブを割り当てることができます。ジョブレベルで指定されたクォータは、プロジェクトのデフォルトクォータよりも優先されます。
クォータに対してルールを設定します。これにより、ルールの条件を満たすジョブを対象のクォータにスケジュールできます。
プロジェクトに対するデフォルトクォータの設定
プロジェクトに対してデフォルトのコンピューティングクォータを設定できます。このプロジェクトで開始されたジョブは、自動的にデフォルトクォータを使用して処理されます。プロジェクト作成時に、プロジェクトをデフォルトクォータに関連付けることができます。また、既存のプロジェクトについては、コンソールからデフォルトクォータを変更することも可能です。詳細については、「プロジェクトの管理」をご参照ください。
ジョブレベルでのクォータの指定
ジョブクエリの前にコマンドを追加することで、ジョブレベルでクォータを指定できます。この機能では、ジョブの所有者が指定したクォータを使用する権限を持っているかがチェックされます。
クォータの作成
新規コンソールでクォータを作成する方法については、「クォータの構成」をご参照ください。
説明クォータ名には、英字と数字の組み合わせを使用することを推奨します。既存の中国語クォータ名も引き続き使用可能です。
権限の付与
デフォルトでは、Alibaba Cloud アカウントを含むすべてのアカウントおよびロールに、ジョブレベルでクォータを指定する権限はありません。この権限を明示的に付与する必要があります。
ロールの作成
MaxCompute コンソールにログインし、左上隅からリージョンを選択します。
左側のナビゲーションウィンドウで、 を選択します。
テナント管理 ページで、ロール管理 タブをクリックします。
ロール管理 タブで、新しいロール をクリックします。新しいロール ダイアログボックスで、ロール名: および ポリシーの内容: を入力し、OK をクリックしてロールを作成します。
{ "Statement": [{ "Action": [ "odps:List", "odps:Usage"], "Effect": "Allow", "Resource": ["acs:odps:*:regions/*/quotas/*"]}], "Version": "1" }
ジョブレベルでクォータを指定する必要があるアカウントへのロールの割り当て
Alibaba Cloud アカウントまたは Super_Administrator 権限を持つ RAM ユーザーが、これらの権限を付与できます。
権限付与の手順は、アカウントの種類によって異なります。
Alibaba Cloud アカウントへの権限付与
Alibaba Cloud アカウントに権限を付与するには、以下のコマンドを実行します。
-- Alibaba Cloud アカウントをテナントに追加し、テナントロールをアカウントに付与します。 ADD TENANT USER <Aliyun$xxxx>; GRANT TENANT ROLE <role_name> TO USER <Aliyun$xxxx>; -- テナントロールまたはテナントユーザーの権限を表示します。 SHOW GRANTS FOR TENANT ROLE <role_name>; SHOW GRANTS FOR TENANT USER <user_name>; SHOW PRINCIPALS FOR TENANT [ROLE] <role_name>;RAM ユーザーへの権限付与
RAM ユーザーに権限を付与するには、以下の手順を実行します。
MaxCompute コンソールにログインし、左上隅からリージョンを選択します。
左側のナビゲーションウィンドウで、 を選択します。
テナント管理 ページで、ユーザー管理 タブをクリックします。
ユーザー管理 タブで、対象の Resource Access Management (RAM) ユーザーの 操作 列にある ロールの変更 をクリックします。
ロールの編集 ダイアログボックスで、追加するロール エリアからユーザーに割り当てるロールを選択し、役割追加 エリアに移動させ、OK をクリックします。
ジョブに対するクォータの指定
以下のコマンドをジョブクエリの前に追加して、クォータを指定します。
SET odps.task.wlm.quota = <quota_nick_name>;quota_nick_name パラメーターは、クォータのニックネームを指定します。この設定は、バッチ処理向けのクォータにのみ適用されます。
Spark ジョブ の場合、
spark.hadoop.odps.task.wlm.quota構成を追加し、その値を<quota_nick_name>に設定する必要があります。MaxCompute クエリアクセラレーション (MCQA) ジョブの場合、以下の点にご注意ください。
前述のコマンドを直接使用してインタラクティブクォータを指定することはできません。システムは、クエリアクセラレーションモードを有効化した場合にのみ、インタラクティブクォータを自動的に選択します。詳細については、「MaxCompute クエリアクセラレーション (MCQA)」をご参照ください。
set odps.task.wlm.quota=<quota_nick_name>;コマンドで指定されたクォータは、フォールバッククォータです。つまり、タスクがインタラクティブクォータで実行できなかった場合、そのタスクはquota_nick_nameクォータへフォールバックして実行され、アクセラレーションクォータがquota_nick_nameを選択するわけではありません。したがって、正常にアクセラレーションされたジョブで消費されたリソースは、依然としてジョブが実行されるプロジェクトにバインドされたデフォルトのコンピューティングクォータに対して課金されます。odps.task.wlm.quotaパラメーターを明示的に指定しない場合、インタラクティブジョブはまずクォータルールで指定されたクォータへフォールバックしようと試みます。クォータルールが設定されていない場合は、プロジェクトのデフォルトクォータへフォールバックします。
クォータルール
MaxCompute では、クォータに対してルールを構成できます。ルールの条件を満たすジョブは、対応するクォータで実行されるようにスケジュールされます。
制限事項
サブスクリプションおよび従量課金(標準およびアイドル)のレベル 2 クォータに対して、ルールを構成できます。
各レベル 2 クォータに対して、最大 10 個のルールを構成できます。
各ルールについて、プロジェクト および ジョブ所有者 パラメーターに最大 50 個のオブジェクトを入力できます。つまり、1 つのルールは最大 50 のプロジェクトおよび 50 のジョブ所有者(UID)に適用できます。
各ルールについて、ジョブ設定項目に最大 5 つのキーと値のペアを入力できます。
各ルールについて、ジョブ優先度の有効値範囲は
[0, 9]です。
クォータルールの構成
構成されたすべてのクォータルールはアクティブです。不要なルールは削除できます。複数のルールは論理和(OR)の関係を持ちます。ジョブがクォータのいずれかのルールに一致した場合、ルールのモードに応じて、そのクォータで実行されるか、あるいはそのクォータの使用が禁止されます。
今後のメンテナンスを容易にするため、過剰なルールを作成しないよう、慎重に使用してください。
MaxCompute コンソールにログインし、左上隅からリージョンを選択します。
左側のナビゲーションウィンドウで、 を選択します。
クォータルールの設定 ダイアログボックスで、ルールの追加 をクリックするか、既存のルールの 操作 列にある クローニング をクリックして新しいルールを作成します。以下に示すパラメーターを構成します。
単一のルール内で、複数のプロジェクト、ジョブタイプ、およびジョブ設定項目の条件は論理積(AND)の関係を持ちます。
ルールを追加してから、有効になるまでに約 5 分かかります。
ユースケース
MCQA ジョブのスケジューリング
MaxCompute クエリアクセラレーションジョブのスケジューリング
アクセラレーションクォータおよびフォールバッククォータ
MCQA ジョブには、2 つのクォータが必要です。
アクセラレーションクォータ(インタラクティブ タイプ)
フォールバッククォータ(バッチ処理 タイプ)
これを実現するには、プロジェクトまたはジョブ所有者をアクセラレーションクォータおよびフォールバッククォータの両方に関連付けるクォータルールを構成します。
プロジェクト、ジョブ所有者、またはその他の基準に基づいて MCQA を有効化
インタラクティブ タイプのクォータを作成する際、異なるクォータに対して異なる
ProjectListルール条件を構成できます。これにより、プロジェクト単位で インタラクティブ クォータを有効化できます。
データバックフィルジョブの隔離
データバックフィルジョブの隔離
データバックフィルジョブは、過去の履歴データを再生成するためにジョブを再実行するものであり、特に長期間にわたる場合、大量のコンピューティングリソースを消費します。日常的なジョブの正常な運用に影響を与えないよう、データバックフィルジョブ専用のクォータを、特定のルールとともに作成することを推奨します。
たとえば、DataWorks でスケジュールされたタスクは、データバックフィルジョブを開始する際に、常に SKYNET_DAGTYPE:3 パラメーターを ジョブ設定項目 に渡します。この動作を利用して、以下のクォータルールを構成できます。
refillという名前のクォータを作成し、refillクォータのルールを構成します。DataWorks によって開始されるすべてのデータバックフィルジョブをデフォルトでrefillクォータで実行させるには、通常モードのルールを構成します。この場合、ジョブ設定項目 にSKYNET_DAGTYPE=3を入力します。さらに細かい構成も可能です。たとえば、
P1プロジェクトから開始されるデータバックフィルジョブのうち、ジョブ優先度 が5 ~ 9のものだけをrefillクォータで実行させたい場合、通常モードのルールを構成し、プロジェクトにP1を選択し、優先度に[5,9]を入力し、ジョブ設定項目 にSKYNET_DAGTYPE=3を入力します。説明ここでいう優先度は、DataWorks のベースライン優先度ではなく、MaxCompute のジョブ優先度です。変換式は次のとおりです:
MaxCompute 優先度 = 9 - DataWorks ベースライン優先度。
役割別のジョブ隔離
役割別のジョブ隔離
複数のクォータを作成して、役割別のジョブを隔離できます。
通常、以下のディメンションを組み合わせることで、ジョブの役割を区別できます:プロジェクト、ジョブ所有者、ジョブタイプ、優先度、および ジョブ設定項目。
異なる役割のジョブが 異なるプロジェクト を使用する場合:
目的のクォータのルールの プロジェクト フィールドにプロジェクト名を追加できます。
異なる役割のジョブが 異なるユーザー によって送信される場合:
目的のクォータのルールの ジョブ所有者 フィールドにジョブ所有者の UID を追加できます。
異なる役割のジョブが 異なる構成 を持つ場合:
ジョブ設定項目 を使用して役割を区別できます。ジョブ設定項目 とは、ジョブとともに送信される
set xxx=xxx;文を指します。これらはカスタム定義可能であり、システムによって追加されることもあります。たとえば、DataWorks から送信されるジョブには、識別パラメーターが自動的に含まれます。異なる役割が 異なるジョブタイプ を送信する場合:
ジョブタイプ を使用して区別できます。たとえば、PAI プラットフォームから送信される機械学習ジョブの ジョブタイプ は
ALGOです。MaxCompute 経由で送信される標準 SQL クエリの ジョブタイプ はSQLです。
これらのルール条件を組み合わせることで、ジョブスケジューリングをより詳細に制御できます。