BatchCompute 中, 提交作業時使用 docker 與普通 VM 作業基本相同,只是在設置作業參數時有稍微區別。
1. DAG 作業
1.1 使用支持 Docker 的 ImageId
需要將集群描述的 ImageId 指定為 BatchCompute 的公共鏡像的 Id(支持 Docker 鏡像, ID 為 img-ubuntu)。
AutoCluster 集群 ImageId 設置代碼:
//設置AutoCluster集群ImageID
AutoCluster autoCluster = new AutoCluster();
//設置集群鏡像信息ECSImageId 在不同region可能會發生變化
//autoCluster.setECSImageId("m-wz9dk5nao5z3fw6bo9k6");
//建議使用setImageId接口設置
autoCluster.setImageId("img-ubuntu");
固定集群 ImageId 設置代碼:
ClusterDescription desc = new ClusterDescription();
desc.setName("cluster_test");
desc.setImageId("img-ubuntu");
1.2 Docker 鏡像在 OSS
需要 DAG 作業環境變量(EnvVars)中增加如下兩個參數如下,具體 EnvVars 變量在 DAG 作業中的位置,參考API文檔。
字段名稱 | 描述 | 是否可選 |
BATCH_COMPUTE_DOCKER_IMAGE | Docker 鏡像名稱 | 可選 |
BATCH_COMPUTE_DOCKER_REGISTRY_OSS_PATH | Docker 鏡像在 OSS-Registry 中的存儲路徑 | 可選 |
如果沒有 BATCH_COMPUTE_DOCKER_IMAGE 參數,表示不使用 docker ,這時 BATCH_COMPUTE_DOCKER_REGISTRY_OSS_PATH 將被忽略。
如果有 BATCH_COMPUTE_DOCKER_IMAGE, 則表示使用 docker。
示例代碼:
//oss registry模式
cmd.addEnvVars("BATCH_COMPUTE_DOCKER_IMAGE", "localhost:5000/yuorBucket/dockers:0.1");//鏡像名稱:版本;
cmd.addEnvVars("BATCH_COMPUTE_DOCKER_REGISTRY_OSS_PATH", "oss://your-bucket/dockers");//設置OSS地址
1.3 Docker 鏡像在容器鏡像倉庫
需要 DAG 作業 Docker 變量設置容器鏡像倉庫地址以及鏡像版本號如下,具體 Docker 變量在 DAG 作業中的位置,參考API文檔。
示例代碼
//容器鏡像模式
Command.Docker docker = new Command.Docker();
docker.setImage("registry.cn-beijing.aliyuncs.com/demotest/test:0.1");
cmd.setDocker(docker);
1.4 創建作業的源碼
Java 源碼參考作業創建SDK描述。
2. APP 作業
APP在創建的時候指定是VM 運行還是 docker運行作業,因此需要在創建APP時配置,APP描述中設置docker配置。Docker 鏡像在 OSS 和鏡像在容器鏡像倉庫參數相同,只是設置方法存在差異。
2.1 Docker 鏡像在 OSS
示例代碼
//設置docker oss registry 模式
AppDescription.Docker docker = new AppDescription.Docker();
docker.setImage("localhost:5000/yuorBucket/dockers:0.1");//鏡像信息
docker.setRegistryOSSPath("oss://your-bucket/dockers");//OSS 地址
desc.setDocker(docker);
2.2 Docker 鏡像在容器鏡像倉庫
示例代碼
//設置docker oss registry 模式
AppDescription.Docker docker = new AppDescription.Docker();
//設置docker 容器鏡像服務模式
docker.setImage("registry.cn-beijing.aliyuncs.com/demotest/test:0.1");//鏡像信息
desc.setDocker(docker);
2.3 創建APP的源碼
Java 源碼參考APP創建SDK描述。