Anda dikenai biaya saat menggunakan MaxCompute untuk pengembangan. Jika pengeluaran harian Anda biasanya stabil tetapi tiba-tiba membengkak dalam suatu periode, analisislah biaya tersebut untuk mengidentifikasi proyek dan pekerjaan penyebab lonjakan. Selanjutnya, optimalkan atau sesuaikan pekerjaan tersebut guna mengurangi biaya. Topik ini menjelaskan cara menggunakan rincian penagihan dan layanan Information Schema (meta global MaxCompute) untuk mengatasi lonjakan biaya MaxCompute bayar sesuai penggunaan yang tiba-tiba.
Informasi latar belakang
Topik ini menggunakan pendekatan berikut secara keseluruhan untuk mengatasi lonjakan biaya MaxCompute bayar sesuai penggunaan yang tiba-tiba:
Gunakan Fee Hub untuk mengonfirmasi tanggal ketika biaya melebihi ekspektasi, lalu identifikasi item penagihan pada proyek mana yang menghasilkan biaya tinggi pada hari tersebut.
Analisis akar penyebab kenaikan biaya:
Jika biaya komputasi melebihi ekspektasi, gunakan tampilan TASKS_HISTORY di Information Schema untuk menghitung volume pekerjaan dan mencantumkan pekerjaan dengan biaya tertinggi.
Jika biaya penyimpanan melebihi ekspektasi, unduh rincian penggunaan untuk menganalisis perubahan biaya penyimpanan.
Jika biaya trafik downstream jaringan publik melebihi ekspektasi, gunakan tampilan TUNNELS_HISTORY di Information Schema untuk melacak perubahan biaya trafik downstream jaringan publik.
Langkah 1: Aktifkan layanan Information Schema
Mulai 1 Maret 2024, MaxCompute tidak lagi secara otomatis menginstal paket Information Schema tingkat proyek untuk proyek baru. Proyek baru tidak memiliki paket Information Schema tingkat proyek secara default. Jika bisnis Anda memerlukan kueri metadata, gunakan Information Schema tingkat tenant sebagai gantinya karena informasinya lebih lengkap. Untuk petunjuk penggunaan Information Schema tingkat tenant, lihat Tenant-level Information Schema.
Untuk proyek MaxCompute yang sudah ada, sebelum menggunakan layanan Information Schema, Anda perlu:
Menjadi pemilik proyek atau Pengguna Resource Access Management (RAM) dengan role Super_Administrator agar memiliki akses ke metadata proyek. Untuk informasi lebih lanjut tentang menetapkan role management kepada pengguna, lihat Assign roles to users.
Anda dapat menginstal paket dengan dua cara. Untuk informasi lebih lanjut tentang fitur dan batasan Information Schema, lihat Information Schema overview.
Metode 1: Masuk ke MaxCompute client. Jalankan perintah berikut:
install package Information_Schema.systables;Metode 2: Masuk ke DataWorks console. Buka antarmuka Ad Hoc Query. Untuk informasi lebih lanjut tentang kueri ad hoc, lihat Run SQL statements using ad hoc queries (optional). Jalankan perintah berikut:
install package Information_Schema.systables;
Untuk menganalisis metadata dari beberapa proyek MaxCompute, instal paket Information Schema untuk setiap proyek, lalu masukkan metadata backup dari setiap proyek ke dalam tabel yang sama untuk analisis terpusat.
Kami merekomendasikan penggunaan tenant-level Information Schema, yang memungkinkan Anda mengkueri metadata dan riwayat penggunaan untuk semua proyek Anda.
(Opsional) Langkah 2: Berikan izin kepada pengguna selain pemilik proyek
Tampilan Information Schema berisi semua data pengguna di tingkat proyek. Secara default, pemilik proyek dapat melihat data ini. Jika pengguna atau role lain dalam proyek perlu melihatnya, Anda harus memberikan izin kepada mereka. Untuk informasi lebih lanjut, lihat Access resources across projects based on packages.
Sintaksis untuk memberikan izin adalah sebagai berikut.
grant <actions> on package Information_Schema.systables to user <user_name>;
grant <actions> on package Information_Schema.systables to role <role_name>;actions: Izin yang diberikan. Nilainya harus Read.
user_name: Akun Alibaba Cloud atau RAM user yang telah ditambahkan ke proyek.
Anda dapat menjalankan perintah
list users;di MaxCompute client untuk mendapatkan daftar akun pengguna.role_name: Role yang telah ditambahkan ke proyek.
Anda dapat menjalankan perintah
list roles;di MaxCompute client untuk mendapatkan nama role.
Contoh berikut menunjukkan cara memberikan izin.
grant read on package Information_Schema.systables to user RAM$Bob@aliyun.com:user01;(Opsional) Langkah 3: Unduh dan backup metadata
MaxCompute menyimpan riwayat pekerjaan untuk pekerjaan yang telah selesai selama 14 hari terakhir. Jika Anda sering mengkueri data yang lebih tua dari 14 hari, backup metadata ke proyek Anda secara berkala. Lewati langkah ini jika Anda hanya menjalankan kueri ad hoc untuk riwayat pekerjaan dalam 14 hari terakhir.
Masuk ke MaxCompute client. Jalankan perintah berikut untuk membuat tabel backup metadata.
Di antarmuka DataWorks Data Studio, buat node ODPS SQL bernama history_backup. Konfigurasikan penjadwalan waktu untuk menulis data ke tabel backup tasks_history dan tunnels_history. Klik ikon
di pojok kiri atas untuk menyimpan.Berikut contoh perintah node ODPS SQL:
-- project_name adalah nama proyek MaxCompute. USE <project_name>; -- Backup tasks_history. INSERT INTO TABLE <project_name>.tasks_history SELECT task_catalog,task_schema ,task_name,task_type STRING,inst_id,`status`,owner_id,owner_name,result ,start_time,end_time,input_records,output_records,input_bytes,output_bytes ,input_tables,output_tables,operation_text,signature,complexity,cost_cpu,cost_mem,settings,ds FROM information_schema.tasks_history WHERE ds ='${datetime1}'; -- Backup tunnels_history. INSERT INTO TABLE <project_name>.tunnels_history SELECT tunnel_catalog,tunnel_schema,session_id,operate_type,tunnel_type,request_id,object_name ,partition_spec,data_size,block_id,offset,length,owner_id,owner_name,start_time,end_time ,client_ip,user_agent,object_type,columns,ds FROM information_schema.tunnels_history WHERE ds ='${datetime1}';Parameter
${datetime1}adalah parameter penjadwalan DataWorks. Di node ODPS SQL, klik Scheduling Configuration di sebelah kanan. Di bagian Basic Properties, atur Parameters menjadidatetime1=${yyyymmdd}.CatatanUntuk menganalisis metadata dari beberapa proyek MaxCompute, buat beberapa node ODPS SQL dan tulis metadata dari semua proyek ke tabel backup yang sama.
Langkah 4: Analisis proyek dan item penagihan berbiaya tinggi di Fee Hub
Masuk ke Fee Hub. Gunakan metode berikut untuk menganalisis proyek dan item penagihan berbiaya tinggi. Untuk informasi lebih lanjut, lihat View billing details.
Di panel navigasi sebelah kiri, pilih . Atur Statistic Item ke Instance dan Statistical Period ke Day.
Metode 1: Temukan proyek (ID instans) dengan biaya tinggi. Jika satu proyek jelas melebihi ekspektasi, analisis proyek tersebut.
Metode 2: Temukan item penagihan berbiaya tinggi. Cari proyek tertentu berdasarkan Resource Instance Name/ID, lalu analisis item penagihan berbiaya tinggi untuk proyek tersebut.
Di panel navigasi sebelah kiri, pilih Cost Analysis. Di halaman Cost Analysis, Anda juga dapat menemukan item penagihan dengan biaya yang meningkat.
Langkah 5: Identifikasi akar penyebab kenaikan biaya
Analisis proyek dan item penagihan berbiaya tinggi untuk menemukan akar penyebabnya.
Biaya komputasi pekerjaan SQL melebihi ekspektasi
Biaya keseluruhan pekerjaan SQL tinggi (termasuk pekerjaan tabel eksternal), yang mungkin disebabkan oleh satu pekerjaan abnormal, eksekusi berulang, atau konfigurasi penjadwalan yang tidak tepat.
Kueri ID instans (inst_id) pekerjaan berbiaya tinggi untuk melihat detail eksekusinya.
Masuk ke MaxCompute client. Gunakan perintah
useuntuk beralih ke proyek berbiaya tinggi yang diidentifikasi di Langkah 4. Kueri biaya pekerjaan menggunakan TASKS_HISTORY. Berikut contohnya:-- Aktifkan tipe data ODPS 2.0. Untuk detailnya, lihat tipe data ODPS 2.0. SET odps.sql.decimal.odps2=true; SELECT inst_id ---ID instans ,input_bytes ---volume data input ,complexity ,CAST(input_bytes/1024/1024/1024 * complexity * 0.3 AS DECIMAL(18,5) ) cost_sum ,GET_JSON_OBJECT(settings, "$.SKYNET_ID") SKYNET_ID ---ID pekerjaan penjadwalan DataWorks FROM information_schema.tasks_history -- Untuk mengkueri metadata yang lebih tua dari 14 hari, kueri tabel backup yang dibuat di Langkah 3. Nama tabel: <project_name>.tasks_history WHERE task_type = 'SQL' OR task_type = 'SQLRT' AND ds = 'partisi tanggal untuk dikueri' ORDER BY cost_sum DESC LIMIT 10000 ;CatatanBiaya komputasi SQL = Volume data input × Kompleksitas SQL × Harga satuan (USD 0,0438 per GB).
Dalam contoh ini,
task_type = 'SQL'berarti pekerjaan SQL, sedangkantask_type = 'SQLRT'berarti pekerjaan akselerasi kueri SQL.
Periksa
SKYNET_ID(ID pekerjaan penjadwalan DataWorks) dari pekerjaan SQL berbiaya tinggi.Jika memiliki ID, periksa detail eksekusi node di DataWorks.
Jika tidak memiliki ID, pekerjaan tersebut tidak dipicu oleh node penjadwalan DataWorks. Gunakan
inst_iduntuk melihat detail eksekusi. Berikut contohnya:SELECT operation_text FROM information_schema.tasks_history WHERE ds='<partisi tanggal eksekusi pekerjaan>' AND inst_id='<inst_id>';
Temukan pekerjaan duplikat yang berjalan berkali-kali.
Masuk ke MaxCompute client. Gunakan perintah
useuntuk beralih ke proyek berbiaya tinggi yang diidentifikasi di Langkah 4. Kueri pekerjaan duplikat menggunakan TASKS_HISTORY. Berikut contohnya:-- Analisis tren pertumbuhan pekerjaan. SELECT signature ,ds ,COUNT(*) AS tasknum FROM information_schema.tasks_history -- Untuk mengkueri metadata yang lebih tua dari 14 hari, kueri tabel backup yang dibuat di Langkah 3. Nama tabel: <project_name>.tasks_history where task_type = 'SQL' OR task_type = 'SQLRT' AND ds >= 'partisi tanggal untuk dikueri' GROUP BY ds ,signature ORDER BY tasknum DESC LIMIT 10000 ; -- Konfirmasi signature abnormal dan periksa eksekusi terbaru dari pekerjaan SQL yang sesuai SELECT * FROM information_schema.tasks_history -- Untuk mengkueri metadata yang lebih tua dari 14 hari, kueri tabel backup yang dibuat di Langkah 3. Nama tabel: <project_name>.tasks_history where signature = 'signature abnormal' AND ds >= 'partisi tanggal untuk dikueri' ;
Biaya komputasi Spark melebihi ekspektasi
Pekerjaan Spark memiliki konsumsi keseluruhan yang tinggi. Anda dapat mengkueri inst_id pekerjaan dengan konsumsi abnormal untuk melihat informasi eksekusi spesifiknya.
Masuk ke MaxCompute client. Gunakan perintah
useuntuk beralih ke proyek berbiaya tinggi yang diidentifikasi di Langkah 4. Kueri biaya pekerjaan menggunakan TASKS_HISTORY. Berikut contohnya:-- Aktifkan tipe data ODPS 2.0. Untuk detailnya, lihat tipe data ODPS 2.0. SET odps.sql.decimal.odps2=true; SELECT inst_id --ID instans ,cost_cpu --konsumsi CPU pekerjaan (100 sama dengan 1 core × detik. Contoh: 10 core berjalan selama 5 detik menghasilkan cost_cpu sebesar 10 × 100 × 5 = 5000). ,CAST(cost_cpu/100/3600 * 0.36 AS DECIMAL(18,5) ) cost_sum FROM information_schema.tasks_history -- Untuk mengkueri metadata yang lebih tua dari 14 hari, kueri tabel backup yang dibuat di Langkah 3. Nama tabel: <project_name>.tasks_history WHERE task_type = 'CUPID' AND status='Terminated' AND ds = 'partisi tanggal untuk dikueri' ORDER BY cost_sum DESC LIMIT 10000 ;CatatanBiaya komputasi pekerjaan Spark per hari = Total jam yang dapat ditagih × Harga satuan (USD 0,1041 per jam per task).
task_type = 'CUPID'berarti pekerjaan Spark.
Gunakan
inst_iduntuk melihat detail eksekusi. Berikut contohnya:SELECT operation_text FROM information_schema.tasks_history WHERE ds='partisi tanggal eksekusi pekerjaan' AND inst_id='<inst_id>';
Biaya pekerjaan MapReduce melebihi ekspektasi
Pekerjaan MapReduce memiliki konsumsi keseluruhan yang tinggi. Anda dapat mengkueri inst_id pekerjaan dengan konsumsi abnormal untuk melihat informasi eksekusi detailnya.
Masuk ke MaxCompute client. Gunakan perintah
useuntuk beralih ke proyek berbiaya tinggi yang diidentifikasi di Langkah 4. Kueri biaya pekerjaan menggunakan TASKS_HISTORY. Berikut contohnya:-- Aktifkan tipe data ODPS 2.0. Untuk detailnya, lihat tipe data ODPS 2.0. SET odps.sql.decimal.odps2=true; SELECT inst_id --ID instans ,cost_cpu --konsumsi CPU pekerjaan (100 sama dengan 1 core × detik. Contoh: 10 core berjalan selama 5 detik menghasilkan cost_cpu sebesar 10 × 100 × 5 = 5000). ,CAST(cost_cpu/100/3600 * 0.36 AS DECIMAL(18,5) ) cost_sum FROM information_schema.tasks_history -- Untuk mengkueri metadata yang lebih tua dari 14 hari, kueri tabel backup yang dibuat di Langkah 3. Nama tabel: <project_name>.tasks_history WHERE task_type = 'LOT' AND status='Terminated' AND ds = 'partisi tanggal untuk dikueri' ORDER BY cost_sum DESC LIMIT 10000 ;Gunakan
inst_iduntuk melihat detail eksekusi. Berikut contohnya:SELECT operation_text FROM information_schema.tasks_history WHERE ds='partisi tanggal eksekusi pekerjaan' AND inst_id='<inst_id>';
Biaya penyimpanan melebihi ekspektasi
Gunakan Usage Details untuk mengkueri biaya penyimpanan.
Unduh rincian penggunaan. Untuk detailnya, lihat Download usage details.
Unggah rincian penggunaan. Untuk detailnya, lihat Upload usage details data to MaxCompute.
Analisis rincian penggunaan menggunakan SQL. Untuk detailnya, lihat Analyze MaxCompute billing usage details.
Biaya trafik downstream jaringan publik melebihi ekspektasi
Biaya keseluruhan trafik downstream jaringan publik tinggi. Gunakan langkah-langkah berikut untuk menemukan periode waktu dan kategori mana yang memiliki biaya unduh tinggi.
Masuk ke MaxCompute client. Gunakan perintah
useuntuk beralih ke proyek berbiaya tinggi yang diidentifikasi di Langkah 4. Kueri biaya unduh menggunakan TUNNELS_HISTORY. Berikut contohnya:-- Aktifkan tipe data ODPS 2.0. Untuk detailnya, lihat tipe data ODPS 2.0. set odps.sql.decimal.odps2=true; SELECT ds ,operate_type ,SUM(CAST(data_size / 1024 / 1024 / 1024 * 0.8 AS DECIMAL(18,5))) download_fee FROM information_schema.tunnels_history WHERE operate_type = 'DOWNLOADLOG' OR operate_type = 'DOWNLOADINSTANCELOG' AND ds >= 'partisi tanggal untuk dikueri' GROUP BY ds ,operate_type ORDER BY download_fee DESC ;CatatanBiaya unduh = Volume data yang diunduh × Harga satuan (USD 0,1166 per GB).
Anda juga dapat menganalisis tren biaya unduh dari waktu ke waktu menggunakan hasil kueri. Selain itu, jalankan perintah
tunnel show historyuntuk melihat riwayat detail. Untuk referensi perintah lengkap, lihat Tunnel commands.
Informasi lebih lanjut
Untuk artikel lain tentang optimalisasi biaya, lihat Cost optimization overview.