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

MaxCompute:計算リソースのクォータグループの使用

最終更新日:Jul 03, 2025

クォータグループ(Quota)は、計算ジョブに必要な CPU とメモリリソースを提供する MaxCompute の計算リソースプールです。MaxCompute では、ジョブの計算リソース要件に基づいて適切なクォータを指定できるため、計算リソースを効率的に使用できます。このトピックでは、MaxCompute クォータの使用方法について説明します。

背景情報

MaxCompute では、次のいずれかの方法でクォータグループの計算リソースを使用できます。

  • プロジェクトのデフォルトのクォータグループを指定します。この方法では、プロジェクトでコミットされたすべてのジョブが、計算にこのクォータグループを使用します。

  • ジョブレベルでクォータグループを指定します。この方法では、計算のためにプロジェクト内のジョブに異なるクォータグループを指定できます。クォータグループは、サブスクリプションクォータグループと従量課金制クォータグループに分類されます。ジョブレベルで指定されたクォータグループの優先度は、プロジェクトのデフォルトのクォータグループの優先度よりも高くなります。

  • クォータグループのルールを構成します。この方法では、指定されたルールを満たすジョブを、関連するクォータグループにスケジュールできます。

プロジェクトのデフォルトクォータグループを指定する

プロジェクトのデフォルトクォータグループを指定すると、このプロジェクトで開始されたジョブは、デフォルトで計算にデフォルトクォータグループの計算リソースを使用します。追加の設定を行う必要はありません。プロジェクトを作成するときに、プロジェクトのデフォルトクォータグループを指定できます。また、MaxCompute コンソールの [プロジェクト] ページでプロジェクトを見つけて、[操作] 列の [クォータグループの切り替え] をクリックして、プロジェクトのデフォルトクォータグループを変更することもできます。詳細については、「プロジェクトを構成する」をご参照ください。

ジョブレベルでクォータグループを指定する

ジョブの SQL 文の前に SET コマンドを追加して、ジョブのクォータグループを指定できます。この機能は、ジョブ所有者がクォータグループを使用する権限を持っているかどうかを確認します。このセクションでは、手順について説明します。

  1. クォータグループを作成します。

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

    説明

    クォータグループ名を指定するときは、文字と数字の組み合わせを使用することをお勧めします。既存の中国語のクォータグループ名は引き続き使用できます。

  2. 必要な権限を付与します。

    デフォルトでは、すべての Alibaba Cloud アカウント、RAM ユーザー、およびロールには、ジョブのクォータグループを指定する権限がありません。アカウントは、必要な権限が付与された後にのみ、ジョブのクォータグループを指定するために使用できます。

    1. ロールを作成します。

      1. MaxCompute コンソール にログインします。上部のナビゲーションバーで、リージョンを選択します。

      2. 左側のナビゲーションウィンドウで、[テナント] > [ロール] を選択します。

      3. [ロール] ページで、[ロールの追加] をクリックします。

      4. [ロールの追加] ダイアログボックスで、[ロール名] パラメータを構成し、次のポリシードキュメントを入力します。

        {
            "Statement": [{
                    "Action": [
                        "odps:List",
                        "odps:Usage"],
                    "Effect": "Allow",
                    "Resource": ["acs:odps:*:regions/*/quotas/*"]}],
            "Version": "1"
        }

        次の表は、サンプルコードのパラメータについて説明しています。

        パラメータ

        説明

        Action

        許可または拒否される操作。ビジネス要件に基づいて、単一の承認操作に複数の操作を指定できます。複数の操作を指定する場合は、操作をコンマ(,)で区切ります。サポートされている操作の詳細については、「MaxCompute 権限」をご参照ください。

        説明

        ポリシーパラメータの詳細については、「ポリシーの基本要素」をご参照ください。

        Resource

        承認されたリソース範囲。このパラメータは、["acs:odps:Tenant/${tenant_id}:regions/${region_id}/quotas/${quota_name}"] 形式で構成します。

        ["acs:odps:*:regions/*/quotas/*"] は、現在のテナントのすべてのリージョンのすべてのクォータグループを指定します。ビジネス要件に基づいて、特定のリージョンと特定のクォータグループを指定できます。

      5. [OK] をクリックします。

    2. ジョブレベルでクォータグループを指定するために使用するアカウントに、作成したロールを割り当てます。

      説明

      デフォルトでは、テナントレベルの Super_Administrator ロールが割り当てられている Alibaba Cloud アカウントまたは RAM ユーザーは、承認操作を実行できます。

      承認操作は、権限が付与されるオブジェクトのタイプによって異なります。

      • Alibaba Cloud アカウント

        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 ユーザー

        1. MaxCompute コンソール の左側のナビゲーションウィンドウで、[テナント] > [ユーザー] を選択します。

        2. [ユーザー] ページで、必要な RAM ユーザーを見つけて、[操作] 列の [ロールの変更] をクリックします。

        3. [ロールの編集] ダイアログボックスで、[使用可能なロール] セクションで必要なロールを選択して、[追加されたロール] セクションにロールを追加します。

        4. [OK] をクリックします。

  3. ジョブのクォータを指定します。

    以前に作成したクォータをジョブに指定するには、ジョブの SQL 文の前に次のコマンドを追加します。

    set odps.task.wlm.quota=<quotaname>; 

    quotaname は、クォータの名前を指定します。このパラメーターは、バッチ処理タイプのクォータに対してのみ有効です。

    説明

    Spark ジョブのクォータを指定する場合は、構成 odps.task.wlm.quota = <quotaname> を追加する必要があります。

    MaxCompute Query Acceleration (MCQA) ジョブの場合は、次の点に注意してください。

    • 上記のコマンドを使用してインタラクティブクォータを直接指定することはできません。インタラクティブクォータは、MCQA が有効になっている場合にのみ、システムによって自動的に選択できます。詳細については、「MaxCompute Query Acceleration」をご参照ください。

    • set odps.task.wlm.quota=<quotaname>; コマンドを実行して MCQA ジョブのクォータを指定すると、ジョブがインタラクティブクォータで実行できなかった場合、quotaname で指定されたクォータで実行するようにロールバックされます。この場合、quotaname で指定されたクォータは MCQA ジョブのクォータとして選択されません。したがって、MCQA ジョブは、MCQA ジョブが実行されるプロジェクトに関連付けられたデフォルトのコンピューティングクォータのリソースを引き続き消費します。

    • odps.task.wlm.quota パラメーターを明示的に指定しない場合、インタラクティブタスクは クォータルール で指定されたクォータにロールバックしようとします。クォータルール が構成されていない場合、タスクはプロジェクトのデフォルトクォータにロールバックします。

クォータルール

MaxCompute では、クォータルールを構成できます。この方法では、ルールを満たすジョブを、関連するクォータを使用するようにスケジュールできます。

制限

  • MaxCompute の従量課金制スポットエディションで作成されたレベル 2 クォータとサブスクリプションレベル 2 クォータのルールを構成できます。

  • レベル 2 クォータごとに最大 10 個のルールを構成できます。

  • 各ルールの [プロジェクト] フィールドと [ジョブ所有者] フィールドには、それぞれ最大 50 個のアイテムを設定できます。これは、1 つのルールに最大 50 個のプロジェクトと 50 人のジョブ所有者 (UID) を設定できることを意味します。

  • ルールごとに、[ジョブ設定] フィールドに最大 5 つのキーと値のペアを入力できます。

  • ルールごとの [ジョブの優先度] パラメータの有効な値:[0, 9]

クォータルールの構成

クォータルールは、構成後に有効になります。不要なルールは削除できます。複数のルールは OR 関係にあります。ジョブがクォータのルールのいずれかと一致する場合、ジョブはルールモードに基づいてクォータを使用するようにスケジュールされるか、クォータの使用を禁止されます。

説明

クォータルール、特に [ジョブ設定] フィールドで構成したルールは柔軟です。ルールが多すぎることによる O&M の困難を防ぐため、必要なルールのみを構成することをお勧めします。

  1. MaxCompute コンソール にログインします。上部のナビゲーションバーで、リージョンを選択します。

  2. 左側のナビゲーションウィンドウで、[ワークスペース] > [クォータ] を選択します。

  3. [クォータ] ページで、目的のレベル 1 クォータを見つけて、レベル 1 クォータの左側の 列表 アイコンをクリックして、クォータのレベル 2 クォータを展開します。

  4. 管理するレベル 2 クォータを見つけて、[操作] 列の [ルールの構成] をクリックします。

  5. [クォータルールの構成] ダイアログボックスで、[ルールの追加] をクリックするか、既存のルールを見つけて [操作] 列の [複製] をクリックして、ルールを作成します。

    説明
    • ルールで構成された複数のプロジェクト、ジョブタイプ、およびジョブ設定の間には、AND 関係があります。

    • ルールは、構成後約 5 分で有効になります。

    次の表は、[ルールの追加] ダイアログボックスのパラメータについて説明しています。

    パラメータ

    説明

    ルール名

    カスタムクォータルールの名前。

    名前には、文字、数字、アンダースコア(_)のみを含めることができ、文字で始める必要があります。

    ルールモード

    クォータルールのモード。有効な値:

    • NORMAL:通常モード。

      このモードでは、ジョブの特性に基づいてクォータを使用するようにジョブをスケジュールするための次のメカニズムが提供されます。

      • ジョブがクォータのルールと一致する場合、ジョブはそのクォータを使用するようにスケジュールされます。

      • ジョブが同時に複数のクォータルールと一致する場合、ジョブは最も早く作成されたクォータを使用するようにスケジュールされます。

      • ジョブがいずれのクォータルールとも一致しない場合、ジョブがデフォルトクォータのルールと一致するかどうかに関係なく、ジョブはプロジェクトのデフォルトクォータを使用します。

      • ジョブレベルに基づいてジョブに etl_1 クォータが指定されている場合、ジョブが etl_1 クォータのルールと一致するかどうかに関係なく、ジョブは etl_1 クォータを使用するようにスケジュールされます。

    • EXCLUSIVE:排他モード。

      ジョブの特性に基づいてジョブがクォータの排他モードのルールと一致する場合、ジョブはそのクォータを使用するようにスケジュールされます。そうでない場合、ジョブはそのクォータを使用するようにスケジュールできません。

      次の例は、通常モードと排他モードの違いを示しています。

      • たとえば、etl_2 クォータは Project_2 プロジェクトに関連付けられたデフォルトクォータであり、etl_2 クォータには排他モードで実行されるルールが構成されています。Project_2 プロジェクトによって開始されたジョブが etl_2 クォータのルールと一致しない場合、ジョブにはデフォルトクォータを選択できません。この場合、ジョブの送信時にエラーが報告されます。ただし、etl_2 クォータに通常モードで実行されるルールのみを構成した場合、ジョブは etl_2 クォータを使用するようにスケジュールできます。

      • たとえば、set odps.task.wlm.quota=etl_3 (つまり、クォータ etl_3 を使用する) コマンドを実行して、ジョブの etl_3 クォータを指定します。etl_3 クォータに排他モードで実行されるルールが構成されているが、ジョブがルールと一致しない場合、ジョブの送信時にエラーが報告されます。ただし、etl_3 クォータに通常モードで実行されるルールのみを構成した場合、ジョブは etl_3 クォータを使用するようにスケジュールできます。

    • ANTI:禁止モード。

      ジョブの特性に基づいてジョブがクォータの禁止モードのルールと一致する場合、ジョブはそのクォータの使用を禁止されます。ジョブは、ジョブが属するプロジェクトのデフォルトクォータグループを使用するように優先的にスケジュールされます。プロジェクトのデフォルトの計算クォータがジョブの使用を禁止されているクォータである場合、ジョブは現在のリージョンで最も早く作成されたクォータを使用するようにスケジュールされます。従量課金制クォータが含まれます。

    重要

    排他モードで実行されるルールと禁止モードで実行されるルールは、通常モードで実行されるルールよりも優先度が高くなります。ジョブがクォータ A の排他モードのルールと一致しない場合、または禁止モードのルールと一致する場合、ジョブがクォータ A の通常モードのルールと一致するか、またはクォータ A を使用するように手動で指定されているかどうかに関係なく、ジョブはクォータ A を使用するようにスケジュールできません。

    プロジェクト

    ルールで構成するプロジェクト。最大 50 個のプロジェクトを構成できます。オプションが選択されていない場合、すべてのプロジェクトが含まれます。

    ジョブタイプ

    ルールで構成するジョブのタイプ。

    有効な値:

    • SQL:SQL ジョブ

    • SQLRT:MaxCompute MCQA SQL ジョブ

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

    • LOT:MapReduce ジョブ

    • CUPID:Spark または Mars ジョブ

    • AlgoTask:Platform for AI (PAI) ジョブ

    オプションが選択されていない場合、すべてのジョブタイプが含まれます。

    ジョブの優先度

    ルールで構成する必要があるジョブの優先度を入力します。0 ~ 9 の優先度範囲を入力します。たとえば、[0,3] は、優先度が 0、1、2、3 のジョブを示します。オプションが選択されていない場合、すべての優先度が含まれます。

    ジョブ所有者(アカウント ID)

    ルールで構成するジョブ所有者のユーザー ID。最大 50 個のユーザー ID を入力できます。複数のユーザー ID は OR 関係にあります。各ユーザー ID は 1 行を占めます。

    RAM ユーザーのユーザー ID に p4_ プレフィックスを追加する必要がある場合、ユーザー ID は p4_12344566777 です。RAM ロールのユーザー ID に v4_ プレフィックスを追加する必要がある場合、ユーザー ID は v4_12344566776 です。

    オプションが選択されていない場合、すべてのジョブ所有者が含まれます。

    ジョブ設定

    Key=Value 形式の 1 つ以上のキーと値のペアを入力できます。引用符は必要ありません。複数のキーと値のペアは AND 関係にあります。各キーと値のペアは 1 行を占めます。最大 5 つのキーと値のペアを入力できます。

    たとえば、現在のクォータで DataWorks の自動トリガータスクによって開始されたすべてのデータバックフィルジョブを実行する場合は、[ジョブ設定] フィールドに SKYNET_DAGTYPE=3 と入力します。詳細については、「データバックフィルジョブの分離」をご参照ください。

    オプションが選択されていない場合、すべての設定が含まれます。

    プロジェクトでは、これらのパラメータの少なくとも 1 つが空であってはなりません:ジョブタイプ、ジョブの優先度、ジョブ所有者(UID)、およびジョブ設定。空のパラメータは、すべてのオプションが一致することを示します。

  6. [OK] をクリックします。

  • MCQA ジョブのスケジュール

    • 加速クォータとロールバッククォータ

      MCQA ジョブには、加速クォータとロールバッククォータが必要です。加速クォータは インタラクティブ タイプであり、ロールバッククォータは バッチ タイプです。加速クォータを使用するジョブがタイムアウトした場合、またはジョブタイプなどの理由でジョブが加速クォータの使用を拒否された場合、システムはロールバッククォータでジョブを再送信します。クォータルールを作成して、プロジェクトまたはジョブ所有者を加速クォータとロールバッククォータの両方に追加し、上記のロジックを実装できます。

    • プロジェクトまたはジョブ所有者別に 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 のベースライン優先度

  • 異なるロールによって開始されたジョブの分離

    データ分析ジョブ、スケジュールされたレポートジョブ、データバックフィルジョブなどのジョブは、異なるビジネス担当者によって開始される場合があります。ジョブは、異なるリソースバジェットを持つ異なる部門から発生する場合もあります。したがって、異なるロールによって開始されたジョブが異なるクォータを使用できるように、複数のクォータを作成する必要があります。

    ほとんどの場合、プロジェクトジョブ所有者(アカウント ID)ジョブタイプジョブの優先度ジョブ設定 のパラメータに基づいてジョブのロールを識別できます。

    • 異なるロールによって開始されたジョブが異なるプロジェクトを使用する場合、目的のクォータに作成するルールで、プロジェクト パラメータを必要なプロジェクトの名前に設定できます。

    • 異なるロールによって開始されたジョブが異なるユーザーによって送信される場合、目的のクォータに作成するルールで、ジョブ所有者(アカウント ID) フィールドにジョブ所有者のユーザー ID を入力できます。

    • 異なるロールによって開始されたジョブの設定が異なる場合、ジョブ設定 を構成して、ジョブのロールを区別できます。ジョブ設定 は、ジョブとともに送信される SET xxx=xxx; 文を指定します。SET 文は、カスタム文と自動的に追加される文に分類されます。たとえば、ジョブが DataWorks を使用して開始された場合、ジョブの識別に役立つ特定のパラメータが自動的に構成されます。

    • 異なるロールが異なるジョブタイプを送信する場合、ジョブタイプ パラメータの値に基づいてジョブタイプを識別できます。たとえば、PAI を使用して送信された PAI ジョブの ジョブタイプ パラメータの値は ALGO であり、MaxCompute を使用して送信された通常の SQL クエリジョブの ジョブタイプ パラメータの値は SQL です。

    上記のルールを一緒に使用して、よりきめ細かいジョブスケジューリングを実行できます。