当您希望以较低的成本执行Spark作业(包括Spark SQL作业和Spark Jar作业)时,可以为Job型资源组开启竞价实例功能。开启竞价实例功能后,集群会尝试使用闲置(更低价)的Spark Executor资源执行Spark作业。本文主要介绍什么是竞价实例,竞价实例的应用场景以及使用方法。
什么是竞价实例
AnalyticDB for MySQL资源池中会有一些闲置的Spark Executor资源,资源会以折扣的方式进行售卖,这些资源也被称为竞价实例(抢占式实例)。
竞价实例资源与ACU弹性资源有以下区别:
竞价实例资源费用比ACU弹性资源的费用更低,大约是ACU弹性资源费用的7折左右。
当您在已开启竞价实例功能的Job型资源组中提交Spark作业时,集群会优先抢占闲置、低价的竞价实例资源,若抢占成功,该Spark作业在执行时会使用竞价实例资源,并按照竞价实例资源计费;若抢占失败,该Spark作业会使用ACU弹性资源,按照ACU弹性资源计费。
阿里云为AnalyticDB for MySQL竞价实例默认提供一小时保护期,保证在一小时内竞价实例的资源不会因其他资源抢占而释放。超过竞价实例保护期后,竞价实例的资源可能会被抢占,抢占的概率随资源使用时间增加而增加。
使用竞价实例资源执行Spark作业的优先级较低。当其他集群提交了不使用竞价实例资源的Spark作业时,有可能会抢占您的竞价实例资源,导致竞价实例资源释放,进而导致使用竞价实例的Spark作业运行失败。竞价实例释放导致作业失败的概率大约为1%~5%。
应用场景及建议
建议您在以下场景中开启竞价实例功能:
Spark作业开发。
对成本较为敏感。
对Spark作业失败的容忍度较高。
大部分Spark作业的执行时间在一小时以内。
对于混合型业务(既有执行时间超过一小时的作业,也有执行时间小于一小时的作业)场景,有以下建议:
创建两个Job型资源组,其中一个资源组开启竞价实例功能,且在该资源组中仅执行运行时间较短的任务;另一个资源组不开启竞价实例功能,在该资源组中仅执行运行时间较长的作业。
创建一个Job型资源组且开启竞价实例功能,在执行Spark作业时,通过配置
spark.adb.spotInstance.disabled
参数指定该Spark作业不使用竞价实例功能。详情,请参见指定Spark作业不使用竞价实例(可选)。
使用限制
仅部分地域支持竞价实例:华北1(青岛)、华北2(北京)、华北3(张家口)、华东1(杭州)、华东2(上海)、华南1(深圳)、华南3(广州)、中国(香港)、日本(东京)、新加坡、美国(硅谷)、美国(弗吉尼亚)、德国(法兰克福)、英国(伦敦)。
仅支持为Job型资源组开启竞价实例功能,开启该功能后,并不意味该资源组中所有的资源和所有Spark作业都会使用竞价实例,仅意味该资源组中的Spark作业在执行时会尝试使用竞价实例功能。
仅支持Spark作业使用竞价实例功能。
仅部分Spark Executor规格支持竞价实例:large和2xlarge。Spark Executor资源规格的详细信息,请参见Spark Executor资源规格。
费用说明
竞价实例资源的费用相较于原本的ACU弹性资源费用有一定的折扣,大约为7折。费用详情,请参见湖仓版产品定价。
集群中未被分配的计算预留资源可以用于抵扣竞价实例资源,若使用的竞价实例资源总量小于未被分配的计算预留资源,则直接抵扣;反之超出部分将按照竞价实例资源的费用计费。竞价实例资源使用量的查看方法,请参见查看竞价实例的计算资源用量。
开启竞价实例
登录云原生数据仓库AnalyticDB MySQL控制台,在左上角选择集群所在地域。在左侧导航栏,单击集群列表,在企业版、基础版或湖仓版页签下,单击目标集群ID。
在左侧导航栏,单击集群管理>资源管理,单击资源组管理页签。
为已有Job型资源组开启竞价实例
单击Job型资源组操作列的修改。
在弹出的修改资源组面板中,打开竞价实例开关。
单击确定。
在资源组对应的竞价实例列查看是否已开启竞价实例功能。
开启竞价实例功能后,Job型资源组上所运行的Spark作业都会尝试使用竞价实例功能。
创建Job型资源组时开启竞价实例
单击资源组列表右上角的新增资源组,并填写资源组信息。
参数名称
说明
资源组名称
自定义资源组的名称。输入长度在2~30位,以字母开头,只能包含字母、数字和下划线。
任务类型
在下拉列表中选择Job,Job型资源组主要适用于高吞吐离线场景,使用按需弹性方式进行计算资源扩容和缩容。
计算最小资源
最小取值为0 ACU。
计算最大资源
控制台可设置的计算最大资源为1024 ACU,步长为8 ACU。若您有需求,可提交工单联系技术支持调大资源。
竞价实例
是否开启竞价实例。
开启竞价实例后,运行在Job型资源组上的Spark作业会尝试使用竞价实例资源。更多信息,请参见竞价实例。
单击确定,完成新建资源组。
资源组创建后,在资源组对应的竞价实例列查看是否已开启竞价实例功能。
开启竞价实例功能后,Job型资源组上所运行的Spark作业都会尝试使用竞价实例功能。
指定Spark作业不使用竞价实例(可选)
若您不希望Spark作业在执行时使用竞价实例功能,可以在Spark作业的CONF
参数中配置以下参数:
参数名称 | 是否必填 | 参数说明 |
spark.adb.spotInstance.disabled | 否 | Spark作业在执行时是否使用竞价实例。取值:
|
作业执行成功后,您可以通过查看竞价实例资源使用量,确认配置是否修改成功。如果竞价实例资源使用量为0,则表示提交的Spark作业在执行时未使用竞价实例资源。
查看竞价实例资源使用量
Spark作业执行完成后,您可以在Job型资源组的监控页面查看竞价实例资源的使用量。具体步骤及说明,请参见查看资源组的计算资源用量。
关闭竞价实例
登录云原生数据仓库AnalyticDB MySQL控制台,在左上角选择集群所在地域。在左侧导航栏,单击集群列表,在企业版、基础版或湖仓版页签下,单击目标集群ID。
在左侧导航栏,单击集群管理>资源管理,单击资源组管理页签。
单击Job型资源组操作列的修改。
在弹出的修改资源组面板中,关闭竞价实例开关。
单击确定。
在资源组对应的竞价实例列查看是否已关闭竞价实例功能。
相关API
API名称 | 说明 |
为企业版、基础版及湖仓版集群创建资源组。 | |
修改企业版、基础版及湖仓版集群的已有资源组。 | |
查询企业版、基础版及湖仓版集群的资源组信息。 | |
查询企业版、基础版及湖仓版集群的资源使用详情。 |