すべてのプロダクト
Search
ドキュメントセンター

MaxCompute:コンピューティングリソースのクォータ活用

最終更新日:Mar 27, 2026

クォータグループ(クォータ)は、MaxCompute 内のコンピューティングリソースのプールであり、ご利用のコンピューティングジョブに CPU およびメモリを提供します。MaxCompute を使用すると、ジョブのリソース要件に応じて適切なクォータにジョブを割り当てることができ、リソースの効率的な利用が促進されます。

背景情報

MaxCompute のクォータは、以下の方法で使用できます。

  • プロジェクトをデフォルトのコンピューティングクォータに関連付けます。このプロジェクトで送信されたジョブは、そのクォータ内で実行されます。

  • ジョブレベルでコンピューティングクォータを指定します(クォータの使用)。これにより、単一のプロジェクトから複数のクォータ(サブスクリプションおよび従量課金の両方)にジョブを割り当てることができます。ジョブレベルで指定されたクォータは、プロジェクトのデフォルトクォータよりも優先されます。

  • クォータに対してルールを設定します。これにより、ルールの条件を満たすジョブを対象のクォータにスケジュールできます。

プロジェクトに対するデフォルトクォータの設定

プロジェクトに対してデフォルトのコンピューティングクォータを設定できます。このプロジェクトで開始されたジョブは、自動的にデフォルトクォータを使用して処理されます。プロジェクト作成時に、プロジェクトをデフォルトクォータに関連付けることができます。また、既存のプロジェクトについては、コンソールからデフォルトクォータを変更することも可能です。詳細については、「プロジェクトの管理」をご参照ください。

ジョブレベルでのクォータの指定

ジョブクエリの前にコマンドを追加することで、ジョブレベルでクォータを指定できます。この機能では、ジョブの所有者が指定したクォータを使用する権限を持っているかがチェックされます。

  1. クォータの作成

    新規コンソールでクォータを作成する方法については、「クォータの構成」をご参照ください。

    説明

    クォータ名には、英字と数字の組み合わせを使用することを推奨します。既存の中国語クォータ名も引き続き使用可能です。

  2. 権限の付与

    デフォルトでは、Alibaba Cloud アカウントを含むすべてのアカウントおよびロールに、ジョブレベルでクォータを指定する権限はありません。この権限を明示的に付与する必要があります。

    1. ロールの作成

      1. MaxCompute コンソールにログインし、左上隅からリージョンを選択します。

      2. 左側のナビゲーションウィンドウで、構成の管理 > テナント管理 を選択します。

      3. テナント管理 ページで、ロール管理 タブをクリックします。

      4. ロール管理 タブで、新しいロール をクリックします。新しいロール ダイアログボックスで、ロール名: および ポリシーの内容: を入力し、OK をクリックしてロールを作成します。

        {
            "Statement": [{
                    "Action": [
                        "odps:List",
                        "odps:Usage"],
                    "Effect": "Allow",
                    "Resource": ["acs:odps:*:regions/*/quotas/*"]}],
            "Version": "1"
        }
    2. ジョブレベルでクォータを指定する必要があるアカウントへのロールの割り当て

      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 ユーザーに権限を付与するには、以下の手順を実行します。

      1. MaxCompute コンソールにログインし、左上隅からリージョンを選択します。

      2. 左側のナビゲーションウィンドウで、構成の管理 > テナント管理 を選択します。

      3. テナント管理 ページで、ユーザー管理 タブをクリックします。

      4. ユーザー管理 タブで、対象の Resource Access Management (RAM) ユーザーの 操作 列にある ロールの変更 をクリックします。

      5. ロールの編集 ダイアログボックスで、追加するロール エリアからユーザーに割り当てるロールを選択し、役割追加 エリアに移動させ、OK をクリックします。

  3. ジョブに対するクォータの指定

    以下のコマンドをジョブクエリの前に追加して、クォータを指定します。

    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)の関係を持ちます。ジョブがクォータのいずれかのルールに一致した場合、ルールのモードに応じて、そのクォータで実行されるか、あるいはそのクォータの使用が禁止されます。

説明

今後のメンテナンスを容易にするため、過剰なルールを作成しないよう、慎重に使用してください。

  1. MaxCompute コンソールにログインし、左上隅からリージョンを選択します。

  2. 左側のナビゲーションウィンドウで、構成の管理 > クォータ管理 を選択します。

  3. クォータルールの設定 ダイアログボックスで、ルールの追加 をクリックするか、既存のルールの 操作 列にある クローニング をクリックして新しいルールを作成します。以下に示すパラメーターを構成します。

    • 単一のルール内で、複数のプロジェクト、ジョブタイプ、およびジョブ設定項目の条件は論理積(AND)の関係を持ちます。

    • ルールを追加してから、有効になるまでに約 5 分かかります。

    パラメーターの詳細を展開

    パラメーター

    説明

    ルール名

    • クォータルールのカスタム名です。

    • 名前は英字で始まり、英字、数字、およびアンダースコア (_) のみを含めることができます。

    ルールモード

    クォータルールの実行モードです。有効な値は以下のとおりです。

    • NORMAL:通常モード

      ジョブの特性がクォータルールと一致する場合、そのジョブは該当のクォータで実行されます。

      • ジョブがクォータルールと一致した場合、そのジョブは該当のクォータで実行されます。

      • ジョブが複数のクォータルールと同時に一致した場合、最も早く作成されたクォータで実行されます。

      • ジョブがどのクォータルールとも一致しなかった場合、プロジェクトのデフォルトクォータが使用されます(デフォルトクォータのルールに一致しなくても同様です)。

      • ジョブレベルで etl_1 のようなクォータが指定されている場合、ジョブが etl_1 のルールに一致しなくても、etl_1 クォータで実行されます。

    • EXCLUSIVE:排他モード

      ジョブの特性がこのルールと一致する場合にのみ、このクォータでジョブが実行されます。それ以外の場合は、このクォータの使用が禁止されます。

      通常モードとの違いを示す例は以下のとおりです。

      • たとえば、プロジェクトのデフォルトクォータ etl_2Project_2 に関連付けられており、etl_2 に排他モードのルールが設定されている場合、そのプロジェクトからのジョブはルールに一致しなければ etl_2 を使用できません。一致しないと送信が失敗します。通常モードでは、一致しなくても etl_2 を使用して etl_2 で実行できます。

      • etl_3 というクォータを set odps.task.wlm.quota=etl_3 (i.e. use quota etl_3) コマンドで指定し、etl_3 にジョブが一致しない排他モードのルールが設定されている場合、ジョブの送信は失敗します。一方、etl_3 に通常モードのルールのみが設定されている場合、ジョブは etl_3 で実行できます。

    • ANTI:禁止モード

      ジョブがこのルールと一致した場合、このクォータの使用が禁止されます。その後、ジョブはプロジェクトのデフォルトコンピューティングクォータにルーティングされます。デフォルトクォータがこの禁止クォータである場合、ジョブはリージョン内で利用可能な最も古いクォータ(従量課金クォータを含む)にスケジュールされます。

    重要

    排他モードおよび禁止モードのルールは、通常モードのルールよりも優先度が高くなります。ジョブがクォータ A の排他モードルールに一致しない場合、またはクォータ A の禁止モードルールに一致する場合、ジョブはクォータ A で実行されません。これは、ジョブがクォータ A の通常モードルールに一致する場合や、手動でクォータ A に割り当てられた場合でも同様です。

    プロジェクト

    ルールを適用するプロジェクトを選択します。最大 50 個のプロジェクトを選択できます。空欄のままにすると、ルールはすべてのプロジェクトに適用されます。

    ジョブタイプ

    ルールを適用するジョブタイプを選択します。

    有効な値:

    • SQL:SQL ジョブ

    • SQLRT:MaxCompute クエリアクセラレーション SQL ジョブ

    • SQLCost:SQL コスト見積もりジョブ

    • LOT:MapReduce ジョブ

    • CUPID:Spark または Mars ジョブ

    • AlgoTask:機械学習ジョブ

    • MaxFrame:MaxFrame 分散コンピューティングエンジンジョブ

    • Graph:グラフ計算ジョブ

    このパラメーターはデフォルトで空欄であり、すべてのジョブタイプにルールが適用されることを意味します。

    ジョブの優先順位

    • ルールを適用するジョブ優先度を入力します。

    • 0-9 の範囲で優先度を入力します。たとえば、[0,3] は、優先度 0、1、2、3 のジョブに一致します。

    • 空欄のままにすると、ルールはすべてのジョブ優先度に適用されます。

    Job Owner (アカウントID)

    • ルールを適用するジョブ所有者の UID を入力します。複数の UID は論理和(OR)の関係を持ちます。各 UID を改行で区切って入力します。最大 50 個の UID を入力できます。

    • RAM ユーザーの UID の場合、p4_ プレフィックスを付ける必要があります(例:p4_12344566777)。

    • 空欄のままにすると、ルールはすべてのジョブ所有者に適用されます。

    ジョブ設定

    • ジョブ設定項目からキーと値のペアを Key=Value の形式で入力します。引用符は不要です。複数のパラメーターは論理積(AND)の関係を持ちます。各ペアを改行で区切って入力します。最大 5 ペアを入力できます。

    • たとえば、DataWorks スケジューリングによって現在のクォータで実行されるすべてのデータバックフィルジョブを実行するには、ジョブ設定項目に SKYNET_DAGTYPE=3 を入力します。詳細については、「データバックフィルジョブの隔離」をご参照ください。

    • 空欄のままにすると、ルールはすべての設定項目に適用されます。

    以下のパラメーターのいずれか 1 つ以上を指定する必要があります:プロジェクト、ジョブタイプ、ジョブ優先度、ジョブ所有者(UID)、またはジョブ設定項目。空欄のままにしたパラメーターは、すべてのオプションに一致します。

ユースケース

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 です。

これらのルール条件を組み合わせることで、ジョブスケジューリングをより詳細に制御できます。