本地调试

如果希望使用 Docker 镜像进行本地调试, 可以根据本节内容操作。

1. 任务程序可以使用的变量说明

在 BatchCompute 中,运行在 docker 容器中的环境和不使用 docker 容器时的环境变量稍微不同, 具体请看 环境变量

2. 本地测试命令

在制作完成 docker 镜像后,您可以使用如下的命令进行本地测试。

  1. docker run -it -v /home/local_folder:/batchcompute/workdir
  2. -e BATCH_COMPUTE_DAG_INSTANCE_ID=<your_instance_id>
  3. -e BATCH_COMPUTE_DAG_TASK_ID=<your_task_name>
  4. -e BATCH_COMPUTE_DAG_JOB_ID=job-0000000000
  5. -e BATCH_COMPUTE_OSS_HOST=<your_oss_host>
  6. your_docker_image_name your_command

参数解释:

  1. -v /home/local_folder:/batchcompute/workdir 表示挂载本地 /home/local_folder 目录到 docker 容器镜像中的 /batchcompute/workdir 目录
  2. -e key=value 表示指定环境变量
  3. your_task_name 作业中 task 的名称
  4. your_job_name: 作业的名称
  5. your_instance_id: 任务实例 ID,从 0 开始递增的整数, 如这个任务你要启动 3 个实例来运行,则 id 分别为 012
  6. your_oss_host: OSS 主机名(域名,应包含 region 信息,且不带 "http://" 前缀)
  7. your_docker_image_name: 制作的 docker 镜像名称,如 myubuntu
  8. your_command:命令行及参数

例如,本地程序路径为: /home/admin/log-count/

  1. docker run -it -v /home/admin/log-count/:/batchcompute/workdir -e BATCH_COMPUTE_INSTANCE_ID=0 -e BATCH_COMPUTE_TASK_ID=split -e BATCH_COMPUTE_JOB_ID=job-0000000000 -e BATCH_COMPUTE_OSS_HOST=oss-cn-shenzhen.aliyuncs.com myubuntu python /batchcompute/workdir/split.py

这个命令是在本地运行 myubuntu 对应 docker 镜像,将本地目录 /home/admin/log-count/ 挂载到 docker 镜像的 /batchcompute/workdir/目录,并在这个镜像里运行 python /batchcompute/workdir/split.py 命令。

注意:

  • 路径 /home/admin/log-count/ 是程序所在目录, 目录中应当有 split.py。
  • BATCH_COMPUTE_INSTANCE_ID 从 0 开始,假如你配置该任务启动 3 个实例,则 BATCH_COMPUTE_INSTANCE_ID 分别为0,1,2。