1. Databricks成本治理全景
在Databricks平台上做成本治理,最容易踩的坑不是“不会省钱”,而是不知道钱花在了哪里、为什么花、该由谁负责。一个典型的场景是:某数据团队月底收到一张明显高于预期的账单,但翻遍账单只能看到“DBU用量”和“云资源费用”两个大项,无法回答“是哪个作业、哪个团队、哪次全表扫描导致的”。这正是FinOps要解决的核心问题——把成本从一笔模糊的总额,拆解成可归因、可行动、可优化的工程对象。
FinOps的三条核心原则
FinOps(Cloud Financial Management)不是单纯的财务工作,而是一套让工程、财务、业务三方协同的运营框架。落到Databricks场景,可以提炼为三条原则:
- 成本可归因:每一笔DBU消耗都必须能追溯到具体的workspace、cluster、job、notebook甚至某个用户。没有归因,就没有治理的起点。
- 成本与价值对齐:不是所有成本都要压缩。支撑核心报表的作业和一次性的探索性分析,成本容忍度完全不同。治理的目标是让“花得值”的部分稳定运行,让“花得冤”的部分被识别出来。
- 持续运营而非一次性优化:成本治理不是季度末的突击行动,而是嵌入日常开发流程的持续动作,包括预算监控、异常告警、定期复盘和优化闭环。
Databricks计费模型:钱到底花在哪
Databricks的账单由两部分叠加而成:DBU费用和云基础设施费用。理解这两层结构,是后续所有成本分析的基础。
DBU(Databricks Unit)是Databricks的计费单位,按“每秒”计量,不同计算产品的DBU单价不同。例如,All-Purpose Cluster的DBU单价通常高于Job Cluster,而Serverless SQL Warehouse的单价又不同于Classic SQL Warehouse。云基础设施费用则来自底层云厂商,包括VM实例、存储、网络等,这部分费用由云厂商直接收取,但由Databricks的资源配置方式决定。
关键点在于:DBU费用和云费用是两条独立的成本线,但由同一组工程决策驱动。比如,一个All-Purpose Cluster如果忘记自动终止,会同时产生DBU费用和VM费用;而一个Job Cluster即使运行时间较长,由于单价更低,单位计算成本可能反而更优。因此,成本治理不能只看DBU,也不能只看云账单,必须把两者放在同一个归因维度下分析。
成本治理工程框架:从归因到闭环
把FinOps原则和计费模型结合起来,可以形成一个四步闭环的工程框架:归因 → 度量 → 优化 → 复盘。这个框架的价值在于,它把“省钱”这个模糊目标,拆解成了可执行、可验证的工程动作。
归因是第一步,也是最容易被忽视的一步。Databricks提供了多种归因手段:Cluster标签、Job标签、Workspace标签、以及账单明细中的usage metadata。实践中,建议在创建Cluster和Job时强制打上至少三个标签:team(团队)、project(项目)、env(环境,如prod/dev)。这样,后续的账单分析才能按团队和项目聚合。一个常见的反例是:所有作业都跑在同一个All-Purpose Cluster上,没有标签,最终只能看到“这个Cluster花了多少钱”,无法知道“哪个项目该为此负责”。
度量阶段需要关注两类指标:绝对成本(某作业每天消耗多少DBU)和单位成本(处理每TB数据或每千次查询的成本)。绝对成本用于预算控制,单位成本用于效率对比。例如,两个作业都处理1TB数据,一个消耗10 DBU,另一个消耗25 DBU,后者就值得深入分析——可能是shuffle过多、数据倾斜或资源配置不合理。
优化是治理动作的落地环节。Databricks场景下常见的优化手段包括:用Job Cluster替代All-Purpose Cluster执行调度作业、开启自动终止(auto-termination)、调整worker数量和实例类型、使用Photon加速、优化Delta表布局(如Z-Order、分区)、以及将低频查询迁移到Serverless SQL Warehouse。这些动作的优先级取决于成本归因的结果——先解决“大头”,再处理“长尾”。
复盘是闭环的收口。建议以周为单位,由FinOps分析师输出一份成本报告,包含:本周总DBU消耗、Top 10成本作业、异常波动(如某天成本突然翻倍)、以及优化动作的收益验证。复盘的目的不是追责,而是让团队看到“优化动作确实带来了成本下降”,从而形成正向激励。
核心角色与协作机制
成本治理不是某个人的事,而是三个角色的协同:
- 平台工程师:负责标签规范、Cluster策略(如最大worker数限制)、预算告警配置、以及账单数据的导出和清洗。他们是治理基础设施的搭建者。
- 数据工程师:负责具体作业的配置和调优。他们最了解作业的逻辑和数据特征,是优化动作的直接执行者。
- FinOps分析师:负责成本数据的分析、异常检测、报告输出和优化建议的跟踪。他们是连接工程和财务的桥梁。
三者的协作机制可以简化为一个每周循环:平台工程师提供归因数据,FinOps分析师识别异常和优化机会,数据工程师执行优化并反馈结果。这个循环不需要复杂的工具链,但需要明确的职责边界和固定的沟通节奏。
team和project标签,再逐步细化到job_id级别。归因粒度是逐步演进的,不是一步到位的。
一个可参考的起步检查清单
如果你刚接手一个Databricks环境的成本治理,可以按以下顺序推进:
| 阶段 | 动作 | 判断标准 |
|---|---|---|
| 归因 | 检查所有Cluster和Job是否已打标签 | 生产作业标签覆盖率 ≥ 95% |
| 度量 | 导出最近30天账单,按团队聚合 | 能回答“哪个团队花得最多” |
| 优化 | 识别Top 5成本作业,检查是否使用Job Cluster和自动终止 | Top 5作业中至少3个有明确优化空间 |
| 复盘 | 建立周报机制,跟踪优化收益 | 连续两周成本环比下降或持平 |
这个清单不是标准答案,而是一个起点。实际推进中,你会发现最大的阻力往往不是技术,而是“没人愿意为成本负责”。因此,第一步不是优化,而是让成本变得可见、可归因、可讨论。当团队开始在日常站会上讨论“这个作业为什么花了这么多DBU”时,治理才真正开始运转。