Ketika beberapa tim atau workload berbagi tenant MaxCompute, resource komputasi dapat menjadi bottleneck—pipeline ETL bersaing dengan kueri ad hoc, dan satu pekerjaan berat saja dapat menghabiskan resource sehingga pekerjaan lain kekurangan resource. Quota group memungkinkan Anda membagi CPU dan memori ke dalam pool bernama serta mengarahkan setiap pekerjaan ke pool yang tepat secara otomatis, sehingga menjamin performa yang dapat diprediksi dan isolasi resource tanpa intervensi manual per pekerjaan.
Cara kerja penugasan quota
MaxCompute menentukan quota group yang digunakan oleh suatu pekerjaan berdasarkan urutan prioritas berikut:
| Prioritas | Metode penugasan | Deskripsi |
|---|---|---|
| 1 (tertinggi) | Perintah SET tingkat pekerjaan | Menetapkan quota secara eksplisit ke satu pekerjaan menggunakan set odps.task.wlm.quota |
| 2 | Pencocokan aturan quota | Mengarahkan pekerjaan secara otomatis berdasarkan karakteristik seperti project, jenis pekerjaan, pemilik pekerjaan, dan pengaturan pekerjaan |
| 3 (terendah) | Quota default project | Diterapkan ketika tidak ada perintah tingkat pekerjaan yang ditetapkan dan tidak ada aturan quota yang cocok |
Ketiga metode tersebut dapat digunakan bersamaan. Penugasan tingkat pekerjaan selalu menggantikan aturan quota, yang pada gilirannya menggantikan quota default project.
Menetapkan quota default ke project
Jika sebuah project memiliki quota default, semua pekerjaan yang dikirim dari project tersebut akan secara otomatis menggunakan resource komputasinya—tanpa perlu konfigurasi per pekerjaan.
Tetapkan quota default saat membuat project atau ubah setelahnya:
Masuk ke Konsol MaxComputeKonsol MaxCompute dan pilih wilayah.
Di panel navigasi sebelah kiri, klik Workspace.
Di halaman Projects, temukan project tersebut dan klik Switch quota group di kolom Actions.
Untuk detailnya, lihat Konfigurasi project.
Menetapkan quota pada tingkat pekerjaan
Tambahkan perintah SET sebelum pernyataan SQL untuk menetapkan quota tertentu ke pekerjaan tersebut. Penetapan ini memiliki prioritas lebih tinggi daripada aturan quota maupun quota default project.
Prasyarat
Sebelum memulai, pastikan Anda telah:
Membuat quota group di MaxCompute (lihat Konfigurasi quota)
Mendapatkan izin yang diperlukan untuk akun pemilik pekerjaan
Langkah 1: Memberikan izin
Secara default, tidak ada Akun Alibaba Cloud, RAM user, atau RAM role yang memiliki izin untuk menentukan quota pada tingkat pekerjaan. Berikan izin terlebih dahulu sebelum menetapkan quota.
Hanya Akun Alibaba Cloud atau RAM user yang diberi peran Super_Administrator tingkat tenant yang dapat melakukan operasi otorisasi ini.
Buat peran dengan izin quota:
Masuk ke Konsol MaxComputeKonsol MaxCompute dan pilih wilayah.
Di panel navigasi sebelah kiri, pilih Tenants > Roles.
Pada halaman Roles, klik Add Role.
Pada kotak dialog Add Role, masukkan nama peran dan Kebijakan berikut:
Parameter Deskripsi ActionAksi yang diizinkan. odps:Listdanodps:Usagewajib disertakan. Pisahkan beberapa aksi dengan koma. Untuk detailnya, lihat Izin MaxCompute dan Elemen kebijakan.ResourceQuota group yang diberi otorisasi. Format: ["acs:odps:Tenant/${tenant_id}:regions/${region_id}/quotas/${quota_name}"]. Nilai wildcard["acs:odps:*:regions/*/quotas/*"]memberikan akses ke semua quota group di semua wilayah untuk tenant saat ini.{ "Statement": [{ "Action": [ "odps:List", "odps:Usage"], "Effect": "Allow", "Resource": ["acs:odps:*:regions/*/quotas/*"]}], "Version": "1" }Klik OK.
Tetapkan peran tersebut ke akun yang akan menentukan quota:
Untuk Akun Alibaba Cloud, jalankan perintah berikut:
-- Tambahkan Akun Alibaba Cloud ke tenant dan tetapkan peran. Add tenant user <Aliyun$xxxx>; Grant tenant role <role_name> to user <Aliyun$xxxx>; -- Verifikasi izin yang telah diberikan. Show grants for tenant role <role_name>; Show grants for tenant user <user_name>; Show principals for tenant [role] <role_name>;Untuk RAM user:
Di panel navigasi sebelah kiri Konsol MaxComputeKonsol MaxCompute, pilih Tenants > Users.
Temukan RAM user tersebut dan klik Modify Role di kolom Actions.
Di kotak dialog Edit Role, pindahkan peran yang diperlukan dari Available Roles ke Added Roles.
Klik OK.
ID RAM user menggunakan awalanp4_(misalnya,p4_12344566777). ID RAM role menggunakan awalanv4_(misalnya,v4_12344566776).
Langkah 2: Menetapkan quota ke pekerjaan
Tambahkan perintah berikut sebelum pernyataan SQL pekerjaan:
set odps.task.wlm.quota=<quota_name>;Ganti <quota_name> dengan nama quota group. Gunakan kombinasi huruf dan angka untuk nama quota group. Nama quota group dalam bahasa Tionghoa yang sudah ada masih dapat digunakan. Parameter ini hanya berlaku untuk quota pemrosesan batch.
Untuk pekerjaan Spark, tambahkan odps.task.wlm.quota=<quota_name> sebagai parameter konfigurasi pekerjaan.Catatan penggunaan untuk pekerjaan MaxCompute Query Acceleration (MCQA)
MaxCompute Query Acceleration (MCQA) menggunakan dua jenis quota: acceleration quota (tipe interaktif) untuk eksekusi cepat, dan rollback quota (tipe batch) sebagai cadangan.
Sistem memilih acceleration quota secara otomatis saat MCQA diaktifkan. Perintah SET tidak dapat langsung menetapkan quota interaktif ke pekerjaan MCQA.
Jika Anda menjalankan
set odps.task.wlm.quota=<quota_name>;untuk pekerjaan MCQA,<quota_name>berfungsi sebagai tujuan rollback jika quota interaktif gagal—bukan sebagai quota utama pekerjaan tersebut. Pekerjaan MCQA tetap mengonsumsi resource dari quota komputasi default project.Jika
odps.task.wlm.quotatidak ditetapkan, pekerjaan interaktif yang gagal akan fallback ke quota yang ditentukan oleh aturan quota. Jika tidak ada aturan quota yang cocok, maka akan fallback ke quota default project.
Untuk informasi lebih lanjut, lihat MaxCompute Query Acceleration.
Konfigurasi aturan quota
Aturan quota mengarahkan pekerjaan secara otomatis ke quota yang tepat berdasarkan karakteristik pekerjaan—tanpa memerlukan perintah SET per pekerjaan. Fitur ini berguna ketika Anda perlu mengisolasi workload seperti pekerjaan ETL dari kueri ad hoc, atau memisahkan pekerjaan berdasarkan tim atau project.
Contohnya: Anda memiliki pekerjaan pengisian ulang data (data backfill) berat yang mengonsumsi banyak resource. Daripada mengandalkan masing-masing engineer untuk menetapkan quota yang tepat untuk setiap pekerjaan, konfigurasikan aturan quota yang secara otomatis mengarahkan semua pekerjaan backfill ke quota khusus refill—sehingga pekerjaan analitik harian Anda tidak terganggu.
Batasan
Aturan quota berlaku untuk quota level-2 yang dibuat di Edisi Spot bayar sesuai penggunaan dan quota level-2 langganan.
Maksimal 10 aturan per quota level-2.
Maksimal 50 project dan 50 pemilik pekerjaan (UID) per aturan.
Maksimal 5 pasangan kunci-nilai di bidang Job settings per aturan.
Rentang valid Job priority:
[0, 9].
Mode aturan
Setiap aturan beroperasi dalam salah satu dari tiga mode. Aturan dalam mode EXCLUSIVE dan ANTI memiliki prioritas lebih tinggi daripada aturan dalam mode NORMAL.
| Mode | Perilaku | Kapan digunakan |
|---|---|---|
| NORMAL | Pekerjaan yang sesuai dengan aturan diarahkan ke quota ini. Jika suatu pekerjaan sesuai dengan beberapa aturan, pekerjaan tersebut menggunakan quota yang dibuat paling awal. Pekerjaan yang tidak sesuai dengan aturan mana pun akan fallback ke quota default project. | Isolasi workload standar—arahkan jenis pekerjaan atau tim tertentu ke quota khusus |
| EXCLUSIVE | Pekerjaan harus sesuai dengan aturan agar dapat menggunakan quota ini. Pekerjaan yang tidak sesuai akan ditolak dengan error saat pengiriman. | Terapkan kontrol akses ketat—hanya pekerjaan yang secara eksplisit disetujui yang dapat menggunakan quota ini |
| ANTI (dilarang) | Pekerjaan yang sesuai dengan aturan diblokir dari penggunaan quota ini. Pekerjaan yang diblokir akan fallback ke quota default project; jika quota default juga diblokir, maka akan fallback ke quota yang dibuat paling awal di wilayah tersebut (termasuk quota bayar sesuai penggunaan). | Cegah pekerjaan tertentu mengonsumsi quota—misalnya, blokir kueri ad hoc dari quota khusus ETL |
Aturan EXCLUSIVE dan ANTI menggantikan aturan NORMAL. Jika suatu pekerjaan tidak sesuai dengan aturan EXCLUSIVE atau sesuai dengan aturan ANTI untuk quota tertentu, pekerjaan tersebut tidak dapat menggunakan quota tersebut—meskipun juga sesuai dengan aturan NORMAL untuk quota yang sama atau ditetapkan secara eksplisit melalui perintah SET tingkat pekerjaan.
Konfigurasi aturan
Masuk ke Konsol MaxComputeKonsol MaxCompute dan pilih wilayah.
Di panel navigasi sebelah kiri, pilih Workspace > Quotas.
Di halaman Quotas, temukan quota level-1 dan klik ikon
untuk memperluas quota level-2-nya.Temukan quota level-2 dan klik Rule Configuration di kolom Actions.
Di kotak dialog Quota Rule Configuration, klik Add Rule, atau temukan aturan yang sudah ada dan klik Clone untuk membuat salinan.
Konfigurasikan parameter aturan: Aturan mulai berlaku sekitar 5 menit setelah dikonfigurasi.
Dalam satu aturan, beberapa nilai di Project, Job type, dan Job settings memiliki hubungan AND. Setidaknya salah satu dari Job type, Job priority, Job owner, atau Job settings tidak boleh kosong.
Parameter Deskripsi Rule name Hanya huruf, angka, dan garis bawah; harus dimulai dengan huruf. Rule mode NORMAL, EXCLUSIVE, atau ANTI. Lihat Mode aturan di atas. Project Project yang akan dicocokkan. Maksimal 50 project. Biarkan kosong untuk mencocokkan semua project. Job type Jenis pekerjaan yang akan dicocokkan: SQL(pekerjaan SQL),SQLRT(pekerjaan SQL MCQA),SQLCost(pekerjaan estimasi biaya SQL),LOT(pekerjaan MapReduce),CUPID(pekerjaan Spark atau Mars),AlgoTask(pekerjaan Platform for AI (PAI)). Biarkan kosong untuk mencocokkan semua jenis.Job priority Rentang prioritas yang akan dicocokkan, dalam format [min,max], seperti[0,3]untuk prioritas 0, 1, 2, dan 3. Biarkan kosong untuk mencocokkan semua prioritas.Job owner (account ID) UID pemilik pekerjaan yang akan dicocokkan, satu per baris. Maksimal 50 UID. Beberapa UID memiliki hubungan OR. Biarkan kosong untuk mencocokkan semua pemilik. Job settings Pasangan kunci-nilai dalam format Key=Value, satu per baris. Maksimal 5 pasangan. Beberapa pasangan memiliki hubungan AND. Tanda kutip tidak diperlukan. Biarkan kosong untuk mencocokkan semua pengaturan.Klik OK.
Pertahankan jumlah aturan seminimal mungkin. Aturan quota, terutama yang menggunakan Job settings, memang fleksibel tetapi bisa sulit dipelihara jika digunakan secara berlebihan.
Contoh
Mengisolasi pekerjaan pengisian ulang data
Tugas yang dipicu otomatis DataWorks yang menjalankan pekerjaan pengisian ulang data secara otomatis melewatkan SKYNET_DAGTYPE=3 dalam pengaturan pekerjaan. Gunakan ini untuk mengarahkan semua pekerjaan backfill ke quota khusus:
Buat quota bernama
refill.Konfigurasikan aturan mode NORMAL untuk quota
refill. MasukkanSKYNET_DAGTYPE=3di bidang Job settings.
Semua pekerjaan backfill DataWorks kini secara otomatis diarahkan ke refill, sehingga pekerjaan reguler Anda tidak terpengaruh.
Untuk mempersempit cakupan lebih lanjut—misalnya, hanya mengarahkan pekerjaan backfill prioritas tinggi dari project tertentu—aturlah Project ke P1, atur Job priority ke [5,9], dan masukkan SKYNET_DAGTYPE=3 di Job settings.
Prioritas pekerjaan di MaxCompute berbeda dari prioritas garis dasar di DataWorks. Hubungannya adalah: Prioritas di MaxCompute = 9 - Prioritas garis dasar di DataWorks.Mengarahkan pekerjaan MCQA (akselerasi dan rollback)
Pekerjaan MCQA memerlukan baik acceleration quota (tipe interaktif) maupun rollback quota (tipe batch). Saat acceleration quota timeout atau menolak pekerjaan, sistem akan mengirim ulang pekerjaan tersebut menggunakan rollback quota.
Untuk mengatur ini, tambahkan project atau pemilik pekerjaan ke aturan acceleration quota dan aturan rollback quota. Untuk mengaktifkan MCQA untuk project tertentu, konfigurasikan aturan ProjectList yang berbeda saat membuat quota interaktif Anda.
Mengisolasi pekerjaan berdasarkan peran atau tim
Ketika beberapa tim berbagi tenant MaxCompute—misalnya, tim rekayasa data yang menjalankan pipeline ETL dan tim analitik yang menjalankan kueri ad hoc—buat quota terpisah untuk masing-masing tim dan konfigurasikan aturan untuk mengarahkan pekerjaan secara otomatis.
Gunakan parameter berikut untuk mengidentifikasi kepemilikan pekerjaan:
| Parameter | Cara penggunaan |
|---|---|
| Project | Arahkan berdasarkan project jika setiap tim menggunakan project terpisah |
| Job owner (account ID) | Arahkan berdasarkan pengguna pengirim jika tim berbagi project |
| Job type | Arahkan berdasarkan jenis pekerjaan — misalnya, SQL untuk pekerjaan kueri SQL, AlgoTask untuk pekerjaan PAI |
| Job settings | Arahkan berdasarkan parameter SET kustom atau metadata yang disisipkan DataWorks. Misalnya, jika pekerjaan diinisiasi melalui DataWorks, parameter tertentu dikonfigurasi secara otomatis untuk membantu mengidentifikasi pekerjaan tersebut. |
Gabungkan parameter untuk routing yang lebih spesifik. Misalnya, arahkan pekerjaan SQL dari pengguna tertentu di project tertentu ke quota analitik khusus.