本篇内容
分享人: 哈白 阿里云智能 技术专家
视频地址:https://yqh.aliyun.com/live/detail/21707
本篇主要通过3个部分介绍如何控制MaxCompute 的资源使用和消费。
- MaxCompute的计费模式
- 消费预警
- 消费控制
一、MaxCompute的计费模式
MaxCompute分为三种资源,分别是计算、存储和下载流量,其中计算占费用的主要部分,其次是下载流量,最后是存储。MaxCompute为计算和下载流量的计费都提供了预警和控制的能力,对于这几种资源MaxCompute也都提供了三种计费模式。
MaxCompute计费模式
计算
存储
下载流量
包年包月
按量计费
包年包月+按量计费
预警+控制
预警
1)包年包月
这种方式需要预先购买一定的资源,使用时就在这部分资源内进行使用,如果对资源的需求过多,就可能会出现排队等资源的问题。
2)按量计费
这种计费方式,不需要预先购买一定的资源,只需在完成作业后根据使用的资源量来进行计算费用。
3)同时使用包年包月和按量计费
这是一种是比较新的方式,也就是在包年包月的基础上开通一个项目的按量计费能力。
二、消费预警
为什么要进行消费预警和控制?
对于包年包月的套餐模式经常会遇到一些问题,比如,资源使用过满、资源被某一个特别大的作业占满、提交的作业太多,其他人把自己的Quota组占满了,这个时候就需要及时知道发生的状况并做处理,否则就会无法执行。
对于按量付费计费模式也是如此。比如,某些用户提交了全表扫描、一些定时跑的任务输入数据表的数据量突然增大、某些用户突然提交了大量的作业,有可能是操作失误,也有可能是提交作业的逻辑程序有bug,在按量付费的情况下,会造成更加严重的问题。
所以在面对这些情况的时候,必须有一种机制帮助用户提前预警消费资源使用。并且这种按量的付费,还能帮助用户去控制消费的额度。
从消费预警来讲起,MaxCompute是通过云监控来实现消费预警的。
消费预警
云监控链接
百阿里云
01
镇家文码,控材台,API,解决方富和质油
工单
官网
清体
企量
支持
云监控
报警规则列表
C别新
自定义控
事件报警
所值报警
日志益控
推索
请城入进行童询
创连报营熳则
站点益控
模作
状态(全脑)
监控项(全腩)
姓度(全腩)
控置瘦则
通知对象
启用
产品名称(全菌)
规则名棒
云产品监控
包年包月配精组CPU便
MaICompute-色
查看1程叠历史
qroupName默认聚付员
me-group1
正常妆
已启用
年包月配板组CPU使用星
年月quota组资
每年包月程警规则清试
用量>3%Info连线1
容别鸟控(Bota)
查看
锦改禁用新除
Ouota
次裁拇置
招置服务
按量付榄日作业润费>
查看1扭量历史
me-group1
HGMaIComoute-按
款察不足
以启用
清卖担置测试
2人民市Info连埃饮次影付算
按星付榄日作业酒费
projccthabaltest2
报雪历史
查看
锦农质用毛除
就报置
担雪视板
禁用
脑
启用
共2条
报警粮则
控量联系人
事住订均
器
一健报警
贵源消耳(NeW
上图是一个云监控的页面,在上面可以配置一些报警的阈值,还有一些资源使用,资源占用的阈值。包年包月主要是对资源使用量进行报警。
计算按量,项目级)
消费预警
链接
三
可阿里云
摆索文档,控利台,API,解决方实和美酒
关联茵源
MarComouTe-按量付员
产品:
项目名蹲
有源楚围:
华北2北北京
地道:
项目名棒:
habaltest
设置控警规则
规射名楼:
按星付集日作业消费
1分许周期
持续1个周期
规则播述:
零值
最大值
+港加控警规则
24小时
潘滩万饮质联
23:59
00:00
生鼓时阁:
最多只铁取10个责潭组合作为示制照示
还可以对按量付费进行创建报警规则(如上图)。这个时候单位就可以选择人民币了。
消费预警(计算包年包月,用户级)
链接
三
百网里云
卓阿里云
推家文档,控利台.API新浪克
推家文程,控利台.
000
关联责源
-050
MarCompute-智年包用用户南赛
产品
17:0640
1545:00
195020
183000
21:440
Regton列表
南源芯围:
年旺月rgn配准LCPU用率-AVcag9cn-boing
华北2(北京)
Renion列表:
通知方式
设置拇警规测
潘翅对象
已语组0个
联彩人通知姐
tenuple2
规则名蹲:
耀
MegrouP1
1分钟周期
每年包月reglon配随组CPU使用事
平均值
特埃1个周期
规则播述:
+添加控雷规则
源道尔数周聊
24小时
快港创建联系人组
23:59
00:00
生效时间:
电话赠信中国件们钉机器人(Cntican
最多只获取精10个南源组合作为示帆限示
赠信+望件+钉钉机器人wWarning)
控量馒别:
望件*们们制器人cnto)
0.50
0.00
包年包月还有用户级的,方法也是一样,都是对于一个用户下所有的Quota组进行报警。
消费预警(计算包年包月,Quota级)
链接
三
白阿里云
推素文档,控制台,API,牌
关联刻源
MaxCompute-包年包月quota组资潭
产品:
配颖组
贵源范围:
华北2(北京)
地域:
默认预付费Quotaquota2共2个
配精组:
设置报誉规则
规则名称:
testrule.3
1分钟周期
特线1个周期
平均值
色年包月配精组CPU使用量
规则播述:
+添加担警规则
通道沉默周期:
24小时
23:59
00:00
生效时间:
最多只铁取前10个责源组合作为示例展示
1.00
另外还可以对下载流量进行预警。
在产品部分选择MaxCompute通用,而不是包年包月或按量计费。再选择资源范围和地域,规则按照图中的配置,报警的阈值单位是兆,也就是当下载量超过一定MB的时候,就会按照配置的联系人去通知进行报警。只有公网的下载会收费,vpc等内部的网络下载都不会收费。
消费预警(日累计,用户级,产品级)
百阿里云
云服务器ECS
樱素
简体中文
用户中心
高额消费预警
返回
对添加预警的产品,当天一个产品后付贺消费大于提醒值时,每天姆信提醒一次.
odps-dev_testepro...
预警产品
预警阿值:
Dataworks(按星付阅)
增加
DataWorks(按量付费)
全部菜单项
最高消费预霍润值
预富
操作
大数据计算服务MaCom...
首页
暂无数据
表格存储
资金管理
制族
收支明组
免用账单
费用账单
费用管理
最后还有一个,对产品整体进行消费预警。比如MaxCompute的服务,各种各样的消费加在一起进行预警,总共的阈值不能超过一定量。这个不是通过云监控完成的,是阿里云支持的。
除此之外,还可以利用MaxCompute提供的一系列分析服务进行自己分析消费和自定义告警。
比如说有下面几个问题:如何分析一个详单数据?如何找到topN的消费用户?如何找到topN的耗时任务?如何定时推送分析报告?如何统计个人账号的资源使用情况?
举其中一个例子,比如可以通过information schema这种机制来找到topN的消费用户,或者是找到topN的耗时任务,在阿里云的官网文档上可以找到。后面可以通过钉钉机器人推送到钉群的方法来实现对分析报告或者是报警的推送。
相关文章参考:
MaxCompute账号费用及任务耗时TOPN统计:https://developer.aliyun.com/article/778447
MaxCompute消费监控最佳实践:https://developer.aliyun.com/article/781312
三、消费控制
如果报警没有被看到,或者消费增长的速度特别的快,就需要一种更严格的机制——消费控制。当消费超过设置或者期望的数量时,就会直接拒绝用户再提交作业。消费控制主要是针对按量付费来说的,因为按量付费资源使用过多就会直接涉及到更多的消费。
MaxCompute目前提供了对于SQL的消费按量控制,需要使用odps的客户端。下载客户端之后先把环境准备好,配置上project owner或者super admin的ak, 也可以由project owner或者super admin登录DataWorks上的临时查询来设置。
首先,对于单条SQL,执行之前设置一个预期的消费阈值,提交SQL的时候系统会自动地分析这条SQL可能会消费多少,如果超过了这个消费的值就会直接报错。
消费控制(SQL按量,单SQL)
单sql,ssion级,普通用户权限
环境准备
odpsohabai-test2>
odps.sql.metering.value.max-0.001;
odpsohabai.testzseectomutom
odps客户端(链接)
ID202122714251183gbigj21
Logview:
http://oyew.
2157CG5NLMSCOMMTELDMNNYOGRBUOTU
projectowner/super
HGtCSMX3J63
JobQueueing.
admin的ak
FAtED:Mteingdtaxcedx
单sq,项目级,projectowner/supradmin权限
单条SQL消费限制
odpsohabaitest2uneodpssqmeing
OK
habai.test2setprojctossqlmetringx
odpsol
OK
或值单位:SQL读取量
oupsehabaitest2semU
(GB)XSQL复杂度
ID20201227142788135gg68sa
LogView:
htp://oyer.
zG
日/月累计限制
3gtcs831
JobQueueing.
ATED:Mtringdt
图中的右上图是一个例子。
阈值单位不是人民币,是SQL读取量(GB)x SQL的复杂度,直接把价格放进去会影响准确度。当执行一条SQL的时候,在没有用任何资源的时候,系统评估花费输入数据量可能是0.12037908GB,复杂度是1.0,这就超过了预设的值,无法执行这条SQL。
另外还能设置项目级,和session级不同,通过setproject这个命令把第三行中的flag设置成一个值,这一次设置就是永久生效的。退出客户端,或者DateWorks上的定时任务,或是其他用户在其他设备上重启这个客户端,都会看到这样的一个阈值,他们提交作业的时候同样也会受到这个阈值的限制。
当然,有单条SQL的控制是不够的,所以平台还提供了累计的消费控制。目前实现的是按日累计的消费控制,可以通过在项目级设置。
消费控制(SQL按量,日累计)
环境准备
odps客户端(链接)
日累计,project级,projectowner/superadmin权限
projectowner/super
odpsehabai.testztprojcctoupcostonto
admin的ak
OK
oApsehaboitetz
单条SQL消费限制
BEpRBt
日/月累计限制
ID2028122714393879gdvv66pr2
Logview:
htp://ogo
延迟约5~10秒
93978bw.boo
t480837160
bbo33
6IjEIFO-S
当前累计+预估下一条
JobQueueing
TE:Bwt7
t:6.8.Poocthbit
同值单位:扫描数据量
(GB)x复杂度x0.3
上图是一个例子,目前用户可以改的是SQL:后面的数值,这个单位是人民币,比如说可以设置0.5元。这时执行一句SQL并不会受到控制,因为花费没有超过,再次执行一个SQL时,累计的消费就超过0.5了。一天之内所有的SQL会累计起来,直到消费超过了设置的累计预值就不能再提交SQL了。系统会预估当前消费,和累计的消费求和,来判断预估的消费加累计的消费是否超过设的上限。这种方式就是一个实时的控制,但是实时性并不是很强,可能会产生5~10秒的延迟。它的单位是扫描的数据量(GB)乘以复杂度再乘以0.3,其中0.3是预设上去的一个单价,是可以修改的。
最后说明一点,可能有些用户会使用limit这个关键字去控制自己的消费。其实这样的控制方法是错误的,因为很多情况下limit其实都不能控制费用,比如图中的两种情况。
不要使用limit控制费用
很多情况limit都不能控制费用
select*fromtablexwhere分区字段三常量/能推出的常量"limitxxx;//
会产生计量
select*from(asubqueryalimitXxx/SQL计量是按照读入数据量,
而不是输出数据量
如果想费用控制,使用前文提到的方法为好,不要使用Limit。
以上就是对MaxCompute消费预警和控制方法的基本介绍。
更多关于大数据计算产品技术交流,可扫码加入 “MaxCompute开发者社区” 钉钉群进行咨询。
MaxCompute开发者社区2群
扫一扫,快速加入我们的企业/组织/团队