93
奇藝
如何提交作業__操作指南_批量計算-阿裏雲
如何提交一個作業
A君: 我有一個python程序,我在本地可以這麼運行:python test.py, 但是想要在雲上運行怎麼做?
test.py 內容如下:
print('Hello, cloud!')
雲上運行大致過程: 您提交一個作業到BatchCompute,BatchCompute會按照你提供的配置去申請機器,啟動虛擬機,在虛擬機中運行: python test.py, 得到結果後自動上傳到OSS中。然後您可以去OSS中查看運行的結果。
提交作業的方法有很多,下麵列舉4種:
1. 使用命令行(一條命令提交作業):
bcs sub "python test.py" -p ./test.py
搞定!
- 這條命令會將test.py文件打包成 worker.tar.gz 上傳到指定位置,然後再提交作業運行。
bcs命令需要先安裝 batchcompute-cli工具才能使用, 請看這裏。
2. 使用控製台提交作業:
下麵列舉詳細解釋步驟:
(1). 將test.py打包上傳到雲端OSS
在test.py所在目錄運行下麵的命令:
tar -czf worker.tar.gz test.py # 將 test.py 打包到 worker.tar.gz
然後使用OSS控製台將 worker.tar.gz 上傳到OSS。
如果還沒有開通OSS,請先開通.
還需要創建Bucket,假設創建了Bucket名稱為 mybucket
然後在這個Bucket下創建一個目錄: test
假設您上傳到了mybucket這個Bucket下的test目錄下,則OSS路徑表示為: oss://mybucket/test/worker.tar.gz
(2). 使用控製台提交作業
打開 提交作業頁麵。
- 按照表單提示,填寫作業名稱: first_job
- 拖拽一個任務,按照下圖填寫表單, 其中ECS鏡像ID可以從這裏獲取: 鏡像
然後點擊下麵的”提交作業”按鈕, 即可提交成功。
提交成功後,自動跳轉到作業列表頁麵,您可以在這裏看到你提交的作業狀態。
等待片刻後作業運行完成,即可查看結果。
3. 使用 Python SDK 提交作業
(1) 將test.py打包上傳到雲端OSS
同上一節。
(2) 提交作業
from batchcompute import Client, ClientError
from batchcompute import CN_SHENZHEN as REGION
ACCESS_KEY_ID = 'your_access_key_id' #需要配置
ACCESS_KEY_SECRET = 'your_access_key_secret' #需要配置
job_desc = {
"Name": "my_job_name",
"Description": "hello test",
"JobFailOnInstanceFail": true,
"Priority": 0,
"Type": "DAG",
"DAG": {
"Tasks": {
"test": {
"InstanceCount": 1,
"MaxRetryCount": 0,
"Parameters": {
"Command": {
"CommandLine": "python test.py",
"PackagePath": "oss://mybucket/test/worker.tar.gz"
},
"StderrRedirectPath": "oss://mybucket/test/logs/",
"StdoutRedirectPath": "oss://mybucket/test/logs/"
},
"Timeout": 21600,
"AutoCluster": {
"InstanceType": "bcs.a2.large",
"ImageId": "img-ubuntu"
}
}
},
"Dependencies": {}
}
}
client = Client(REGION, ACCESS_KEY_ID, ACCESS_KEY_SECRET)
result = client.create_job(job_desc)
job_id = result.Id
....
(3) 更多關於Python SDK內容
請看 Python SDK
4. 使用 Java SDK 提交作業
(1) 將test.py打包上傳到雲端OSS
同上一節。
(2) 提交作業
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 SubmitJob{
String REGION = "cn-shenzhen";
String ACCESS_KEY_ID = ""; //需要配置
String ACCESS_KEY_SECRET = ""; //需要配置
public static void main(String[] args) throws ClientException{
JobDescription desc = new SubmitJob().getJobDesc();
BatchCompute client = new BatchComputeClient(REGION, ACCESS_KEY_ID, ACCESS_KEY_SECRET);
CreateJobResponse res = client.createJob(desc);
String jobId = res.getJobId();
//...
}
private JobDescription getJobDesc() {
JobDescription desc = new JobDescription();
desc.setName("testJob");
desc.setPriority(1);
desc.setDescription("JAVA SDK TEST");
desc.setType("DAG");
desc.setJobFailOnInstanceFail(true);
DAG dag = new DAG();
dag.addTask(getTaskDesc());
desc.setDag(dag);
return desc;
}
private TaskDescription getTaskDesc() {
TaskDescription task = new TaskDescription();
task.setClusterId(gClusterId);
task.setInstanceCount(1);
task.setMaxRetryCount(0);
task.setTaskName("test");
task.setTimeout(10000);
AutoCluster autoCluster = new AutoCluster();
autoCluster.setImageId("img-ubuntu");
autoCluster.setInstanceType("bcs.a2.large");
// autoCluster.setResourceType("OnDemand");
task.setAutoCluster(autoCluster);
Parameters parameters = new Parameters();
Command cmd = new Command();
cmd.setCommandLine("python test.py");
// cmd.addEnvVars("a", "b");
cmd.setPackagePath("oss://mybucket/test/worker.tar.gz");
parameters.setCommand(cmd);
parameters.setStderrRedirectPath("oss://mybucket/test/logs/");
parameters.setStdoutRedirectPath("oss://mybucket/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.addOutputtMapping("/home/admin/disk2/", "oss://my-bucket/disk2/");
// task.addLogMapping( "/home/admin/a.log","oss://my-bucket/a.log");
return task;
}
}
(3) 更多關於Java SDK內容
請看 Java SDK
最後更新:2016-12-05 17:40:27
上一篇:
Python快速開始__快速入門_批量計算-阿裏雲
下一篇:
OSS掛載__操作指南_批量計算-阿裏雲
CC防護規則-正常與緊急__功能說明_Web 應用防火牆-阿裏雲
修改Pipeline__Pipeline管理_Console參考手冊_數據集成-阿裏雲
分析型數據庫監控__雲服務監控_用戶指南_雲監控-阿裏雲
多結構數據存儲__典型應用_用戶指南_雲數據庫 RDS 版-阿裏雲
報警設置__用戶指南_雲數據庫 Redis 版-阿裏雲
創建刪除表__快速開始_大數據計算服務-阿裏雲
創建隊列__隊列操作_快速入門_消息服務-阿裏雲
FailReason__數據類型_API參考_E-MapReduce-阿裏雲
雲棲大會:阿裏雲都發布了什麼產品?
步驟 3-2:創建和設置報表控件__創建監控任務_用戶指南_業務實時監控服務 ARMS-阿裏雲
相關內容
常見錯誤說明__附錄_大數據計算服務-阿裏雲
發送短信接口__API使用手冊_短信服務-阿裏雲
接口文檔__Android_安全組件教程_移動安全-阿裏雲
運營商錯誤碼(聯通)__常見問題_短信服務-阿裏雲
設置短信模板__使用手冊_短信服務-阿裏雲
OSS 權限問題及排查__常見錯誤及排除_最佳實踐_對象存儲 OSS-阿裏雲
消息通知__操作指南_批量計算-阿裏雲
設備端快速接入(MQTT)__快速開始_阿裏雲物聯網套件-阿裏雲
查詢API調用流量數據__API管理相關接口_API_API 網關-阿裏雲
使用STS訪問__JavaScript-SDK_SDK 參考_對象存儲 OSS-阿裏雲