runbatch阿里云批量计算使用示例

分别基于阿里云实例自定义镜像和集运docker镜像进行说明

1. 基于阿里云实例镜像运行

1.1. 镜像构建

镜像构建须联系管理员,分配一台阿里云主机,在该主机上部署相关软件流程环境,并创建镜像。

1.2. 配置文件和任务执行

1.2.1 在集群上安装好runjob软件,配置好$HOME/.runjob.config配置文件,示例如下

[Cluster]
ImageId = img-ubuntu
InstanceType = 
system_disk = 
CidrBlock = 
VpcId = 


[Task]
timeout = 10800
stdoutlog = oss://xxxx/xxxx/logs/stdout/
stderrlog = oss://xxxx/xxx/logs/stderr/
DOCKER_IMAGE = 
DOCKER_REGISTRY_OSS_PATH = 


[OSS]
ossSrc = oss://xxxx/
mountPath = /share/oss/
access_key_id = xxxxx
access_key_secret = xxxxx
  • 配置文件中xxxx位置根据实际情况添加,本例中oss假设挂载到阿里云主机中的/share/oss/目录下,若分析流程中使用的数据库或者测试数据,也需要先上传到OSS的/share/oss/xxx/xxx的某个路径中

1.2.2 任务运行

例如有一个任务:

现有一个数据库文件,存放在/share/oss/dengyong/mytest.txt

需要在集群上运行任务,要求将数据文件中的内容读取出来,并写入到/share/oss/dengyong/output/out.mytext文件中

然后将/share/oss/dengyong/output/out.mytext该文件从oss上拷贝到本地主机

则集群上的/home/dengyong/test/test.sh脚本中内容为:

mkdir -p /share/oss/dengyong/output/   // -m 1 -c 1
wait
cat /share/oss/dengyong/mytest.txt > /share/oss/dengyong/output/out.mytext   // -m 1 -c 1 -om /share/oss/dengyong/output/

当前目录为/home/dengyong/test/使用命令如下:

runbatch -j test.sh --mode batchcompute --call-back "ossutil64 cp oss://xxxx/dengyong/output/out.mytext /home/dengyong/test/"

即可将任务投递到阿里云上,等待任务运行完成之后,会在OSS存储上生成一个/share/oss/dengyong/output/out.mytext文件,如果需要的话,使用

--call-back参数,通过ossutil64命令将OSS上的数据拷贝到本地服务器。

注:

  • 必须使用 -om参数,确保阿里云服务器程序运行完成之后,将数据回传到指定的OSS目录,该目录下的全部文件才能被持久化写入到OSS存储中

  • /home/dengyong/test/test.sh本实例中会投递两个任务,通过wait关键字定义依赖,先创建出文件夹,然后将数据重定向到输出文件。第二个任务中指定了-om,即保存到OSS上数据的路径。

  • /home/dengyong/test/test.sh也可以直接一行命令mkdir -p /share/oss/dengyong/output/ &&  cat /share/oss/dengyong/mytest.txt > /share/oss/dengyong/output/out.mytext // -m 1 -c 1 --om /share/oss/dengyong/output/

  • 每行命令中指定的//后面的参数也可以通过runbatch -m 1 -c 1 --om /share/oss/dengyong/output/传入

2. 基于docker镜像运行

由于使用阿里云服务器的场景通常是大量计算和流程分析。流程环境复杂,需要通过本地部署和安装流程环境,docker作为一种通用虚拟的环境封装形式,是十分适用的场景。

2.1. 镜像构建

环境部署可直接在本地docker虚拟机中进行,需要部署环境时,可以联系我开放账户和密码远程连接到北京集群的虚拟主机中,进行环境部署和部署测试。

测试完成后将虚拟主机打包成docker镜像,并上传到OSS私有仓库中,北京集群也已搭建了OSS的私有docker仓库,可通过docker push命令将镜像上传。

上传后需要在配置文件中添加DOCKER_IMAGE = DOCKER_REGISTRY_OSS_PATH = ,或者单独添加一个参数配置文件,通过runbatch --ini参数将配置文件传入

2.2. 配置文件和任务执行

2.2.1 在集群上安装好runjob软件,配置好$HOME/.runjob.config配置文件,示例如下

[Cluster]
ImageId = img-ubuntu
InstanceType = 
system_disk = 
CidrBlock = 
VpcId = 


[Task]
timeout = 10800
stdoutlog = oss://xxxx/xxxx/logs/stdout/
stderrlog = oss://xxxx/xxx/logs/stderr/
DOCKER_IMAGE = localhost:5000/testimage:latest
DOCKER_REGISTRY_OSS_PATH = oss://xxxx/dengyong/dockers


[OSS]
ossSrc = oss://xxxx/
mountPath = /share/oss/
access_key_id = xxxxx
access_key_secret = xxxxx
  • 配置文件中xxxx位置根据实际情况添加,本例中oss假设挂载到阿里云主机中的/share/oss/目录下,若分析流程中使用的数据库或者测试数据,也需要先上传到OSS的/share/oss/xxx/xxx的某个路径中。

  • 须填写上传到OSS仓库中的docker镜像名和镜像路径。

  • 使用docker镜像运行时,ClusterImageId填写默认的img-ubuntu即可。

2.2.2 任务运行

上述配置完成后,任务运行和投递和1.2.2中一致