全部产品
云市场

控制台快速开始1

更新时间:2019-08-06 14:00:04

快速开始例子1

1. 作业准备

本作业的目的是求和,将1.txt和2.txt中的数字全部加起来,求和后写入result.txt。

由于计算比较简单本作业只需1个任务。

本例将OSS的目录挂载为VM本地目录,使用文件方式操作。

(1) 上传数据文件到OSS

先自行创建1.txt和2.txt。

1.txt的内容:

  1. 2 40 51

2.txt的内容:

  1. 3 67 81

将 1.txt和2.txt 上传到:

  1. oss://your-bucket/sum/inputs/1.txt
  2. oss://your-bucket/sum/inputs/2.txt
  • your-bucket如表示您自己创建的bucket,本例子假设region为: cn-qingdao.
  • 如何上传到OSS,请参考OSS上传文档

(2) 准备任务程序

sum.py 内容:

  1. # for python 3.x
  2. try:
  3. from functools import reduce
  4. except:
  5. pass
  6. import os
  7. INPUT = '/home/inputs'
  8. OUTPUT = '/home/outputs'
  9. # read 1.txt
  10. with open('%s/1.txt' % INPUT) as f:
  11. arr = f.read().split(' ')
  12. # change str array to int array
  13. arr = [int(x) for x in arr]
  14. # read 2.txt
  15. with open('%s/2.txt' % INPUT) as f:
  16. arr2 = f.read().split(' ')
  17. # chagne str array to in array
  18. arr2 = [int(x) for x in arr2]
  19. print("inputs: %s %s" % (arr,arr2))
  20. # sum all numbers
  21. result = reduce(lambda x,y:x+y, arr+arr2)
  22. print("result: %s" % result)
  23. # make dirs manually (it will be fixed in next version)
  24. if not os.path.exists(OUTPUT):
  25. os.makedirs(OUTPUT)
  26. # write result to result.txt
  27. with open('%s/result.txt' % OUTPUT, 'w') as f:
  28. f.write('%s' % result)

(3) 将程序打成一个tar.gz压缩包,命令如下:

  1. > tar -czf worker.tar.gz sum.py #打包

(4) 上传任务程序到OSS

将 worker.tar.gz 上传到OSS,如上传到:

oss://your-bucket/sum/worker.tar.gz。

4. 使用控制台提交作业

登录BatchCompute控制台

然后点击”作业列表”—“提交作业”进行作业提交。请注意选择合适Region(该region需要和bucket的region一致)。

提交作业

如果需要运行本例子,请把 PackagePath (作业打包上传的OSS路径,本例子中为 oss://your-bucket/sum/worker.tar.gz)、

StdoutRedirectPath、StderrRedirectPath(任务结果和错误的输出地址),修改成与上文对应的您的OSS路径(本例子中为:oss://your-bucket/sum/logs/)。

  • 作业JSON模板如下,具体参数含义请参照这里

  • 注意: 这里使用了AutoCluster提交作业, 需要填写ECS镜像ID, ECS镜像ID的获取请看这里.

  1. {
  2. "DAG": {
  3. "Dependencies": { },
  4. "Tasks": {
  5. "sum": {
  6. "InstanceCount": 1,
  7. "LogMapping": {},
  8. "ClusterId": "",
  9. "AutoCluster": {
  10. "ECSImageId": "m-282q1y6ld",
  11. "InstanceType": "ecs.s3.large"
  12. },
  13. "Parameters": {
  14. "Command": {
  15. "EnvVars": {},
  16. "CommandLine": "python sum.py",
  17. "PackagePath": "oss://your-bucket/sum/worker.tar.gz"
  18. },
  19. "InputMappingConfig": {
  20. "Lock": true
  21. },
  22. "StdoutRedirectPath": "oss://your-bucket/sum/logs/",
  23. "StderrRedirectPath": "oss://your-bucket/sum/logs/"
  24. },
  25. "InputMapping": {
  26. "oss://your-bucket/sum/inputs/": "/home/inputs/"
  27. },
  28. "OutputMapping": {
  29. "/home/outputs/": "oss://your-bucket/sum/outputs/"
  30. },
  31. "MaxRetryCount": 0,
  32. "Timeout": 21600
  33. }
  34. }
  35. },
  36. "Description": "batchcompute job",
  37. "Priority": 0,
  38. "JobFailOnInstanceFail": true,
  39. "Type": "DAG",
  40. "Name": "console_demo"
  41. }

确定各个参数及路径填写正确后,点击左下角的“提交作业”,并确认。

  • 这里使用了InputMapping和OutputMapping挂载功能.
  • InputMapping 将一个OSS目录挂载为本地只读目录,可以在程序中使用读取本地文件的方式读取。
  • OutputMapping 将一个OSS目录映射为本地目录,用户可以将结果写入这个本地目录,程序运行完成后,系统自动将这个目录下的所有文件上传到OSS目录。
  • 目前使用OutputMapping,需要在程序中显示创建目录/home/outputs/,这个会在下一版本修复。

5. 查询作业状态

提交作业后,页面将会自动跳转至控制台作业列表,列表第一列将会显示最新提交成功的作业。

6. 管理作业

作业提交成功后,作业为“等待中”或“运行”状态时,如果有需要可以点击右边的“停止”,之后也可以进行“重启”。

当作业状态为“停止”、“成功”或“失败”时,可以进行删除操作。

同时,还支持批量操作“重启”、“删除”或者“运行”。

7. 查看结果

可以使用OSS工具下载这个文件查看结果:

oss://your-bucket/sum/outputs/result.txt