-
Notifications
You must be signed in to change notification settings - Fork 0
cli_bcs
与阿里云上运行项目相关的子命令。
在阿里上调度任务之前,需要先配置相关参数。包括:
- 授权:
accesskey_id
,accesskey_secret
,阿里云身份认证使用,需要保管好 - 存储:
bucket
,数据存放的Bucket - 区域:
region
,阿里云调度区域,需要与Bucket在同一个区域内 - Docker镜像路径:
registry_path
,默认值为docker-images,一般情况无需修改 - 默认虚拟机镜像:
image
,默认值为img-ubuntu,通常无需修改
# 必须配置的参数
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_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可在桌面版钉钉按以下路径查到:
项目相关的宏观统计。包括项目执行进度,运行时间,存储占用,成本的统计。
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
查看指定项目相关的详细信息。
- 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:项目耗时
# -p 参数是必须的,每次只能查看一个项目
snap bcs show -p BYHKTW00320170-test
修改项目的信息。
- name:项目ID
- description:项目说明
- owner:项目属主
- status:项目状态
- path:项目路径
- max_job:最大同时运行项目数
- discount:实例价格折扣
- email:分析人员邮箱
- mns:阿里消息通知服务接口
- cluster:预建的集群ID
- auto_scale/no_auto_scale:是否自动调整集群内实例数量
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
# 其他信息都是类似的修改方法
与阿里同步任务状态。通常无需手动执行,因为cron命令会将该命令加入计划任务定时执行。在项目所在路径下会有执行日志snap.log
,调度方面的错误信息会输出到这个文件。
snap bcs sync -p BYHKTW00320170-test
设置计划任务。项目脚本与数据均上传至阿里后执行该命令,即可设置同步任务状态的计划任务。
# 添加项目计划任务
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
项目执行完毕后,务必清理阿里云上的临时文件以及失败的任务。
# 删除中间文件
snap bcs clean -p BYHKTW00320170-test
# 删除所有文件
snap bcs clean -p BYHKTW00320170-test -all_files
若配置文件写错,导致生成的脚本或mapping有错,需要重新生成整个项目的时候,会导致目前项目执行的进度丢失。此命令可依据日志文件恢复项目执行进度,继续从上次中断的地方执行项目。需要注意的是,处于Waiting状态的任务无法被恢复,所以需要先把这些任务停止掉。resume会影响在集群任务成本核算的准确性,所以还是应该尽量避免。
# 停止自动任务投递
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
项目执行完毕后,或执行过程中统计项目的开销核算。由于阿里详单是每天统计前一天的数据,所以要精确计算成本必须等项目完成后一天。详单要事先准备好,阿里的机子上每天会将详单下载至/home/lijiaping/costs/
。bcs stat
和task list
子命令中的-cost
参数需要先用此命令核算才能计算出正确的成本。
# 对账,同时默认以模块级别统计成本
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
查询可用的实例及其配置价格等信息。需要至少有一个项目存在才能查询。可以根据以下方式进行筛选:
- name:实例名,支持模糊查询
- cpu:实例CPU数量
- mem:实例内存大小
- disk_type:实例本地磁盘类型,可选项为HDD、SSD
- disk_size:实例本地磁盘大小
- price:价格为原价,正常可以竞价打折到2折左右。
- latest:将输出实时最低价格
# 根据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
查询实例历史价格,最长可查询一个月内的价格波动。某些高规格机器由于API限制无法查询。运行后需要在浏览器手动打开对应IP:端口。
- port:更改端口号,默认8000
snap bcs price
该命令以项目整体为视角,模拟了传统的使用习惯。通过进入指定容器,实现对项目交互式地查看,检查、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
查看项目任务运行时间。可按Module、App、Task、Instance级别查看运行时间与等待时间。可用于快速找出运行最为耗时的App,有针对性地优化。运行后需要在浏览器手动打开对应IP:端口。
- port:更改端口号,默认8000
snap bcs gantt