Konfigurasikan properti penjadwalan untuk task (node) di DataWorks, termasuk jadwal, dependensi, kebijakan eksekusi, dan parameter agar task dapat berjalan secara otomatis dan andal.
Konsep inti
Sebelum mengonfigurasi properti penjadwalan, pahami konsep inti berikut:
Task dan instans: Task (atau node) adalah kode logika bisnis yang dikembangkan di DataWorks. Saat sebuah task dijalankan berdasarkan pengaturan Scheduling Settings-nya, satu atau beberapa instans berjalan akan dihasilkan. Di Operation and Maintenance Center, Anda dapat mengelola dan memantau instans task yang sedang berjalan, seperti melihat log dan menjalankan ulang instans.
Instans berkala: Untuk task yang dijadwalkan secara berkala, sistem penjadwalan akan menghasilkan frekuensi penjadwalan Scheduling Frequency yang sesuai (misalnya harian atau per jam), sehingga menghasilkan instans berkala yang bersesuaian. Misalnya, task per jam akan menghasilkan 24 instans tertunda setiap hari.
Tanggal bisnis: Waktu pemrosesan data suatu instans, biasanya T-1 (kemarin). Misalnya, instans yang berjalan pada dini hari tanggal 2023-01-02 memiliki tanggal bisnis 2023-01-01, artinya instans tersebut memproses data dari 1 Januari. Penggantian parameter penjadwalan umumnya didasarkan pada tanggal bisnis.
Prasyarat
Node telah dibuat. DataWorks menggunakan node untuk pengembangan task. Task engine yang berbeda dikemas sebagai jenis node yang berbeda. Pilih node yang sesuai dengan kebutuhan Anda. Untuk detailnya, lihat Ikhtisar Pengembangan Node.
Sakelar Enable Periodic Scheduling pada halaman Scheduling Settings telah diaktifkan. Setelah diaktifkan, semua task di ruang kerja dapat berjalan secara otomatis berdasarkan konfigurasinya. Untuk detailnya, lihat Mengonfigurasi properti penjadwalan ruang kerja.
Mengonfigurasi properti penjadwalan
Di panel Scheduling Settings di sisi kanan halaman editor node, atur berbagai properti untuk menentukan perilaku otomatis task.
1. Buka halaman konfigurasi penjadwalan
-
Buka halaman Workspaces di konsol DataWorks. Di bilah navigasi atas, pilih wilayah yang diinginkan. Temukan ruang kerja yang diinginkan lalu pilih di kolom Actions.
Di Data Studio, klik ganda node target untuk membuka halaman editornya.
Klik Scheduling Settings di sisi kanan halaman editor node untuk membuka panel konfigurasi.
2. Mengonfigurasi properti penjadwalan
Panel konfigurasi penjadwalan mencakup tab-tab berikut: Scheduling time, Scheduling Dependency, Scheduling Policy, Scheduling Parameters, Node output parameters, dan Associated Role. Konfigurasikan sesuai kebutuhan.
Scheduling time: Menentukan kapan task dijalankan
Tentukan kapan dan seberapa sering task dijalankan secara otomatis.
Untuk node dalam alur kerja, Scheduling time dikonfigurasi secara seragam oleh alur kerja dan tidak dapat diubah di sini. Untuk node mandiri, konfigurasikan di sini.
Parameter | Deskripsi |
Scheduling Frequency | Menentukan seberapa sering task dijalankan secara otomatis di lingkungan produksi. Mendukung periode per menit, per jam, harian, mingguan, bulanan, dan tahunan.
|
Effective Date | Tentukan tanggal mulai dan akhir untuk penjadwalan task otomatis. Setelah periode validitas berakhir, task tidak lagi menghasilkan instans berkala baru. |
Cron expression | Ekspresi ini dihasilkan secara otomatis berdasarkan properti waktu yang dikonfigurasi di UI. Tidak perlu dikonfigurasi secara manual. |
Waktu penjadwalan vs. waktu eksekusi aktual: Scheduling time yang dikonfigurasi di sini adalah waktu mulai yang diharapkan dari task. Waktu mulai aktual juga dipengaruhi oleh penyelesaian task hulu, ketersediaan kelompok sumber daya, dan faktor lainnya.
Mekanisme dry run pada hari non-jadwal: Untuk task mingguan, bulanan, atau tahunan, pada hari yang tidak ditentukan untuk penjadwalan, sistem akan menghasilkan instans dry run. Instans ini langsung berhasil dan memicu task hilir, tetapi tidak mengeksekusi kode apa pun atau mengonsumsi sumber daya komputasi.
Kemandirian frekuensi penjadwalan: Frekuensi penjadwalan task ditentukan semata-mata oleh Scheduling Frequency-nya sendiri, terlepas dari task hulu. DataWorks mendukung dependensi antara task dengan periode penjadwalan berbeda (misalnya, task per jam yang bergantung pada task harian).
Scheduling dependencies: Menentukan prasyarat eksekusi task
Tentukan task hulu mana yang harus berhasil diselesaikan sebelum task saat ini dapat dimulai. Mengonfigurasi dependensi dengan benar merupakan kunci untuk memastikan urutan pemrosesan data dan akurasi output.
DataWorks secara otomatis mengurai dan merekomendasikan dependensi hulu berdasarkan lineage tabel dalam kode untuk memastikan integritas data. Anda juga dapat menambahkan atau mengubah dependensi secara manual sesuai kebutuhan.
Mengonfigurasi dependensi hulu
Di tab Scheduling Dependency, lihat daftar node dependensi hulu yang diurai oleh sistem dari kode.
Pilih mode dependensi untuk setiap node hulu:
Dependensi siklus yang sama: Instans hilir hari ini (T) bergantung pada instans hulu hari ini (T). Ini adalah dependensi paling umum. Misalnya, jika Task B harian membaca tabel yang dihasilkan oleh Task A harian, Task B harus bergantung pada siklus yang sama dari Task A.
Dependensi siklus sebelumnya: Instans hilir hari ini (T) bergantung pada instans hulu kemarin (T-1). Misalnya, task hari ini perlu membaca data agregat kemarin. Untuk detailnya, lihat Dependensi lintas siklus.
(Opsional) Jika sistem tidak secara otomatis mengurai dependensi, atau Anda perlu bergantung pada node yang tidak menghasilkan data (seperti Zero load node), klik Add upstream node untuk mengonfigurasi secara manual.
Dependensi alur kerja: Dependensi node dalam alur kerja dikelola secara seragam oleh alur kerja. Bagian ini hanya mencakup konfigurasi dependensi node mandiri. Untuk konfigurasi penjadwalan alur kerja, lihat Mengonfigurasi properti penjadwalan alur kerja.
Skenario dependensi kompleks: DataWorks mendukung berbagai skenario dependensi kompleks. Sebelum mengonfigurasi, tinjau dokumentasi konfigurasi dependensi kompleks untuk memahami aturan dependensi yang telah ditentukan.
Skenario dependensi yang tidak didukung: Untuk data yang tidak dihasilkan oleh penjadwalan berkala DataWorks (seperti tabel yang disinkronkan secara real-time, tabel yang diunggah secara manual, atau tabel dimensi), sistem tidak dapat mendeteksi status pembaruan data, sehingga dependensi penjadwalan tidak dapat dikonfigurasi. Dalam skenario tersebut, bergantunglah pada node root ruang kerja atau Zero load node untuk orkestrasi penjadwalan terpadu.
Scheduling policy: Menentukan perilaku eksekusi dan sumber daya task
Tentukan cara instans dihasilkan, perilaku eksekusi (seperti timeout dan rerun), serta sumber daya yang diperlukan.
Parameter | Deskripsi |
Instance generation method | Tentukan kapan instans berkala mulai dihasilkan setelah task diterapkan.
|
Scheduling Type |
|
Timeout Definition | Tentukan durasi maksimum untuk eksekusi task. Setelah waktu ini habis, task akan dihentikan secara otomatis dan ditandai sebagai gagal. Nilai default adalah 3–7 hari, dengan pengaturan manual maksimum 168 jam (7 hari). |
RUN Attribute | Tentukan kondisi di mana task dapat dijalankan ulang secara manual.
|
Auto Rerun upon Failure | Jika diaktifkan, jika task gagal karena masalah sementara (seperti fluktuasi jaringan), sistem akan mencoba ulang secara otomatis untuk meningkatkan stabilitas penjadwalan.
Catatan Task yang gagal karena timeout tidak memicu rerun otomatis. |
Max Parallel Instances | Membatasi jumlah maksimum instans konkuren dari task yang sama untuk kontrol konkurensi. Rentang nilai adalah 1–10000. Saat diaktifkan, instans berlebih akan mengantri hingga instans yang ada selesai. |
Resource Group | Konfigurasikan kelompok sumber daya penjadwalan untuk task. |
Compute Resource/Compute quota | Konfigurasikan sumber daya mesin komputasi (seperti Kuota MaxCompute) untuk task. |
Datasets | Memasang dataset (seperti Object Storage Service (OSS) atau Apsara File Storage (NAS)) ke jenis node tertentu (seperti Shell) sehingga dapat diakses seperti file lokal dalam kode. Anda dapat mengonfigurasi Mount Path, Advanced Settings (seperti read method), dan izin Read Only. |
Konfigurasi parameter: Mengaktifkan pengiriman nilai dinamis antar task
Konfigurasi berparameter membuat kode task lebih fleksibel, memungkinkan pengiriman nilai dinamis dan transfer konteks antar task.
Scheduling parameters (parameter input)
Jika variabel digunakan dalam kode node (seperti ${pt_time}), tetapkan nilainya di sini. Nilai dapat berupa konstanta tetap atau ekspresi dinamis menggunakan parameter bawaan DataWorks (seperti $bizdate).
Gunakan Add parameters untuk menentukan secara manual, atau gunakan Loading parameters in code untuk identifikasi otomatis. Selain itu, Anda dapat menggunakan ikon
untuk mengikat nilai parameter dengan parameter output node hulu.
Nilai akhir parameter penjadwalan ditentukan oleh tanggal bisnis instans dan ekspresi parameter penjadwalan yang dikonfigurasi.
Praktik terbaik: Setelah menerapkan task, verifikasi konfigurasi parameter penjadwalan di halaman Operation and Maintenance Center > Auto Triggered Task di lingkungan produksi untuk memastikan konfigurasi sesuai harapan.
Node output parameters (parameter output)
Tentukan output node saat ini sebagai pasangan kunci-nilai untuk dirujuk oleh node hilir. Node hilir dapat mengonsumsi nilai-nilai ini melalui konfigurasi Scheduling Parameters dengan Associate Output Parameter of Ancestor Node.
Parameter Value dapat berupa Constant (string tetap) atau Variable (merujuk pada parameter input sistem atau kustom).
Jenis node yang didukung:
EMR Hive,EMR Spark SQL,ODPS Script,Hologres SQL,AnalyticDB for PostgreSQL, danMySQL.Mengirimkan hasil kueri: Node output parameters hanya dapat mengirimkan nilai string. Untuk mengirimkan set hasil kueri SQL hulu ke hilir, gunakan Assignment node.
Associated role: Mengakses sumber daya cloud lain secara aman
Tentukan peran RAM untuk task agar secara dinamis mendapatkan kredensial akses temporary melalui Alibaba Cloud STS (Security Token Service) saat runtime, memungkinkan akses ke sumber daya cloud lain (seperti OSS) tanpa hardcoding Pasangan Kunci Akses, sehingga meningkatkan keamanan.
Batasan
Batasan kelompok sumber daya: Hanya didukung untuk node yang berjalan di kelompok sumber daya arsitektur tanpa server.
Batasan jenis node: Hanya didukung untuk node Python, Shell, Notebook, PyODPS 2, PyODPS 3, dan PAI DLC.
1. Mengonfigurasi peran terkait untuk node
Di sisi kanan halaman editor node, temukan dan klik Run Configuration.
Di panel konfigurasi penjadwalan, beralih ke tab Associated Role.
Di daftar drop-down RAM Role, pilih peran RAM yang telah Anda siapkan.
PentingJika daftar drop-down kosong atau Anda tidak menemukan peran yang diinginkan, lihat Mengonfigurasi peran terkait menggunakan STS untuk menyelesaikan konfigurasi peran RAM.
Setelah konfigurasi selesai, kirimkan node. Konfigurasi ini hanya berlaku untuk debug runs.
2. Jalankan dan verifikasi
PyODPS: Saat mengakses produk cloud lain (seperti OSS), identitas peran RAM yang dikonfigurasi akan digunakan. Namun, saat mengakses data MaxCompute, identitas akses yang dikonfigurasi untuk sumber daya komputasi (tingkat proyek) tetap digunakan secara otomatis.
Mengonfigurasi properti penjadwalan
Setelah men-debug node, sinkronkan Run Configuration dari Associated Role ke Scheduling Settings di . Setelah penerapan, task akan berjalan dengan identitas peran yang ditentukan.
Jika Anda mengonfigurasi custom image di Run Configuration, Anda juga harus menyinkronkan pengaturannya ke konfigurasi penjadwalan.
Melihat peran eksekusi di Pusat Operasi
Setelah task selesai, di Operation and Maintenance Center, tampilkan detail instans task untuk memastikan peran yang ditentukan berhasil digunakan.
Buka .
Temukan instans node yang Anda jalankan dan klik untuk membuka halaman detailnya.
Di halaman detail, periksa bidang Execution Identity untuk memastikan task berhasil menggunakan peran RAM yang ditentukan.
3. (Opsional) Menampilkan atau menggunakan kredensial temporary dalam kode
Setelah Anda mengonfigurasi peran terkait, task secara otomatis menggunakan identitas peran RAM untuk mengakses sumber daya cloud lain saat runtime. Dalam kebanyakan kasus, Anda dapat menjalankan task tanpa secara eksplisit mendapatkan kredensial dalam kode Anda.
Jika Anda perlu secara eksplisit menggunakan kredensial temporary dalam kode atau ingin melihat kredensial temporary yang disuntikkan oleh sistem, Anda dapat memperolehnya dengan metode berikut. DataWorks secara otomatis memperoleh kredensial temporary saat runtime dan menyuntikkannya ke lingkungan runtime sebagai Variabel lingkungan.
Node PAI DLC tidak mendukung memperoleh kredensial temporary dengan cara yang dijelaskan dalam bagian ini.
Metode 1: Membaca variabel lingkungan (direkomendasikan untuk Shell dan Python)
Sistem secara otomatis menetapkan tiga variabel lingkungan berikut, yang dapat Anda baca langsung dalam kode Anda.
LINKED_ROLE_ACCESS_KEY_ID: ID AccessKey temporary.LINKED_ROLE_ACCESS_KEY_SECRET: Rahasia AccessKey temporary.LINKED_ROLE_SECURITY_TOKEN: Token keamanan temporary.
Contoh kode (Python):
Contoh ini memerlukan custom image Python dengan oss2 yang terinstal. Untuk detailnya, lihat Custom image.
import os
import oss2
# 1. Dapatkan kredensial temporary dari variabel lingkungan
access_key_id = os.environ.get('LINKED_ROLE_ACCESS_KEY_ID')
access_key_secret = os.environ.get('LINKED_ROLE_ACCESS_KEY_SECRET')
security_token = os.environ.get('LINKED_ROLE_SECURITY_TOKEN')
# Verifikasi kredensial yang diperoleh
if not all([access_key_id, access_key_secret, security_token]):
raise Exception("Gagal mendapatkan kredensial peran terkait dari variabel lingkungan.")
# 2. Inisialisasi klien OSS dengan kredensial temporary
# Asumsikan peran telah diberikan akses ke 'your-bucket-name'
auth = oss2.StsAuth(access_key_id, access_key_secret, security_token)
bucket = oss2.Bucket(auth, 'http://oss-<regionID>-internal.aliyuncs.com', 'your-bucket-name')
# 3. Akses sumber daya OSS menggunakan klien
try:
# Daftar objek dalam bucket
for obj in oss2.ObjectIterator(bucket):
print('nama objek: ' + obj.key)
print("Berhasil mengakses OSS dengan peran terkait.")
except oss2.exceptions.OssError as e:
print(f"Kesalahan mengakses OSS: {e}")Contoh kode (Shell):
#!/bin/bash
access_key_id=${LINKED_ROLE_ACCESS_KEY_ID}
access_key_secret=${LINKED_ROLE_ACCESS_KEY_SECRET}
security_token=${LINKED_ROLE_SECURITY_TOKEN}
# Akses OSS. Ganti regionID, bucket_name, dan file_name dengan nilai aktual
echo "ID:"$access_key_id
echo "token:"$security_token
ls -al /home/admin/usertools/tools/
# Contoh: Unduh file dari OSS ke test_dw.py lokal menggunakan ossutil dan cetak isinya.
/home/admin/usertools/tools/ossutil64 cp --access-key-id $access_key_id --access-key-secret $access_key_secret --sts-token $security_token --endpoint http://oss-<regionID>-internal.aliyuncs.com oss://<bucket_name>/<file_name> test_dw.py
echo "************************ Berhasil ************************, mencetak"
cat test_dw.pyMetode 2: Gunakan Credentials Client (direkomendasikan untuk Python)
Contoh kode (Python):
Contoh ini memerlukan custom image Python dengan oss2 dan alibabacloud_credentials yang terinstal. Untuk detailnya, lihat Custom image.
from alibabacloud_credentials.client import Client as CredentialClient
import oss2
# 1. Gunakan SDK untuk secara otomatis mendapatkan kredensial
# Secara otomatis membaca info kredensial LINKED_ROLE_* dari variabel lingkungan
cred_client = CredentialClient()
credential = cred_client.get_credential()
access_key_id = credential.get_access_key_id()
access_key_secret = credential.get_access_key_secret()
security_token = credential.get_security_token()
if not all([access_key_id, access_key_secret, security_token]):
raise Exception("Gagal mendapatkan kredensial peran terkait melalui SDK.")
# 2. Inisialisasi klien OSS dengan kredensial
auth = oss2.StsAuth(access_key_id, access_key_secret, security_token)
bucket = oss2.Bucket(auth, 'http://oss-cn-hangzhou.aliyuncs.com', 'your-bucket-name')
# 3. Akses OSS
print("Mendaftar objek dalam bucket...")
for obj in oss2.ObjectIterator(bucket):
print(' - ' + obj.key)
print("Berhasil mengakses OSS dengan peran terkait melalui SDK.")Langkah selanjutnya: Kirim dan terapkan
Konfigurasi penjadwalan tidak langsung berlaku setelah diatur di lingkungan pengembangan. Node harus dikirimkan dan diterapkan ke lingkungan produksi agar sistem penjadwalan dapat menghasilkan instans berkala dan menjalankan task secara otomatis berdasarkan konfigurasi terbaru.
Dokumentasi terkait
Parameter penjadwalan: Referensi format parameter penjadwalan
Waktu penjadwalan: Referensi waktu penjadwalan
Dependensi penjadwalan:
Parameter output node: Referensi parameter output node