Deskripsi metode
Membuat dan mengirimkan pekerjaan.
Deskripsi parameter
Parameter | Tipe | Diperlukan | Deskripsi |
jobDescription | JobDescription | Ya | Deskripsi setiap tugas dalam pekerjaan, dan dependensi DAG antar tugas. |
Catatan: Nama paket berikut JobDescription, TaskDag, TaskDescription, dan ResourceDescription semuanya adalah com.aliyuncs.batchcompute.pojo.v20151111.
Atribut JobDescription
Metode getter dan setter tersedia untuk semua atribut.
Atribut | Tipe | Diperlukan | Deskripsi |
name | String | Ya | Nama pekerjaan. |
priority | int | Ya | Prioritas ditentukan oleh bilangan bulat mulai dari 0 hingga 1000. Prioritas meningkat seiring dengan nilainya. |
description | String | Tidak | Deskripsi singkat pekerjaan. |
dag | DAG | Tidak | Dibutuhkan ketika tipe adalah DAG. Ini mendeskripsikan setiap tugas dalam pekerjaan dan dependensi DAG antar tugas. |
app | AppJobDescription | Tidak | Dibutuhkan ketika tipe adalah App. Ini mendeskripsikan parameter konfigurasi App, input, dan output. |
jobFailOnInstanceFail | Boolean | Ya | Menentukan apakah pekerjaan gagal ketika instance gagal. Secara umum, nilainya adalah true. |
autoRelease | Boolean | Tidak | Menentukan apakah sistem secara otomatis melepaskan (menghapus) pekerjaan setelah pekerjaan berhasil dijalankan. Nilai default: false. |
type | String | Ya | Tipe pekerjaan. Saat ini, tugas hanya dapat dideskripsikan dalam bentuk grafik asiklik terarah (DAG). Nilai: DAG dan App. |
notification | Notification | Tidak | Konfigurasi notifikasi. Anda dapat mengonfigurasi topik atau acara terkait pekerjaan MNS. |
Atribut DAG
Metode getter dan setter tersedia untuk semua atribut.
Atribut | Tipe | Diperlukan | Deskripsi |
tasks | Map | Ya | Pemetaan antara semua nama tugas dan deskripsi tugas. |
dependencies | Map | Tidak | Dependensi antar tugas. Ini juga merupakan peta yang menggambarkan hubungan satu-ke-banyak, di mana "key" menunjukkan nama tugas sumber, dan "value" menunjukkan nama tugas target. Untuk informasi lebih lanjut, lihat contohnya. |
Atribut TaskDescription
Metode getter dan setter tersedia untuk semua atribut.
Atribut | Tipe | Diperlukan atau tidak | Deskripsi |
taskName | String | Ya | Nama tugas. |
clusterId | String | Tidak | ID kluster. Anda hanya dapat memilih salah satu dari clusterId dan AutoCluster. |
autoCluster | AutoCluster | Tidak | Anda hanya dapat memilih salah satu dari autoCluster dan clusterId. |
parameters | Parameters | Ya | Konfigurasi terkait dengan pelaksanaan program. |
inputMapping | Map | Tidak | Pemetaan dari jalur OSS ke posisi mount lokal. Semua posisi mount harus diakhiri dengan garis miring (/). Mereka dapat berada pada bucket yang sama atau berbeda, tetapi harus milik pengguna yang sama. Posisi mount adalah huruf drive dalam sistem operasi Windows, dan folder dalam sistem operasi Linux. “key” menunjukkan jalur OSS, dan “value” menunjukkan jalur mount, misalnya, “D:” atau “/home/admin/dist1”. |
outMapping | Map | Tidak | Pemetaan dari jalur lokal ke jalur OSS. “key” menunjukkan jalur lokal, dan “value” menunjukkan jalur OSS. |
logMapping | Map | Tidak | Pemetaan dari jalur log ke jalur OSS. “key” menunjukkan jalur lokal, dan “value” menunjukkan jalur OSS. |
instanceCount | int | Ya | Jumlah instance dalam tugas. Ini adalah bilangan bulat positif. |
timeout | int | Ya | Waktu eksekusi maksimum (timeout) instance dalam tugas. Nilainya berkisar dari 1 hingga 86400. Satuan adalah detik. |
mounts | Mounts | Tidak | Konfigurasi mounting jaringan instance, yang dijelaskan oleh Mounts. Saat ini, mounting NAS dan OSS didukung. |
maxRetryCount | int | Tidak | Jumlah maksimum percobaan ulang. Nilai default: 0 |
writeSupport | Boolean | Tidak | Dukungan penulisan untuk direktori yang dipasang sebagai baca-saja dalam inputMapping. Perhatikan bahwa file yang telah dipasang bersifat baca-saja dan tidak dapat ditimpa. |
Atribut AutoCluster
Metode getter dan setter tersedia untuk semua atribut.
Atribut | Tipe | Diperlukan | Deskripsi |
ECSImageId | String | Ya | Bisa berupa ID citra ECS atau ID citra terdaftar. |
instanceType | String | Ya | Tipe instance. Tipe instance yang didukung bervariasi menurut wilayah. |
resourceType | String | Ya | Tipe sumber daya. Saat ini, parameter ini hanya dapat disetel ke OnDemand, yang merupakan nilai default. |
SpotStrategy | String | Ya | Strategi spot untuk instance. Ini berlaku hanya ketika ResourceType adalah Spot. Nilai: SpotWithPriceLimit (atur harga maksimum untuk instance spot) dan SpotAsPriceGo (sistem memberikan harga secara otomatis, dan nilai maksimumnya adalah harga Pay-As-You-Go). |
SpotPriceLimit | Float | Tidak | Harga maksimum instance per jam. Nilainya dapat mengandung maksimal tiga desimal. Ini berlaku ketika SpotStrategy adalah SpotWithPriceLimit. |
userData | Map | Tidak | Data pengguna |
configs | Configs | Tidak | Konfigurasi kluster, seperti konfigurasi disk instance. Ini dijelaskan oleh [Configs]. |
ReserveOnFail | Bool | Tidak | Ketika tugas gagal, VM terkait tidak dilepaskan, dan biaya untuk sumber daya tersebut masih dikenakan sampai pengguna menghapus pekerjaan. Nilai default adalah False. Ini hanya digunakan dalam survei. |
Atribut Parameters
Metode getter dan setter tersedia untuk semua atribut.
Atribut | Tipe | Diperlukan | Deskripsi |
command | Command | Ya | Parameter baris perintah terkait dengan program pengguna. |
inputMappingConfig | InputMappingConfig | Tidak | Konfigurasi layanan mounting NFS. |
stdoutRedirectPath | String | Ya | Direktori OSS tempat keluaran standar dialihkan. |
stderrRedirectPath | String | Ya | Direktori OSS tempat kesalahan standar dialihkan. |
Atribut Command (metode getter dan setter tersedia untuk semua atribut)
Atribut | Tipe | Diperlukan | Deskripsi |
commandLine | String | Ya | Menentukan perintah untuk menjalankan program pengguna. |
PackagePath | String | Ya | Jalur OSS tempat program pengguna berada. |
EnvVars | Map | Tidak | Variabel lingkungan yang akan dikonfigurasi saat program pengguna mulai berjalan. |
Atribut InputMappingConfig
Metode getter dan setter tersedia untuk semua atribut.
Atribut | Tipe | Diperlukan | Deskripsi |
lock | Boolean | Tidak | Menentukan apakah layanan mounting NFS mendukung kunci file jaringan. Jika disetel ke true, kunci file jaringan diaktifkan untuk memberikan dukungan backend untuk kunci file. Jika disetel ke false, kunci file jaringan dinonaktifkan dan kinerja akses file dapat ditingkatkan. Kunci file hanya didukung di klien NFS dan tidak akan disinkronkan ke server. Di beberapa sistem operasi, metode kunci file yang ditampilkan mungkin gagal. |
locale | String | Tidak | Semua objek di OSS diberi nama menggunakan UTF-8. Parameter ini menentukan set karakter lokal yang digunakan setelah mounting. Nilai opsional termasuk GBK, GB2312-80, BIG5, ANSI, EUC-JP, EUC-TW, EUC-KR, SHIFT-JIS, dan KSC5601. |
Atribut Notification
Metode getter dan setter tersedia untuk semua atribut.
Atribut | Tipe | Diperlukan | Deskripsi |
topic | Topic | Tidak | Topik pesan |
Atribut Topic
Metode getter dan setter tersedia untuk semua atribut.
Atribut | Tipe | Diperlukan | Deskripsi | |
endpoint | String | Ya | Titik akhir wilayah MNS. Formatnya adalah http://${your_user_id}.mns.${region}-internal.aliyuncs.com/. Gunakan titik akhir intranet jika memungkinkan. | |
name | String | Ya | Nama topik | |
events |
| Ya | Daftar acara. Anda harus memasukkan acara terkait pekerjaan. |
Atribut AppJobDescription
Atribut | Tipe | Diperlukan | Deskripsi |
appName | String | Ya | Nama aplikasi. Set karakter yang valid adalah [a-zA-Z0-9_-:]. Panjangnya tidak boleh melebihi 1024 karakter. Dua format tersedia untuk nama aplikasi, dan digunakan untuk mengakses aplikasi publik dan aplikasi pribadi Anda masing-masing. Misalnya, untuk mengakses aplikasi publik "App1", atur appName ke Public:App1. "Public" dapat dikecualikan, yaitu nama aplikasi berubah menjadi ":App1". Jika App1 adalah aplikasi pribadi Anda, langsung atur appName ke App1. |
inputs | Map | Ya | Parameter input pekerjaan. “Map” harus bernilai antara 0 dan 50. “Key” harus berupa nama parameter yang didefinisikan dalam InputParameters dari aplikasi, dan “Value” harus sesuai dengan tipe parameter dalam aplikasi. |
outputs | Map | Tidak | Parameter output pekerjaan. “Map” harus bernilai antara 0 dan 50. “Key” harus berupa nama parameter yang didefinisikan dalam OutputParameters dari aplikasi dan LocalPath yang tidak null, dan “Value” harus berupa jalur OSS. Nilai default:{}. |
logging | AppJobDescription.Loggin | Tidak | Konfigurasi log. |
config | Map | Tidak | Konfigurasi pelaksanaan pekerjaan. |
Atribut AppJobDescription.Loggin
Parameter | Tipe | Diperlukan | Deskripsi |
stdoutPath | String | Tidak | Direktori OSS tempat keluaran standar dialihkan. Panjangnya tidak boleh melebihi 1000 karakter. Nilai default: null |
stderrPath | String | Tidak | Direktori OSS tempat kesalahan standar dialihkan. Panjangnya tidak boleh melebihi 1000 karakter. Nilai default: null |
Deskripsi respons
Jika pembuatan berhasil, instance CreateJobResponse dikembalikan. Anda dapat menggunakan response.getJobId() untuk mendapatkan nama pekerjaan yang dibuat.
Tipe | Deskripsi |
CreateJobResponse | Mendapatkan ID pekerjaan yang dibuat. |
Nama paket CreateJobResponse adalah com.aliyuncs.batchcompute.model.v20151111. Respons lain yang terdaftar di bawah ini berada dalam paket ini.
Jika pembuatan gagal, ClientException dilemparkan.
Kode contoh untuk mengirimkan pekerjaan DAG
Struktur JobDescription kompleks. Oleh karena itu, disarankan menggunakan IntelliJ IDEA Community untuk pengembangan.
package com.aliyuncs.batchcompute.sample.v20151111;
import com.aliyuncs.batchcompute.main.v20151111.*;
import com.aliyuncs.batchcompute.model.v20151111.*;
import com.aliyuncs.batchcompute.pojo.v20151111.*;
import com.aliyuncs.exceptions.ClientException;
public class CreateJob {
public static void main(String[] args) {
BatchCompute client = new BatchComputeClient("cn-shenzhen", "your_access_id", "your_access_secret");
try {
JobDescription jobDescription = getJobDesc();
CreateJobResponse response = client.createJob(jobDescription);
String jobId = response.getJobId();
//Pembuatan berhasil
System.out.println("Got job id:" + jobId);
} catch (ClientException e) {
e.printStackTrace();
//Pembuatan gagal
}
}
private static JobDescription getJobDesc() {
JobDescription desc = new JobDescription();
desc.setName("testJob");
desc.setPriority(1);
desc.setDescription("Demo");
desc.setType("DAG");
desc.setJobFailOnInstanceFail(true);
desc.setAutoRelease(false);
DAG dag = new DAG();
dag.addTask(getTaskDesc());
desc.setDag(dag);
Notification noti = new Notification();
Topic topic = new Topic();
topic.addEvent(Topic.ON_JOB_FAILED);
topic.addEvent(Topic.ON_JOB_FINISHED);
noti.setTopic(topic);
topic.setName("tp_n1");
topic.setEndpoint("xxxxx");
desc.setNotification(noti);
return desc;
}
private static TaskDescription getTaskDesc() {
TaskDescription task = new TaskDescription();
task.setClusterId("cls-xxxxxx");
task.setInstanceCount(1);
task.setMaxRetryCount(2);
task.setTaskName("task_1");
task.setTimeout(10000);
Parameters parameters = new Parameters();
Command cmd = new Command();
cmd.setCommandLine("python main.py");
cmd.setPackagePath("oss://my-bucket/test/worker.tar.gz");
parameters.setCommand(cmd);
parameters.setStderrRedirectPath("oss://my-bucket/test/logs/");
parameters.setStdoutRedirectPath("oss://my-bucket/test/logs/");
InputMappingConfig input = new InputMappingConfig();
input.setLocale("GBK");
input.setLock(true);
parameters.setInputMappingConfig(input);
task.setParameters(parameters);
task.addInputMapping("oss://my-bucket/disk1/", "/home/admin/disk1/");
task.addOutputMapping("/home/admin/disk2/", "oss://my-bucket/disk2/");
return task;
}
}Kode contoh untuk mengirimkan pekerjaan App
package com.aliyuncs.batchcompute;
import com.aliyuncs.batchcompute.main.v20151111.BatchCompute;
import com.aliyuncs.batchcompute.main.v20151111.BatchComputeClient;
import com.aliyuncs.batchcompute.model.v20151111.CreateJobResponse;
import com.aliyuncs.batchcompute.pojo.v20151111.AppJobDescription;
import com.aliyuncs.batchcompute.pojo.v20151111.JobDescription;
import com.aliyuncs.exceptions.ClientException;
public class CreateAppJob {
public static void main(String[] args){
BatchCompute client = new BatchComputeClient("cn-shenzhen", "your_access_id", "your_access_secret");
try {
JobDescription jobDescription = getJobDesc();
CreateJobResponse response = client.createJob(jobDescription);
String jobId = response.getJobId();
//Pembuatan berhasil
System.out.println("Got job id:" + jobId);
} catch (ClientException e) {
e.printStackTrace();
//Pembuatan gagal
}
}
private static JobDescription getJobDesc() {
JobDescription jobDesc = new JobDescription();
AppJobDescription app = new AppJobDescription();
app.setAppName("myApp");
app.addInputs("abc", "oss://bucket/inp");
app.addOutputs("out", "oss://bucket/out");
AppJobDescription.Logging logging = new AppJobDescription.Logging();
logging.setStderrPath("oss://bucket/key/logs");
logging.setStdoutPath("oss://bucket/key/logs");
app.setLogging(logging);
jobDesc.setName("java-sdk-test");
jobDesc.setDescription("java sdk test job");
jobDesc.setType("App");
jobDesc.setApp(app);
return jobDesc;
}
}