Snowflake 多集群仓库

2025年8月1日 | 阅读11分钟

什么是仓库?

在 Snowflake 中,虚拟仓库(也称为仓库)是计算资源的集合。为了完成数据仓库中涉及的任务,仓库提供了必要的资源,例如 CPU、内存和临时存储。对于查询和 DML 过程(例如将数据加载到表中),仓库至关重要。

仓库的大小是一个决定性因素,其他项目可以安排来帮助组织和规范仓库操作。您可以随时启动和停止仓库。它们甚至可以一个接一个地调整大小,以适应处理能力的需求。仓库的操作为其提供支持。

Snowflake Multi Cluster Warehouses

Snowflake 账户何时需要多个虚拟仓库?

假设您的公司雇佣了一名数据分析师,他负责管理所有 Snowflake 相关任务,并且每天执行复杂的数据库查询。他们可能会等待几分钟而不是几个小时,因此他们会扩展单个虚拟仓库的容量,直到查询处理速度合适。在这种情况下,一个 Snowflake 仓库是理想的选择。

什么是 Snowflake 多集群虚拟仓库?

在处理复杂的并发请求时,您可能会对 Snowflake 的多集群仓库感兴趣,它为并发提供了全自动扩展。多集群仓库是 Snowflake 企业版独有的功能,允许您创建更大的处理能力池来执行查询。一个多集群仓库可以拥有多达十个计算资源集群,而一个普通的虚拟仓库只有一个集群。

Snowflake Multi Cluster Warehouses

您的 Snowflake 账户中可以拥有的多集群仓库数量似乎是无限的,就像传统仓库一样,但每个多集群仓库最多只能包含 10 个计算集群。多集群仓库为您提供了许多仓库的并发优势,此外,Snowflake 会根据需要自动启动和停止运行中的集群,以适应用户并发需求的峰值和低谷。

有哪些两种多集群仓库模式可用?

在 Snowflake 中,多集群虚拟仓库可以以两种不同的方式运行

  • 最大化模式: 多集群虚拟仓库始终拥有最多的计算资源,因为最小和最大集群数量相等。
  • 自动扩展模式: 根据数据仓库的需求,Snowflake 会在指定的最小和最大值之间动态调整集群。
Snowflake Multi Cluster Warehouses
  • 虽然自动扩展模式明显优越,但它也复杂得多。例如,您需要定义一个扩展策略,其中“经济”仅在有足够的查询负载使新集群忙碌六分钟时才添加集群,而“标准”则始终根据需求添加更多集群。
  • 顾名思义,后者可以节省资金,但即使使用多集群仓库,也可能导致查询仍然排队。

利用 Snowflake 多集群仓库

Snowflake 中的多集群虚拟仓库非常适合构建具有众多用户的任何数据应用程序,尤其是产品内分析。假设一家公司在其产品中加入了一个排行榜指标,该产品拥有数千名用户。为了解决查询缓慢和数据加载问题,他们最初满足于扩大一个仓库,但后来他们注意到了成本。他们通过切换到自动扩展的多集群虚拟仓库来应对,这以更低的成本提供了更好的性能。

Snowflake Multi Cluster Warehouses

该公司最初实施了标准扩展方法,但由于启动了许多仓库,它仍然产生了过高的成本。由于其 SaaS(软件即服务)产品的用户习惯于看到其排行榜指标延迟十五分钟,因此该公司可以有效地将来自其无服务器功能的请求排队。

Snowflake Multi Cluster Warehouses

经过几次测试后,他们能够以自动扩展模式使用单个多集群虚拟仓库,并采用经济扩展策略,在 1 到 6 个集群之间选择,以向排行榜提供新数据。当然,为了在其 数据仓库之上开发产品内分析软件,该公司可能不得不雇佣一个完整的数据工程师团队。如果您正在考虑这样的项目,您应该了解 Propel Data,在那里您可以与您当前的团队合作开发分析。

  • 借助 Propel 用户友好的 GraphQL API,前端和全栈开发人员可以创建支持大规模用户并发的分析解决方案。
  • 无需额外的数据工程,我们的后端以高效且经济的方式管理多集群 Snowflake 仓库、数据访问控制和快速响应时间。
  • 因为我们协助开发人员使用我们的 GraphQL API 查询他们在 Snowflake 中已有的数据,所以 Propel 是使用 Snowflake 作为数据仓库或数据湖开发产品内分析的明确选择。

仓库如何调整大小?

Snowflake 仓库提供一系列 T 恤尺寸。T 恤尺寸的增加(XS-4XL)表示 CPU、内存和临时存储按预定百分比增加。虽然您不能自行更改尺寸,但您可以通过选择 T 恤尺寸来更改仓库大小。由于 Snowflake 存储和计算仍然松散耦合,您可以随时启动和停止仓库。您需要在创建时提供规模、扩展策略和多集群属性(企业版及以上)。

Snowflake Multi Cluster Warehouses

什么是多集群仓库?

通过多集群仓库,您可以调整计算资源,以满足不断变化的用户和查询并发需求,例如在高峰和非高峰时段。默认情况下,虚拟仓库可以用来运行查询的计算资源由其维度决定。每个仓库都可以代表一组计算机资源。当仓库接收到查询时,它会为每个查询分配资源并开始处理它们。

如果剩余的资源不足以运行发送到仓库的每个查询,Snowflake 会将额外的查询排队,直到必要的资源可用。多集群仓库允许 Snowflake 静态或动态地分配额外的仓库,从而创建更大的可用计算资源池。下面列出的功能可用于定义多集群仓库

  • 最多超过一个仓库(最多十个)。
  • 最少十个仓库,或尽可能多的仓库。
Snowflake Multi Cluster Warehouses

此外,多集群仓库支持单个仓库的所有属性和操作,例如

  • 定义仓库的大小。
  • 仓库可以随时调整大小。
  • 由于不活动,正在运行的仓库可能会自动暂停;但是,这仅适用于整个多集群仓库,而不适用于单个仓库。
  • 当提供新的查询时,停止的仓库将自动恢复。

多集群仓库的优势

如果您的操作员/查询负载增加到您需要通过典型的单集群仓库获得额外计算资源的程度:要么扩大仓库的整体大小,要么构建新的仓库并将额外的操作员和查询重定向到它们。

Snowflake Multi Cluster Warehouses

然后,必须手动合理化更大的仓库,或者在不再需要资源时附加额外的仓库,以节省积分。另一方面,多集群仓库允许更多用户连接到单个、大小相同的仓库。此外

  • 在自动扩展模式下运行的多集群仓库不需要调整大小或启动和停止额外的仓库来适应不同的工作负载。Snowflake 会根据需要自动启动和停止额外的仓库。
  • 通过根据需要调整仓库数量,您可以在最大化模式下调节多集群仓库的容量。

扩展的需求

在数字时代,数据量仍在快速增长,企业必须处理海量数据,同时保持成本和功能。 Snowflake 多集群仓库旨在满足这一需求。

  • 使用多集群仓库提升您的数据操作
  • Snowflake 多集群仓库提供多项重要优势
  • 动态扩展通过自动添加或删除计算集群来匹配不断变化的工作负载需求,确保最佳性能和成本效益。
Snowflake Multi Cluster Warehouses
  • 并发控制:一次管理大量用户和查询,而不会牺牲效率。
  • 资源隔离:为了改善资源分配并防止一个工作负载影响另一个工作负载的性能,请隔离工作负载。
  • 成本控制:通过根据实际使用情况动态扩展集群来减少浪费。
  • 数据共享:促进仓库之间的协作,同时通过无缝共享数据来维护数据安全。

零散管理服务

虽然 Snowflake 多集群仓库释放了高性能潜力,但扩展和管理仓库设置可能具有挑战性。我们的零散管理服务可以帮助解决这个问题。我们是管理 Snowflake 多集群仓库中涉及的日常、重复性任务的专家,让您的团队能够专注于他们的领域专业知识真正发挥作用的高价值用例。Snowflake 的多集群仓库提供了一种强大而灵活的方法来动态扩展计算资源,以有效管理波动需求。

Snowflake Multi Cluster Warehouses

多集群仓库:它们是什么?

Snowflake 多集群仓库是一种虚拟仓库,可以根据波动的查询工作负载自动更改计算集群的数量。为了保持性能和成本效益,它可以水平扩展,通过添加或减少计算集群,而不是依赖单个集群。

基本要素:动态扩展

  • 根据查询需求,多集群仓库可以在指定的最小和最大集群数量之间自动扩展。
  • 当需求下降时,集群会被删除;当工作负载增加时,额外的集群会被启用。

管理并发

  • 非常适合高查询并发的情况(例如,多个用户同时执行查询)。
  • 通过在需要时提供更多处理能力来减少等待时间。
Snowflake Multi Cluster Warehouses

自扩展

可扩展性不取决于每个集群的大小。集群数量和集群大小(例如 X-Small、Small)都是可配置的。

按使用付费模式

由于费用仅取决于集群运行的时间,因此成本最低。

扩展策略如何运作

Snowflake 根据仓库扩展策略决定是否添加或删除集群

标准: 集群根据稳定负载添加或删除。

经济: 为了削减开支,集群的添加或删除更为谨慎。

配置规范

  • 最大集群数:指示可以有多少个集群。
  • 最小集群数:指示需要多少个集群。
  • 自动暂停:当没有活动时,所有集群都会自动暂停。

集群激活

  • 如果现有集群繁忙且新查询发生,并且在新查询发生时在设置的最大值范围内,则会激活新集群。
  • 在设定的不活动时间后,集群会停用。

应用

  • 高并发任务
  • 允许多个用户同时执行查询的 BI 技术。
  • 大量外部用户访问共享数据集的数据共享。
Snowflake Multi Cluster Warehouses

工作负载可变性

  • 具有不同负载的 ETL 管道。
  • 季节性或基于时间的突发需求。
  • 对性能敏感的应用程序
  • 需要低延迟查询的仪表板。

优点

  • 更好的查询性能:适应查询负载的增加而不会出现任何恶化。
  • 成本优化:通过动态扩展资源,防止过度配置。
  • 易于使用:完全自动化的扩展,无需人工干预。
  • 弹性:轻松适应工作负载的变化。

最佳技术

  • 建立合理的最小和最大集群
  • 确保预期的峰值负载与最大集群数量匹配。
  • 使用监控:使用 Snowflake 的仓库监控和查询历史视图来调整配置。
  • 使用自动暂停:通过在不使用时保持仓库暂停来减少开支。

此处提供了对 Snowflake 多集群仓库的更全面检查,包括其设计、可扩展性、监控功能和优化技术。

1. 设计

  • 在 Snowflake 中,仓库是用于运行查询的计算资源的集合。
  • 通过添加多个独立运行但为同一仓库提供服务的集群,多集群仓库扩展了这一概念。
  • 为了确保平滑扩展,每个集群共享相同的存储层,即 Snowflake 架构的通用元数据和数据存储。

关键要素

  • 集群是独立的计算机资源,都受同一仓库管理。
  • 扩展管理器会自动确定何时缩小(移除集群)或放大(添加集群)。
  • 为了保证资源利用率均匀,负载均衡器将查询工作负载分配给正在运行的集群。

2. 扩展机制

  • 多集群仓库使用动态扩展来修改操作集群的数量。
  • 当并发查询数量超过活动集群可以处理的数量时,会触发扩展。
  • 如果系统达到其配置的最大集群限制,则会启动一个新集群。

扩展策略

  • 标准扩展策略
  • 强调性能。
  • 响应需求高峰时快速激活集群。
  • 非常适合需要低查询延迟的应用程序。

经济扩展策略

  • 优先考虑成本效益。
  • 在放大和缩小方面采取更谨慎的策略。
  • 非常适合查询执行不规律或对时间不那么敏感的工作负载。
Snowflake Multi Cluster Warehouses

3. 观察和管理

Snowflake 提供视图和工具来帮助管理和监控多集群仓库

系统视图

  • WAREHOUSE_LOAD_HISTORY: 显示历史仓库负载信息,例如集群利用率和排队。
  • QUERY_HISTORY: 提供有关查询执行的信息和分析。
  • WAREHOUSE_METERING_HISTORY: 提供有关仓库积分使用情况的信息并帮助监控成本。

要跟踪的指标

  • 并发级别: 同时活动的查询数量。
  • 集群使用率: 每个集群的使用比例。
  • 查询延迟: 完成查询所需的时间。
  • 积分使用: 运行仓库相关的费用。

警告

要获取有关利用不足或过度配置的信息,请使用 Snowflake 与第三方监控解决方案(例如 Snowflake Partner Connect)的连接设置警报。

4. 配置选项

基本参数

  • WAREHOUSE_SIZE: 确定每个集群的大小(X-Small、Medium、Large 等)。
  • MIN_CLUSTER_COUNT: 默认情况下,一个集群始终处于活动状态。
  • MAX_CLUSTER_COUNT: 仓库能够支持的最大集群数。
  • AUTO_SUSPEND: 当集群闲置预定时间后,会自动暂停。
  • AUTO_RESUME: 当发送新查询时,仓库会自动重启。

高级配置

  • 查询优先级: 使用资源监视器来优先处理任务或限制积分使用。
  • 扩展延迟: 为了防止突然波动,请调整添加或删除集群之前的时间延迟。

5. 应用

实时分析

  • 高查询并发仪表板和监控解决方案受益于多集群仓库。
  • 示例:在黑色星期五期间,一家零售企业实时检查销售数据。

数据共享

  • 由于 Snowflake 的安全数据交换功能,多集群仓库可以支持多个外部用户。
  • 一个例子是金融服务公司在不影响内部工作负载的情况下向客户提供数据。

ETL 工作负载

  • 多集群仓库处理大型突发 ETL 过程,无需排队。
  • 一个例子是媒体公司加载和处理高分辨率视频的元数据。

6. 成本优化

调整集群大小

虽然较大的集群大小(如 Large 或 X-large)更适合资源密集型查询,但较小的集群大小(如 Small 或 Medium)在高并发下表现更好。

将集群数量减少到一个

  • 为了省钱,在不活动时不要运行多个集群。
  • 跟踪空闲时间:高效利用自动暂停来节省不必要的成本。
  • 利用资源监控
  • 建立预算截止点,以确保您不会超出分配的积分。

7. 典型障碍

  • 集群振荡: 由于负载变化而导致的快速上升和下降。通过修改延迟设置和扩展规定来解决。
  • 在需求低时运行过多集群称为利用不足。使用适当的自动暂停和最小集群计数参数来减少。
  • 成本飙升: 由于需求激增而导致的意外费用。使用资源监视器来密切关注情况。

结论

总之,我们可以得出结论,通过动态扩展计算资源,Snowflake 多集群仓库提供了一个可靠的解决方案,用于处理波动的工作负载和高查询并发。通过根据需求自动添加或删除集群,它们可以在无需人工干预的情况下提供一致的性能。


下一主题