首页 / 业界 / 正文

湖仓一体架构选型与落地 踩过坑才敢说的真话

上周跟河西某做生鲜电商的技术老大在奥体的咖啡店喝冰美式,他攥着冷掉的杯子皱眉头,说刚砸了两百万搭的数仓,上线仨月,运营要个实时库存报表还得等俩小时,财务的T+1对账数据还跟业务端对不上,两边吵到他办公室拍桌子。

1024那天我在国展中心逛展,好几个厂商的宣讲会全在吹湖仓一体,散场的时候听旁边两个小厂的技术嘀咕,说吹得天花乱坠,自己连数据同步都搞不利索。说白了,大多数人对湖仓一体的认知,还停留在厂商的PPT上。

别被厂商的PPT忽悠瘸了

选型这事儿,最忌讳的就是上来听个宣讲就拍板。我见过太多团队,把“支持数据湖”“支持ACID”几个字打在宣传页上,就敢叫自己湖仓一体。实际上呢?要么是在原有数仓外面套了个对象存储的壳,跨引擎查个数据还要手动导CSV;要么是开源组件拼起来的半成品,连个完整的运维监控都没有。

开源湖仓一体架构与商用数仓能力对比示意图

我当时差点把手里的咖啡喷出来——这不就是去年我陪朋友踩的一模一样的坑?那朋友当时为了赶项目进度,选了某宣传得最凶的商用方案,结果上线才发现,团队里没人会调它的专属SQL方言,业务提的新需求,全得找厂商的驻场开发,光服务费一年就够再买半套系统。

选型之前先摸清楚自己的业务需求边界。你要是团队全是Java开发,没几个专门搞数仓的老炮,就别上来硬怼开源的Delta Lake,自己改bug改到秃头;你要是业务有大量实时计算需求,比如要做用户行为实时推荐,就得看选的架构能不能直接对接Flink,不用额外搭一层同步链路;哪怕你预算充足选商用,也得先问清楚,后续的定制化开发要不要额外收费,权限配置能不能跟你们现有的SSO打通——这些细碎的事儿,PPT上永远不会写。

落地最容易卡壳的三个细节

很多人以为选型定了就万事大吉,实际上落地的时候卡的全是没人提前想到的小坑。

第一个坑是元数据统一。我见过太多团队,上来就先搭计算层,结果原来的业务库、旧数仓、对象存储的元数据各管各的,查个表名还要翻三个系统的文档,开发写个SQL要花一半时间找字段。我们之前落地的时候,直接把所有元数据统一存在Hive Metastore里,不管是Spark还是Trino还是Flink,全走这个入口取数,省了好多同步的麻烦。

湖仓一体元数据统一流转架构图
湖仓一体元数据统一流转架构图

第二个坑是权限打通。之前我们踩过最离谱的坑,业务部门的运营要查个月度销售数据,得找数仓、运维、安全三个团队分别开权限,流程走一周,人家早就自己导Excel算去了,数仓的存在感直接降到零。后来我们直接把权限体系跟企业微信的组织架构打通,谁能查什么数据,自动同步,申请流程半天就能走完,使用率直接涨了三倍。

第三个坑是冷热数据分层。很多人图省事,把所有数据全存在高性能SSD上,成本高到老板见了都皱眉。其实超过三个月的历史查询需求,大多都是临时的合规检查,直接下沉到对象存储,查询性能降个30%,存储成本能降70%——谁的钱也不是大风刮来的,对吧?

别追求一步到位的完美架构

我知道很多技术人都有完美主义情结,上来就要搭全链路的实时湖仓,从接入层到计算层到存储层,全给你搭得整整齐齐,结果搞了半年还没上线,业务早就等不及用别的工具凑合用了。

真的,别信什么一步到位的鬼话。业务的需求是每天都变的,你今天搭的完美架构,下周运营要个新的用户分群维度,你又得改。我们去年给一个做在线教育的客户落地,一开始他们拍着桌子要全链路实时,我劝他们先把最核心的离线报表迁到湖仓架构里,跑稳了再加实时链路。三个月后离线的链路稳了,我们再把最核心的实时报名、实时上课数据迁上去,现在整个架构的稳定性,比一开始硬上实时的团队高了80%,开发的压力也小了好多。

上周那个生鲜电商的老大,昨天给我发消息,说把原来的架构砍了一半,先跑通库存和对账的核心需求,现在运营要报表十分钟就能出,两边也不吵架了。

挺好。