Skip to content

cli_bcs

lijiaping edited this page Apr 25, 2019 · 1 revision

Bcs

与阿里云上运行项目相关的子命令。

config

核心基本设置

在阿里上调度任务之前,需要先配置相关参数。包括:

  • 授权:accesskey_idaccesskey_secret,阿里云身份认证使用,需要保管好
  • 存储:bucket,数据存放的Bucket
  • 区域:region,阿里云调度区域,需要与Bucket在同一个区域内
  • Docker镜像路径:registry_path,默认值为docker-images,一般情况无需修改
  • 默认虚拟机镜像:image,默认值为img-ubuntu,通常无需修改

asciicast

# 必须配置的参数
snap bcs config -accesskey_id xxxxxxxxxxxxxxxx -accesskey_secret xxxxxxxxxxxxxxx -bucket igenecode-bcs -region cn-hangzhou
#snap bcs config -accesskey_id xxxxxxxxxxxxxxxx -accesskey_secret xxxxxxxxxxxxxxx -bucket igenecode-bcs -region cn-hangzhou -registry_path docker-images -image img-ubuntu

VPC网络设置

正确设置VPC网络,才能使用容器内调试等高级功能

  • vpc_id:VPC网络的ID
  • vpc_cidr_block:VPC网络CIDR块的分配,建议设置为172.16.20.0/20
  • tmate_server:搭载了tmate服务的IP
snap bcs config -vpc_id xxxxx -vpc_cidr_block 172.16.20.0/20 -tmate_server 172.16.208.133

资源统计

设置对任务进行profile的时间间隔

  • benchmark_interval:进程资源消耗的采样时间间隔,单位是分钟
snap bcs config -benchmark_interval 3

钉钉消息通知

若要使用钉钉提醒功能,需要设置以下参数

  • access_token:钉钉群机器人的访问token
  • mobile:注册钉钉的手机号
snap bcs config -access_token xxxxxxxxxxxxxxxxxxxxxxxxxxx -mobile xxxxxxxxxxxx

access_token可在桌面版钉钉按以下路径查到: dingding.group dingding.robot dingding.access_token

stat

项目相关的宏观统计。包括项目执行进度,运行时间,存储占用,成本的统计。

asciicast

snap bcs stat -h
# 不加任何参数,显示所有项目的进度
snap bcs stat
# 查看指定项目的进度
snap bcs stat -p BYHKTW00320170-test
# size参数统计项目存储大小,当文件数量多时速度会较慢
snap bcs stat -size
# cost参数统计项目成本,需要先导入详单
snap bcs stat -cost
# 将存储成本一起统计
snap bcs stat -size -cost

show

查看指定项目相关的详细信息。

  • name:项目ID
  • description:项目说明
  • owner:项目属主
  • status:项目状态
  • type:项目类型
  • pipe:流程路径
  • path:项目路径
  • max_job:最大同时运行项目数
  • run_cnt:运行次数
  • create_date:项目创建时间
  • start_date:项目启动时间
  • finish_date:项目结束时间
  • discount:实例价格折扣
  • email:分析人员邮箱
  • mns:阿里消息通知服务接口
  • cluster:集群ID
  • auto_scale:是否自动调整集群内实例数量
  • task num:任务数量
  • elapsed:项目耗时

asciicast

# -p 参数是必须的,每次只能查看一个项目
snap bcs show -p BYHKTW00320170-test

update

修改项目的信息。

  • name:项目ID
  • description:项目说明
  • owner:项目属主
  • status:项目状态
  • path:项目路径
  • max_job:最大同时运行项目数
  • discount:实例价格折扣
  • email:分析人员邮箱
  • mns:阿里消息通知服务接口
  • cluster:预建的集群ID
  • auto_scale/no_auto_scale:是否自动调整集群内实例数量

asciicast

snap bcs show -p BYHKTW00320170-test
# 修改项目ID
snap bcs update -p BYHKTW00320170-test -name BYHKTW00320170-TEST
snap bcs stat -p BYHKTW00320170-test
# ID已经改变,原来的ID失效
# 使用新的ID
snap bcs stat -p BYHKTW00320170-TEST

# 修改最大任务数
sanp bcs update -p BYHKTW00320170-TEST -max_job 30
snap bcs show -p BYHKTW00320170-TEST
# 从50变为30

# 修改折扣
sanp bcs update -p BYHKTW00320170-TEST -discount 0.2
snap bcs show -p BYHKTW00320170-TEST
# 从0.1变为0.2

# 其他信息都是类似的修改方法

sync

与阿里同步任务状态。通常无需手动执行,因为cron命令会将该命令加入计划任务定时执行。在项目所在路径下会有执行日志snap.log,调度方面的错误信息会输出到这个文件。

snap bcs sync -p BYHKTW00320170-test

cron

设置计划任务。项目脚本与数据均上传至阿里后执行该命令,即可设置同步任务状态的计划任务。

asciicast

# 添加项目计划任务
snap bcs cron -p BYHKTW00320170-test -add

# 查看项目计划任务
snap bcs cron

# 修改计划任务间隔时间,单位是分钟。不能小于10分钟
snap bcs cron -p BYHKTW00320170-test -add -interval 20

# 删除项目计划任务
snap bcs cron -p BYHKTW00320170-test -delete

clean

项目执行完毕后,务必清理阿里云上的临时文件以及失败的任务

asciicast

# 删除中间文件
snap bcs clean -p BYHKTW00320170-test
# 删除所有文件
snap bcs clean -p BYHKTW00320170-test -all_files

resume

若配置文件写错,导致生成的脚本或mapping有错,需要重新生成整个项目的时候,会导致目前项目执行的进度丢失。此命令可依据日志文件恢复项目执行进度,继续从上次中断的地方执行项目。需要注意的是,处于Waiting状态的任务无法被恢复,所以需要先把这些任务停止掉。resume会影响在集群任务成本核算的准确性,所以还是应该尽量避免。

asciicast

# 停止自动任务投递
snap bcs cron -p BYHKWH0282018060601-B156 -delete
# 停止等待中的任务
snap task stop -p B156 -status waiting
# 依据修改后的配置文件parameter.conf重新生成项目脚本与mapping
snap pipe build -name RNAdenovo -param parameter.conf -overwrite
# 重新上传修正后的脚本
snap mapping sync -p B156 -name sh -estimate_size -overwrite
# 恢复项目进度
snap bcs resume -p B156
# 查看任务状态
snap bcs stat -p B156
# 检查任务依赖关系
snap task cyto -proj B156
# 重新开始任务投递
snap bcs cron -p BYHKWH0282018060601-B156 -delete

cost

项目执行完毕后,或执行过程中统计项目的开销核算。由于阿里详单是每天统计前一天的数据,所以要精确计算成本必须等项目完成后一天。详单要事先准备好,阿里的机子上每天会将详单下载至/home/lijiaping/costs/bcs stattask list子命令中的-cost参数需要先用此命令核算才能计算出正确的成本。

asciicast

# 对账,同时默认以模块级别统计成本
snap bcs cost -p BYHKTW00320170-test -bill ~/costs/

# 改为按App级别统计成本
snap bcs cost -p BYHKTW00320170-test -mode app

# 或task层级
snap bcs cost -p BYHKTW00320170-test -mode task

instance

查询可用的实例及其配置价格等信息。需要至少有一个项目存在才能查询。可以根据以下方式进行筛选:

  • name:实例名,支持模糊查询
  • cpu:实例CPU数量
  • mem:实例内存大小
  • disk_type:实例本地磁盘类型,可选项为HDD、SSD
  • disk_size:实例本地磁盘大小
  • price:价格为原价,正常可以竞价打折到2折左右。
  • latest:将输出实时最低价格

asciicast

# 根据CPU查询
snap bcs instance -proj BYHKTW00320170-test -cpu 64
# 项目ID可以省略
snap bcs instance -cpu 64
# 支持多参数同时筛选
snap bcs instance -cpu 64 -mem 512
# 实例名支持模糊查询
snap bcs instance -name se1
snap bcs instance -name se1.
# 查询最新低价
snap bcs instance -cpu 4 -mem 8 -latest

price

查询实例历史价格,最长可查询一个月内的价格波动。某些高规格机器由于API限制无法查询。运行后需要在浏览器手动打开对应IP:端口。

  • port:更改端口号,默认8000

bcs.price

snap bcs price

inspect

该命令以项目整体为视角,模拟了传统的使用习惯。通过进入指定容器,实现对项目交互式地查看,检查、debug乃至个性化分析。此命令与task debug命令类似,但此命令是以项目为单位进行而不再是具体的任务。如果需要保存修改,则必须指定输出文件的映射关系,并等待自动退出。tid, mid参数的作用是快速使用已有的mapping,前者会使用某任务的所有out mapping,后者则可以指定单个或多个具体的mapping。如果没有已存在的mapping,那么需要通过设置outputs参数来确认需要输出的文件或目录。默认情况下,会自动挂载项目路径、流程路径以及inspector路径三个mapping,其中项目路径下的inspector路径是默认的输出路径。

  • project:项目ID
  • docker_image:指定运行镜像,需要支持debug_mode的镜像。默认为alpine:3.7-2.2.1a-2
  • tid:快速应用指定任务的映射关系,支持多个
  • inputs:输入文件的映射关系,支持多个
  • outputs:输出文件的映射关系,支持多个
  • mid:快速应用指定的映射关系,支持多个
  • instance:需要使用的实例类型
  • cluster:若要使用已有的集群,请指定对应ID
  • timeout:超过此时间后自动停止,默认10分钟
# 进入项目
snap bcs inspect -p 170
# 使用特定镜像
snap bcs inspect -p 170 -docker_image alpine:3.7-2.2.1a-1
# 自定义映射关系
snap bcs inspect -p 170 -inputs /pipeline/RNA_pipeline/lncRNA/lncRNA_v2.1/:oss://igenecode-bcs/pipeline/RNA_pipeline/lncRNA/lncRNA_v2.1/
# 使用已有的映射关系
snap bcs inspect -p 170 -mid 4 5
# 延长使用时间至一小时
snap bcs inspect -p 170 -timeout 3600

gantt

查看项目任务运行时间。可按Module、App、Task、Instance级别查看运行时间与等待时间。可用于快速找出运行最为耗时的App,有针对性地优化。运行后需要在浏览器手动打开对应IP:端口。

  • port:更改端口号,默认8000

bcs.gantt bcs.gantt.boxplot

snap bcs gantt
Clone this wiki locally