Node Shell menjalankan skrip shell standar sebagai tugas terjadwal di DataWorks DataStudio.
Batasan
| Batasan | Detail |
|---|---|
| Sintaksis | Hanya mendukung sintaksis shell standar; sintaksis interaktif tidak didukung. |
| Ukuran kode | Kode node tidak boleh melebihi 128 KB. |
| Subproses | Hindari memulai sejumlah besar subproses. Pada kelompok sumber daya eksklusif untuk penjadwalan, DataWorks tidak membatasi penggunaan sumber daya untuk node Shell, sehingga subproses berlebihan dapat memengaruhi node lain dalam kelompok yang sama. |
| Kelompok sumber daya | Dapat dijalankan pada kelompok sumber daya arsitektur tanpa server atau kelompok sumber daya eksklusif versi lama untuk penjadwalan. Untuk manajemen sumber daya yang lebih baik, jalankan tugas pada kelompok sumber daya arsitektur tanpa server. |
| Batas CU pada arsitektur tanpa server | Satu tugas mendukung hingga 64 compute units (CUs). Pertahankan pengaturan dalam batas 16 CUs untuk menghindari kekurangan sumber daya yang menunda startup tugas. |
| Akses daftar putih | Jika node Shell pada kelompok sumber daya arsitektur tanpa server perlu mengakses sumber data yang memiliki daftar putih, tambahkan alamat IP elastis (EIP) atau Blok CIDR yang diperlukan ke daftar putih sumber data tersebut. Lihat Gunakan kelompok sumber daya arsitektur tanpa server |
Prasyarat
Sebelum memulai, pastikan Anda telah:
-
Membuat workflow. Operasi pengembangan DataStudio berbasis pada workflow. Lihat Buat workflow.
Buat node Shell umum
-
Buka halaman DataStudio. Masuk ke Konsol DataWorks. Di bilah navigasi atas, pilih wilayah yang diinginkan. Di panel navigasi kiri, pilih Data Development and O\&M > Data Development. Pilih ruang kerja yang diinginkan dari daftar drop-down dan klik Go to Data Development.
-
Klik Confirm.
Gunakan resource dalam node Shell
Node Shell dapat mereferensikan file resource yang diunggah dan menjalankannya sebagai bagian dari tugas.
Unggah resource
Unggah resource ke DataWorks sebelum mereferensikannya. DataWorks mendukung pembuatan dan pengunggahan resource MaxCompute dan E-MapReduce (EMR):
Referensikan resource di node
Setelah diunggah, referensikan resource tersebut di node Shell agar tugas dapat menggunakannya. Setelah direferensikan, komentar @resource_reference{"Resource name"} muncul di bagian atas kode node.
-
Buka node Shell untuk masuk ke halaman pengeditan node.
-
Di panel Scheduled Workflow, temukan resource yang telah Anda unggah.
-
Klik kanan resource tersebut dan pilih Insert Resource Path.
Tulis kode di editor untuk menjalankan resource yang direferensikan.
Konfigurasikan parameter penjadwalan
Node Shell menggunakan variabel posisional: $1, $2, $3, dan seterusnya. Untuk parameter kesepuluh atau lebih tinggi, gunakan format ${Number} — misalnya, ${10}.
| Format variabel | Penggunaan |
|---|---|
$1, $2, $3 … |
Variabel posisional untuk parameter pertama hingga kesembilan |
${10}, ${11} … |
Variabel posisional untuk parameter kesepuluh dan seterusnya |
Di bagian Parameters, tetapkan nilai ke variabel secara berurutan menggunakan ekspresi, dipisahkan dengan spasi. Nilai pertama diberikan ke $1, nilai kedua ke $2, dan seterusnya.
Contoh di atas memberikan tiga parameter ke $1, $2, dan $3, semuanya digunakan untuk memperoleh waktu data:
-
$1: diberi nilai$bizdate, parameter bawaan yang mengembalikan tanggal bisnis. -
$2: diberi nilai${yyyymmdd}, ekspresi format tanggal. -
$3: diberi nilai$[yyyymmdd], ekspresi format tanggal lainnya.
Untuk detail tentang konfigurasi dan penggunaan parameter penjadwalan, lihat Konfigurasikan dan gunakan parameter penjadwalan dan Format yang didukung untuk parameter penjadwalan.
Tentukan apakah skrip Shell berhasil
DataWorks menggunakan exit code dari skrip shell untuk menentukan hasil tugas.
| Exit code | Hasil |
|---|---|
0 |
Skrip berhasil dijalankan |
-1 |
Skrip dihentikan |
2 |
Skrip perlu dijalankan ulang secara otomatis |
| Kode lainnya | Skrip gagal |
Untuk skrip Shell, jika perintah pertama adalah perintah tidak valid, error akan dikembalikan. Namun, jika perintah valid dijalankan setelah perintah tidak valid tersebut, skrip Shell dapat berhasil dijalankan.
Contoh: skrip berhasil meskipun perintah pertama tidak valid
#!/bin/bash
curl http://xxxxx/asdasd # Perintah tidak valid — gagal diam-diam
echo "nihao" # Perintah valid — keluar dengan kode 0
Skrip ini keluar dengan sukses karena skrip berakhir seperti yang diharapkan.
Contoh: skrip gagal karena exit eksplisit
#!/bin/bash
curl http://xxxxx/asdasd
if [[ $? == 0 ]]; then
echo "curl success"
else
echo "failed"
exit 1 # Exit eksplisit dengan kode 1 — tugas gagal
fi
echo "nihao"
Skrip ini gagal karena exit 1 dijalankan sebelum echo terakhir.
Akses OSS dengan ossutil
Gunakan pola ini untuk membaca dari dan menulis ke bucket Object Storage Service (OSS) langsung dari tugas node Shell.
Jalur instalasi default: /home/admin/usertools/tools/ossutil64
Untuk mengautentikasi ke OSS, buat file konfigurasi dan unggah menggunakan O\&M Assistant ke /home/admin/usertools/tools/myconfig. Format file konfigurasi:
[Credentials]
language = CH
endpoint = oss.aliyuncs.com
accessKeyID = <your-accesskey-id>
accessKeySecret = <your-accesskey-secret>
stsToken = <your-sts-token>
outputDir = <your-output-dir>
ramRoleArn = <your-ram-role-arn>
Ganti placeholder dengan nilai aktual Anda:
| Placeholder | Deskripsi |
|---|---|
<your-accesskey-id> |
ID AccessKey Anda |
<your-accesskey-secret> |
Rahasia AccessKey Anda |
<your-sts-token> |
Token Security Token Service (STS) (wajib hanya saat menggunakan kredensial temporary) |
<your-output-dir> |
Direktori lokal untuk output ossutil |
<your-ram-role-arn> |
ARN peran Resource Access Management (RAM) (wajib hanya saat menggunakan akses berbasis peran) |
Contoh: salin objek dari OSS
#!/bin/bash
/home/admin/usertools/tools/ossutil64 --config-file /home/admin/usertools/tools/myconfig \
cp oss://bucket/object object
if [[ $? == 0 ]]; then
echo "access oss success"
else
echo "failed"
exit 1
fi
echo "finished"
Untuk daftar lengkap perintah ossutil, lihat Perintah umum.
Langkah selanjutnya
Untuk menjalankan node Shell sesuai jadwal, konfigurasikan properti penjadwalannya dan deploy ke lingkungan produksi. Lihat Langkah 6: Konfigurasikan properti penjadwalan dan Publish tasks.