全部产品
Search
文档中心

:提交作业例子

更新时间:Feb 17, 2023

目录

  • 提交作业简介

  • 作业准备

    • 上传数据文件到OSS

    • 准备任务程序

  • 提交作业

    • 编写作业配置

    • 提交命令

  • 查看作业运行状态

  • 查看运行结果

1. 提交作业简介

在 BatchCompute 中, 提交作业时使用 docker 与普通作业基本相同, 只有2点区别:

1.1. 使用支持 Docker 的 ImageId

您只需要将任务描述的 ImageId 指定为 BatchCompute 的公共镜像的Id(支持Docker的镜像, ID为img-ubuntu),或者使用设置了该ImageId的 Cluster的ClusterId。

1.2. 在task描述的环境变量(EnvVars)中增加如下两个参数

字段名称

描述

是否可选

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。

2. 作业准备

本作业程序使用python编写,目的是统计一个日志文件中 INFO、WARN、ERROR 和 DEBUG 出现的次数。

该作业包含3个任务:split, count 和 merge。

  • split 任务会把日志文件分成 3 份。

  • count 任务会统计每份日志文件中 INFO、WARN、ERROR 和 DEBUG 出现的次数(count 任务需要配置InstanceCount为3,表示同时启动3个 count 任务)。

  • merge 任务会把 count 的结果统一合并起来。

DAG图例

DAG图例

2.1. 上传数据文件到OSS

下载本例子所需的数据:log-count-data.txt

将 log-count-data.txt 上传到:

说明

oss://your-bucket/log-count/log-count-data.txt

  • your-bucket如表示您自己创建的bucket,本例子假设region为:cn-shenzhen。

  • 如何上传到OSS,请参考OSS上传文档

2.2. 准备任务程序

本例子的作业程序是使用python编写的, 下载本例子所需的程序:log-count.tar.gz

使用下面的目录解压:

 mkdir log-count && tar -xvf log-count.tar.gz -C log-count

解压后的log-count/目录结构如下:

 log-count
   |-- conf.py    # 配置
   |-- split.py       # split 任务程序
   |-- count.py      # count 任务程序
   |-- merge.py    # merge 任务程序
  • 注意:不需要改动程序。

3. 提交作业

说明

提交作业可以使用 python sdk 或者 java sdk, 或者控制台提交,本例子使用命令行工具提交。

3.1. 编写作业配置

在log-count的父目录下创建一个文件:job.cfg(此文件要与log-count目录平级), 内容如下:

[DEFAULT]
job_name=log-count
description=demo
pack=./log-count/
deps=split->count;count->merge

[split]
cmd=python split.py

[count]
cmd=python count.py
nodes=3

[merge]
cmd=python merge.py

这里描述了一个多任务的作业,任务的执行顺序是 split->count->merge。

3.2. 提交命令

bcs sub --file job.cfg -r oss://your-bucket/log-count/:/home/input -w oss://your-bucket/log-count/:/home/output --docker localhost:5000/myubuntu@oss://your-bucket/dockers/
  • -r 和 -w 表示只读挂载和可写映射,具体请看这里:OSS挂载

  • 同一个OSS路径,可以挂载到不同的本地目录。但是不同的OSS路径是不能挂载到同一个本地目录的,一定要注意。

  • —docker 表示使用docker,格式:image_name@storage_oss_path, 会自动将docker名称和仓库地址配置到环境变量。

  • 注意:bcs 使用的region,一定要和docker所在region一致。

4. 查看作业运行状态

bcs j   # 获取作业列表, 每次获取作业列表后都会将列表缓存下来,一般第一个即是你刚才提交的作业
bcs ch 1  # 查看缓存中第一个作业的状态
bcs log 1 # 查看缓存中第一个作业日志

5. 查看结果

Job结束后,可以使用以下命令查看存在OSS中的结果。

bcs oss cat oss://your-bucket/log-count/merge_result.txt

内容应该如下:

{"INFO": 2460, "WARN": 2448, "DEBUG": 2509, "ERROR": 2583}