Hologres Serverless Computing 快速入门

本文涉及的产品
实时数仓Hologres,5000CU*H 100GB 3个月
函数计算FC,每月15万CU 3个月
简介: 本文自阿里云智能- Hologres 团队恒定的分享,主题是 Hologres Serverless Computing 快速入门,主要包括以下内容:1. Hologres Serverless Computing 架构介绍2. Hologres Serverless Computing 使用入门

Hologres Serverless Computing 快速入门


内容介绍

1. Hologres Serverless Computing 架构介绍

2. Hologres Serverless Computing 使用入门

image.png

image.png


01、Hologres Serverless Computing 架构介绍 

image.png

该部分主要介绍 Hologres Serverless Computing 背景及待解决的痛点问题针对 Hologres Serverless Computing 的架构做简要概述

1.1 架构介绍

(1)背景介绍

首先,目前大家所购买的 Hologres 实例都是基于预分配好计算资源类型,这部分计算资源是实例级别独占的在新购实例或升降配实例时,会基于大计算资源需求量作为实例的规格,这会造成用户实例资源的浪费。如一个用户实例在夜间凌晨主要以大的 ETL 作业为主,此时会充分用到绝大部分的实例资源但在白天实时写入和 OLAP Quary 的场景这类场景的资源消耗小于 ETL,整体实例负载水平较低。这种低负载水平会导致用户预留的大部分闲置资源被浪费

其次,目前用户实例中的计算资源是所有 Query 一系共享,但实际上用户实例中存在不同类型的工作负载,如果未进行资源隔离的设置,会造成不同类型工作负载之间的 Query 互相竞争计算资源导致 Query 性能不稳定造成一定的抖动现象

(2)架构介绍

针对上述痛点问题,Hologres Serverless computing 提出了一种新的计算模式,其架构图如下图所示

image.png

Serverless Computing Pool 是由 Hologres 托管的公共资源池允许用户将自己实例中的大任务提交到公共资源池中。每个提交的任务支持动态分配计算资源,确保有充足的计算资源可支持任务的高效执行。

用户使用的 Serverless computing pool 的计算资源整个可用区实例共享,因此,用户之间调度是公平的,用户可以以 Query 级别申请使用。而 Query级别申请的资源存在隔离,避免了不同Query之间的资源竞争,相互干扰,确保大Query能够稳定高效运行。而且执行完毕后会立刻释放资源。

引入了 Serverless Computing Pool 的计算执行模式,使得实例的资源类型分成两种一种用户实例的计算资源,用户实例预分配好的独享计算资源被称为独享资源类型,或 Local 资源类型。二是来自 Serverless Computing Pool 计算资源,即按需分配的计算资源统一称为 Serverless 资源。这两类计算资源对于不同的场景有不同的优势。 Serverless 资源的弹性较足的,但是某些场景下,如果 Serverless Computing Pool 实例资源水位较高,可能会触发一些排队问题,因此,对于查询延迟敏感的 Query 更适合使用用户的独占资源。而实时写入类型的 Query 只能依赖于用户自身的独享资源运行。因此,Serverless 资源不能完全取代用户的独享资源,我们可以将两者共同使用,取得最优的收益。

1.2 适用场景

image.png

(1)大SQL作业频繁OOM,期望提升作业成功率与实例稳定性

当实例规格较小,易使得 SQL 作业运行,或频繁 OOM影响整体作业的成功率,甚至影响实例级别的稳定性。此时,即可将大 SQL 作业单独使用SQL资源运行,保证作业的稳定高效。上图中是失败 Query  QPS的监控指标,可以看到用户在使用 Serverless 资源运行大的ETL作业后,失败的Query数量降低到零。

(2)实例在流量低峰闲置较多,期望提升资源利用率,降低成本

如果用户实例规格较大,工作呈潮汐分布时,在负载低谷时,资源利用情况率较低,我们可以将资源消耗高的 Query 使用 Serverless 资源,即可按需进行付费,免除大量的闲置资源用。

(3)当前实例在流量高峰资源紧张,且通过分时弹性增加一倍资源仍难以缓解资源压力

用户在流量高峰期实例资源较紧张通过分时弹性扩充一倍资源。

如果在扩充一倍资源后,难以缓解资源压力,可以考虑在高峰时段使用 Serverless 资源。Serverless Computing 允许用户使用本实例规格资源数的 3 倍,可显著降低流量高峰带的查询压力。

1.3 使用成果

这部分介绍 Serverless Computing 前后对比

image.png

用户在使用 Serverless 之前,使用的是独享资源实例,实例规格是512 Core在夜间的写入 SQL 用掉了大部分计算资源,但白天的实例负载较低。用户在使用 Serverless 之后,可以将实例降配到256 Core,或将业界的大的写入任务使用 Serverless 资源运行,实现了大任务的隔离,保证独享实例的可用性,实现了整体的降本


02、Hologres Serverless Computing 使用入门

  image.png

该部分介绍 Hologres Serverless computing 的重要概念及使用技巧,以及相关工具和一些可观测的手段,并通过几个案例进行实际操作演示,帮助大家快速入门使用 Hologres Serverless Computing。

2.1 在实例级别开启和关闭 Serverless Computing

介绍 Serverless Computing 相关概念和具体使用,以及工具指标,加深对Serverless Computing 使用情况的观测,并进行操作演示。

(1)Serverless Computing 开启与关闭

如下图所示:

image.png

对于新购实例,需要开启 Serverless我们在购买实例时,选择实例配置,其中有开启 Serverless Computing 的开关,选择“是”,即可默认将新购实例的 Serverless Computing 打开。对于存量实例,在用户的管控台基础信息页面的右下角即可打开开关如果需要开启和关闭按照开关指引,即可完成操作。

另外,在 Serverless Computing 开启之前,还有一些注意事项

image.png

首先,目前仅支持通用型计算组类型的实例开启 Serverless Computing。

其次,开启 Serverless Computing 有地域和可用区的限制,如果管控台页面的开启按钮是灰色的,则说明当前可用区域或当前地域类暂时不支持 Serverless Computing可以在官方文档查看可用区的限制如果通过文档得知到实例所在地域内有可用区支持 Serverless Computing,即可在管控台提交工单进行可用区的热迁移。另外如果发现可用区和当前所在地域内均不支持,可以在管控台提出需求。

此外2.1.17版本以上支持开启 Serverless Computing。但 2.1 版本仅支持 DML 类型的 SQL,2.2 及以后的版本,支持 DQL DML 类型的 SQL。

最后,在实例级别开启和关闭 Serverless Computing 均会导致实例重启。所以在进行操作时尽量选择业务低峰期进行操作,大需花费 2 - 5 在实例级别关闭后,不再支持指定 Serverless 资源,且当前运行和排队中的 Serverless Query均会失败。

(3)Serverless Computing使用方法

image.png

目前支持在多个级别下进行使用分别是 SQL 级别、USER 级别、DB 级别和 Query Quere 级别。使用方式非常简单,只要加上简单的配置即可使用 Serverless 资源,需对业务进行调整。从整体来看我们建议在 SQL 级别和 USER 级别上设置 Serverless,不建议在 DB 级别下默认设置,因为在DB 级别默认设置后,该DB 下所有能使用 Serverless 资源的 Query 都会使用 Serverless 资源,易造成排队甚至大幅降低本地资源利用率另外 Hologres Serverless 3.0版本已经发布了Query Quere,支持大查询熔断后使用 Serverless 重跑支持个查询队列中的 Query均使用 Serverless 资源。

image.png

另外,Serverless Computing Query有一些限制,如Fixed plan 的实时写入 Query 以及多行 DML 事务 Query 均不支持使用。在开发时,我们可以通过explain工具查看 Query 的执行计划。我们可以SQL级别设置好 Computer Resource如果使用 Serverless,会在执行计划中展示出 Computer Resource:Serverless关键字。

接下是一条实时写入类型的 Query,由于不支持 Serverless,因此,在它的执行计划中不会显示对应的关键字。另外,如果将参数设置为使用本地计算资源也不会显示该关键字。

2.2 Serverless Computing资源申请

(1)Serverless Computing Quota资源

image.png

一个重要的概念是的 Quota指的是用户实例在运行阶段内所有占用的Serverless Computing Resource的上限值。值一般是实例独享资源的 3 倍,如果用户当前使用的 Quota 超出了限制,或 Serverless Computing Pool 资源池整体紧张时,用户提交的Query会进入排队状态。对于 Quota 使用情况的监测,可以从管控台的指标看到,相关的技巧会在后文中介绍展示。

(2)Quota资源申请

在资源申请和资源分配方面,在申请资源之前进行资源的估算。资源数量估算的目前有两种方式一种是自动估算资源,会根据 Query Plan的整体复杂度及读写表所在的 Table Group 数量进行综合预估保证资源申请的利用率最优第二支持手动指定资源,通过hg_experimental_serverless_computing_required_cores 手动指定资源数量。以下是资源估算两种方式的介绍和对比:

image.png

上面两张图中是一条简单 SQL 的两个不同的执行计划,分别是对一个表的两列做 COUNT_DISTINCT 操作。在左边的执行计划中,使用到 CTE,CTE将复用对表两列的扫描后续的两个 COUNT_DISTINCT 操作会复用 CTE 的扫描结果。右侧的执行计划分别对表的两列做两次 Scan 操作,再拼两种不同的方式展示了同一条SQL的不同执行计划,因此,在 Serverless 场景下两个不同的执行计划可能会分配到不同的资源续我们会根据执行计划的复杂度估算做到资源利用率最优。

(3)Quota 资源管理

更好地管理 Quota 资源,可提高资源利用率,完成更多的业务下面介绍两种 Quota 资源优化手段。

image.png

一种方法是限制单条 SQL 资源申请的上限。单条 SQL 申请资源上限由三个参数的最小值决定, Quota 资源二是每条SQL可被分配的资源上限,即 hg_experimental_serverless_computing_max_cores ,默认是 512 CU 第三个参数取决于当前 Query 所需的计算资源数在默认使用自动估算资源场景下,数是由自动估算出,如果手动指定资源需求量,则会采用手动指定的数量作为三个参数一起进行计算。若需手动调整规则可以设置第二个参数作为最终的最小值。

第二种方法是Serverless Computing Query 优先级的设置目前,Serverless Computing 提供了五个优先级供用户管理,Serverless Computing 资源的使用,可以通过 hg_experimental_serverless_ computing_query_priority参数进行调整。参数的默认优先级是 3,取值范围是 [1,5],数值越大,则代表优先级越高会越优先进行资源的分配。如果用户有两条 Query,即Query 1和Query 2,优先级分别是 5 1,如果当前用户的 Quota 不足,则 Query 1 无法满足剩余的资源量可以满足 Query 2 这种情况下由于优先级的限制, Serverless Computing Pool 资源会严格根据所指定的优先级进行调度,即强制等到资源充足之后优先调度Query 1而不会调度Query 2。

其次,可以根据不同 Query 任务场景紧急程度的不同,不同的任务设置不同的优先级避免阻塞排队现象的发生,保证利用率最优。对于一些 OLAP Query,可以一定程度设置高优先级,对于一些离线场景的 ETL 导入,可以使用较低优先级避免影响其他 Serverless Query 的排队时间保证Quota利用率最优。

2.3 Serverless Computing观测与监控

这部分主要介绍相关的工具,方便在开发和使用 Serverless Computing进行实时的观测和监控。

(1)相关工具

①查看活跃的 Serverless Computing Query

image.png

Hologre 中提供了活跃 Query 的管理视图,即 hg_stat_activity,其中 running_info 包含一些 Serverless 信息,可根据信息提供的资源类型、Query 的具体执行阶段以及 Serverless Computing Query 的排队时间和资源使用情况对正在运行的活跃 Serverless Query 进行管理。上图右侧可以从 Running_info中 看到计算资源类型、所处的阶段排队过程中的等待时间以及具体资源的分配数。使用该工具可以实时监测 Serverless Computing Query 的排队时间,避免发生阻塞现象。

②查看 Serverless Computing Query 历史运行记录

image.png

Hologres 提供了两个系统视图,分别是 hologres.hg_query_log  hologres.hg_serverless_computing_query_log。这两个视图中均提供了完整的 Serverless Computing Query 记录。底部展示了一条Query的历史记录,根据相关的字段可以找到具体的使用情况,如排队时间资源分配信息运行Query优先级以及单条Query使用资源的上限。另外,还有一个新增段信息是 Serverless Query 源。

③手动优化 Serverless Computing Query 的资源量

image.png

一个方法是使用 hologres.hg_serverless_computing_query_log 系统视图。我们可以根据系统视图去获取历史执行的 Serverless Query 记录也可以根据视图中提供的 SQL 指纹找到同类型 Query 的历史资源消耗,再根据历史资源消耗找到合理的资源消耗区间作为手动指定资源数的参考

另外,在开发Explain Analyze 工具会手动执行 SQL 一次,并获取详细的统计信息。在开发时,可以根据该 Explain Analyze 结果提供的实际分配的 Serverless 资源信息、Query的优先级以及排队时间进行判断,并通过手动指定不的资源数量获得执行时长的判断。如果使用工具,需要注意会将所提交的 SQL 实际执行一,会申请资源并收取相应的费用

(2)三个监控指标

一个是正在运行的 Serverless Computing 查询,第二个是排队数量,第三个是Quota使用率。

  image.png

到测试实例的监控信息页面:

从图中可以看到,这三个指标目前都有相应的数值。第一个指标是正在运行的 Serverless Computing 查询的时长可以通过监控指标了解当前运行最长的 Serverless Query,对长 Query进行管理和监测第二个指标是当前正在排队数量的 Serverless Query。第三个指标是实例Quota 的利用率。当 Quota 利用率非常高时,Serverless Computing  Query的排队指标也可能非常高。还有一种情况值得注意,当 Quota利用率相对较低(如80%90)时出现了大量的排队,需要确认是否为Query设置不同的优先级。有可能是高优先级的 Query 资源持续未得到满足导致优先级较低的 Query 阻塞。另外,可以根据指标设置监控报警的规则

(3)Demo 演示

设置排队数量告警规则

首先可以点击排队数量监控指标到云监控页面。在云监控页面下可选择对应的实例类型。然后添加具体的规则,先指定该规则的名称。要对 Serverless Computing 排队情况进行监控,如果是紧急的指标,如出现了 100 个排队的 Query立即紧急告警。如果出现了 50 个,发现警告。

填好所需要的告警规则之后,可以选择告警的对象推送渠道,提交即可实时对排队数量进行告警。

② Serverless Computing Query展示和实际操作

打开两个HoloWeb页面,分别是两个用户,第一个是管理员用户第二个是普通的用户。

a. 在SQL级别开启 Serverless Computing

首先可以通过Explain工具查看执行计划,运行一条 Query发现该执行计划中没有任何关于 Serverless Computing 信息的关键字说明该Query默认使用本地资源运行。我们可以按照 SQL 级别开启 Serverless Computing,将 hg_computing_resourse 参数设置为  serverless看执行计划。可以看到执行计划中有Computing_Resourse:Serverless的关键字。另外,实际执行一条 Serverless Computing Query,可以在HoloWeb和一些工具页面看到一条提示这条notice的大致内容这条 Query 会使用 serverless computing资源。

如需在 SQL 级别关闭,使用两个开关,即 hg_computing_resourse 参数设置为成local,或 reset 参数。当将该参数设置成 local 时,该执行计划中没有 serverless 的关键字,说明该Query会默认使用本地的资源。

b. USER 级别开启 Serverless Computing

上面提到的HoloWeb页面其中的另一个用户是基于basic user的。通过执行alter user “BASICStest_user” set hg_computing_resourse =’serverless’命令,默认开启user 的开关。开启成功在另界面执行,查看执行计划可以看到用户提交的Query可以不通过设置SQL级别的 Serverless 开关即可默认使用 Serverless 资源。如果需要将用户默认关掉 Serverless 开关可以将资源类型设置成 locol,这样用户运行 Query 则会默认使用本地资源。

c. 用户使用本实例资源和 Serverless 资源的场景

用户使用本实例资源的情况下,这条 Query 可能会运行缓慢出现OMM。在 Query 运行后,已经跑起了,这条 Query tpch 数据量是 100 g,出现了 6 个表的join操作。当 Query 报错后,分析报错信息,可以看到发生了 Query  OMM 的现象。换言之,这条 Query 在运行,其计算内存的消耗超出了当前实例资源的阈值。将这条 Query 切换到 Serverless。切换完成后可看到 Explain Analyze的具体信息,从 Serverless allocated resources:90 cores ,6workers 关键字段,可以看到提交的 Serverless Computing Pool 运行的 Query 申请了90个core, 6 个worker资源,Query 优先级是 3,排队时间是 0 秒,整体的资源消耗是 Serverless 资源。

总之,用户在使用本地资源运行发生 OMM 后,转而使用 Serverless 资源运行,可以解决 OMM Query和运行速度慢的问题。

d.上述工具的正确使用

第一,通过 hg_stat_activity 视图查看正在运行的 Query 信息。先手动把 Query 的资源消耗调到最小,降低其运行速度;然后,查看 Query 的信息;提交,在另一个 HoloWeb 页面展示正在运行的 Query 信息。其中展示了该 Query 的信息及其running_info字段,可以看到其使用的资源是 Serverless 资源,排队时间是 0 秒,申请到了 15 个 core ,1 个 worker,资源使用时间是 6 秒左右,所处的阶段是执行阶段。说明该 Query 运行成功。

第二,利用 hologres.hg_serverless_computing_query_log 工具和hologres.hg_query_log 工具查看上述 Query 的历史运行信息。

首先,hologres.hg_query_log 系统视图中包含了慢Query 以及所有 QueryServerless Query 的记录。可以看到排队时间、资源申请量及资源的使用时间,与上一个工具的查询结果对应。换用 hologres.hg_serverless_computing_query_log 视图查询,也与上述查询结果相同。因此,可以利用这两个视图对 Serverless Query 历史记录进行审计,并通过其他字段了解历史 Query 的具体执行情况以及各资源的申请数量,指导我们手动指定更优的资源。

第三,展示 Explain Analyze工具。首先,手动指定 32 core 的一条 Serverless Query 记录。将这条 Query 手动指定为 32 core 后,可以看到其运行时间及资源分配数量。再将其资源数改到 96 core,可以看到其申请资源数量不超指定的 96 core。

e.Query优先级

分别在两个 HoloWeb 页面指定不同的优先级,运行一条 Query首先,在第一个 HoloWeb 页面将优先级设置成 5运行。然后,在另一个 HoloWeb 页面优先级设置成 1运行。

可以看到第一条 Query 执行成功并结束,其使用的自动系统预估资源是75 core,优先级是 5,排队时长是 0 秒,即一提交即立马分配了资源。此时,第二条 Query 也运行成功,可以看到其资源申请数量相同,但优先级是 1,排队时间是 8 秒,整体使用时间是 21 秒,说明该 Query 发生了排队。

例子可为不同类型的 Query 设置不同的优先级,优化整体的使用。

本次分享涵盖了 Hologres Serverless Computing 架构的基本介绍及快速入门使用。Hologres Serverless Computing 拥有资源隔离弹性加速查询加速和降低成本的优点,能够稳定执行大规模 ETL和查询。如果实例存在资源负载问题某些大 Query 运行失败或运行慢的问题,可以考虑使用 Hologres Serverless Computing 解决。如果后续还有疑问或使用相关的问题,可直接在官网提出工单,或加入 Hologres Serverless 用户钉钉群,阿里云会在第一时间解答。

image.png

此外, Hologres Serverless 作为一体化实施湖仓平台,已在阿里云上以及阿里集团内部客户的多种不同生产场景中得到了广泛的验证和使用极大提高了数据开发应用效率官网提供了不同场景客户的应用案例可以扫描二维码观看另外免费试用 Hologres Serverless 的活动也在如火如荼地进行中,可以扫码试用。

image.png

image.png

相关实践学习
【文生图】一键部署Stable Diffusion基于函数计算
本实验教你如何在函数计算FC上从零开始部署Stable Diffusion来进行AI绘画创作,开启AIGC盲盒。函数计算提供一定的免费额度供用户使用。本实验答疑钉钉群:29290019867
建立 Serverless 思维
本课程包括: Serverless 应用引擎的概念, 为开发者带来的实际价值, 以及让您了解常见的 Serverless 架构模式
目录
打赏
0
13
15
0
1006
分享
相关文章
实时数仓Hologres V2.2发布,Serverless Computing降本20%
实时数仓Hologres V2.2发布,Serverless Computing降本20%
实时数仓Hologres V2.2发布,Serverless Computing降本20%
【云栖2023】姜伟华:Hologres Serverless之路——揭秘弹性计算组
本文根据2023云栖大会演讲实录整理而成,演讲信息如下: 演讲人:姜伟华 | 阿里云计算平台事业部资深技术专家、阿里云实时数仓Hologres研发负责人 演讲主题:Hologres Serverless之路——揭秘弹性计算组
【云栖2023】姜伟华:Hologres Serverless之路——揭秘弹性计算组
容器服务Serverless版ACK Serverless 快速入门:在线魔方应用部署和监控
通过本实验,您将了解到容器服务Serverless版ASK 的基本产品能力,即可以实现快速部署一个在线魔方应用,并借助阿里云容器服务成熟的产品生态,实现在线应用的企业级监控,提升应用稳定性。
阿里云徐立:面向容器和 Serverless Computing 的存储创新
以上为大家分享了阿里云容器存储的技术创新,包括 DADI 镜像加速技术,为容器规模化启动奠定了很好的基础,ESSD 云盘提供极致性能,CNFS 容器网络文件系统提供极致的用户体验。
阿里云徐立:面向容器和 Serverless Computing 的存储创新
Serverless Computing:现状与基础知识
说明:文章内容来自网络文章的整理和翻译以及ATA文章知识的汇总,知识点及数据具体出处见参考部分 背景 云计算的发展在经历了IaaS(Infrastructure as a Service-基础设施即服务),PaaS(Platform as a Service-平台即服务),SaaS(Software as a Service-软件即服务)几个阶段后,Serverless(无服务器化)趋势越发明
Serverless Kubernetes 快速入门指南
5月,阿里云宣布推出Serverless Kubernetes服务。开发者可在5秒内创建集群、30秒部署应用上线。用户无需管理集群基础设施,根据应用实际消耗资源按量付费;用户可以直接使用K8S API或命令行来管理容器应用,容器应用可以与VPC中现有应用和阿里云能力无缝集成。
14046 0
函数计算 2.0 重磅发布,Serverless Computing 开启新篇章
随着云计算技术的深入发展,无服务器架构正在兴起。2019 年 2 月,加州大学伯克利分校发表了名为《Cloud Programming Simplified: A Berkerley View on Serverless Computing》的论文,对 Serverless 的形成、现状以及未来进行了全面的梳理和总结,指出 Serverless 即将成为下一代云服务的主流形态。
2649 0
【实践】基于Hologres+Flink搭建GitHub实时数据查询
本文介绍了如何利用Flink和Hologres构建GitHub公开事件数据的实时数仓,并对接BI工具实现数据实时分析。流程包括创建VPC、Hologres、OSS、Flink实例,配置Hologres内部表,通过Flink实时写入数据至Hologres,查询实时数据,以及清理资源等步骤。
用友畅捷通在Flink上构建实时数仓、挑战与最佳实践
本文整理自用友畅捷通数据架构师王龙强在FFA2024上的分享,介绍了公司在Flink上构建实时数仓的经验。内容涵盖业务背景、数仓建设、当前挑战、最佳实践和未来展望。随着数据量增长,公司面临数据库性能瓶颈及实时数据处理需求,通过引入Flink技术逐步解决了数据同步、链路稳定性和表结构差异等问题,并计划在未来进一步优化链路稳定性、探索湖仓一体架构以及结合AI技术推进数据资源高效利用。
333 23
用友畅捷通在Flink上构建实时数仓、挑战与最佳实践

热门文章

最新文章

AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等