全部产品
弹性计算 会员服务 网络 安全 移动云 数加·大数据分析及展现 数加·大数据应用 管理与监控 云通信 阿里云办公 培训与认证 智能硬件
存储与CDN 数据库 域名与网站(万网) 应用服务 数加·人工智能 数加·大数据基础服务 互联网中间件 视频服务 开发者工具 解决方案 物联网 更多
批量计算

控制台快速开始

更新时间:2018-02-12 22:04:38

介绍如何使用控制台来提交一个作业,目的是统计一个日志文件中 INFOWARNERRORDEBUG 出现的次数。

如果您还没开通批量计算服务,请先开通

步骤预览

  1. 作业准备。

    • 上传数据文件到OSS。
    • 上传任务程序到OSS。
  2. 使用控制台提交作业。

  3. 查看作业状态。

  4. 查看结果。

1. 作业准备

本作业是统计一个日志文件中 INFOWARNERRORDEBUG 出现的次数。

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

  • split 任务会把日志文件分成 3 份。
  • count 任务会统计每份日志文件中 INFOWARNERRORDEBUG 出现的次数(count 任务需要配置 InstanceCount 为3,表示同时启动 3 个 count 任务)。
  • merge 任务会把 count 的结果统一合并起来。

DAG图例

DAG图例

上传数据文件到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文件上传以及常用OSS工具

上传任务程序到OSS

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

本例子不需要改动示例代码。直接将 log-count.tar.gz 上传到 oss,如上传到:

oss://your-bucket/log-count/log-count.tar.gz。

如何上传前面已经讲过。

  • BatchCompute 只支持以 tar.gz 为后缀的压缩包, 请注意务必用以上方式(gzip)打包, 否则将会无法解析。
  • 如果你要修改代码,可以解压后修改,然后要用下面的方法打包:

命令如下:

  1. > cd log-count #进入目录
  2. > tar -czf log-count.tar.gz * #打包,将所有这个目录下的文件打包到 log-count.tar.gz

可以运行这条命令查看压缩包内容:

  1. $ tar -tvf log-count.tar.gz

可以看到以下列表:

  1. conf.py
  2. count.py
  3. merge.py
  4. split.py

2. 使用控制台提交作业

  1. 登录BatchCompute控制台

  2. 单击 作业列表 > 提交作业 进行作业提交。请选择合适的Region(该region需要和bucket的region一致)。

    提交作业

    这里使用了AutoCluster提交作业, 匿名集群需要至少配置 2 个参数, 其中:

    • 可用的镜像ID, 可以使用系统提供的Image,也可以自行制作镜像, 请看使用镜像

    • 实例规格(InstanceType,实例类型),请看 目前支持类型

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

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

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

    1. {
    2. "DAG": {
    3. "Dependencies": {
    4. "split": [
    5. "count"
    6. ],
    7. "count": [
    8. "merge"
    9. ],
    10. "merge": []
    11. },
    12. "Tasks": {
    13. "split": {
    14. "InstanceCount": 1,
    15. "LogMapping": {},
    16. "AutoCluster": {
    17. "Configs": {
    18. "Networks": {
    19. "VPC": {
    20. "CidrBlock": "192.168.0.0/16"
    21. }
    22. }
    23. },
    24. "ResourceType": "OnDemand",
    25. "InstanceType": "ecs.sn1ne.large",
    26. "ImageId": "img-ubuntu-vpc"
    27. },
    28. "Parameters": {
    29. "Command": {
    30. "EnvVars": {},
    31. "CommandLine": "python split.py",
    32. "PackagePath": "oss://your-bucket/log-count/log-count.tar.gz"
    33. },
    34. "InputMappingConfig": {
    35. "Lock": true
    36. },
    37. "StdoutRedirectPath": "oss://your-bucket/log-count/logs/",
    38. "StderrRedirectPath": "oss://your-bucket/log-count/logs/"
    39. },
    40. "InputMapping": {
    41. "oss://your-bucket/log-count/": "/home/input/"
    42. },
    43. "OutputMapping": {
    44. "/home/output/": "oss://your-bucket/log-count/"
    45. },
    46. "MaxRetryCount": 0,
    47. "Timeout": 21600,
    48. "ClusterId": ""
    49. },
    50. "merge": {
    51. "InstanceCount": 1,
    52. "LogMapping": {},
    53. "AutoCluster": {
    54. "Configs": {
    55. "Networks": {
    56. "VPC": {
    57. "CidrBlock": "192.168.0.0/16"
    58. }
    59. }
    60. },
    61. "ResourceType": "OnDemand",
    62. "InstanceType": "ecs.sn1ne.large",
    63. "ImageId": "img-ubuntu-vpc"
    64. },
    65. "Parameters": {
    66. "Command": {
    67. "EnvVars": {},
    68. "CommandLine": "python merge.py",
    69. "PackagePath": "oss://your-bucket/log-count/log-count.tar.gz"
    70. },
    71. "InputMappingConfig": {
    72. "Lock": true
    73. },
    74. "StdoutRedirectPath": "oss://your-bucket/log-count/logs/",
    75. "StderrRedirectPath": "oss://your-bucket/log-count/logs/"
    76. },
    77. "InputMapping": {
    78. "oss://your-bucket/log-count/": "/home/input/"
    79. },
    80. "OutputMapping": {
    81. "/home/output/": "oss://your-bucket/log-count/"
    82. },
    83. "MaxRetryCount": 0,
    84. "Timeout": 21600,
    85. "ClusterId": ""
    86. },
    87. "count": {
    88. "InstanceCount": 3,
    89. "LogMapping": {},
    90. "AutoCluster": {
    91. "Configs": {
    92. "Networks": {
    93. "VPC": {
    94. "CidrBlock": "192.168.0.0/16"
    95. }
    96. }
    97. },
    98. "ResourceType": "OnDemand",
    99. "InstanceType": "ecs.sn1ne.large",
    100. "ImageId": "img-ubuntu-vpc"
    101. },
    102. "Parameters": {
    103. "Command": {
    104. "EnvVars": {},
    105. "CommandLine": "python count.py",
    106. "PackagePath": "oss://your-bucket/log-count/log-count.tar.gz"
    107. },
    108. "InputMappingConfig": {
    109. "Lock": true
    110. },
    111. "StdoutRedirectPath": "oss://your-bucket/log-count/logs/",
    112. "StderrRedirectPath": "oss://your-bucket/log-count/logs/"
    113. },
    114. "InputMapping": {
    115. "oss://your-bucket/log-count/": "/home/input/"
    116. },
    117. "OutputMapping": {
    118. "/home/output/": "oss://your-bucket/log-count/"
    119. },
    120. "MaxRetryCount": 0,
    121. "Timeout": 21600,
    122. "ClusterId": ""
    123. }
    124. }
    125. },
    126. "Description": "batchcompute job",
    127. "Priority": 0,
    128. "JobFailOnInstanceFail": true,
    129. "Type": "DAG",
    130. "Name": "log-count"
    131. }
    • 确定各个参数及路径填写正确后,点击左下角的提交作业,并确认。

3. 查看作业状态

  • 单击作业列表中最新提交的log-count作业,可以查看详情:

    作业详情

  • 单击任务名称 split,可以查看任务详情:

    任务详情

  • 单击绿色方块,可以查看实例的日志:

    查看日志

4. 查看结果

您可以登录OSS控制台 查看your-bucket 这个bucket下面的这个文件:/log-count/merge_result.json。

内容应该如下:

  1. {"INFO": 2460, "WARN": 2448, "DEBUG": 2509, "ERROR": 2583}
本文导读目录