服务器与大带宽专家 · 持牌IDC/CDN/ISP服务商
简米科技官网JIANMI TECH
资讯 2026-09-03 简米科技 2,943 字 7 分钟阅读

对象存储适合做数据湖底层的统一存储池

导读对象存储完全适合做数据湖底层的统一存储池,而且这已经是数据架构领域的主流共识——便宜、弹性、可扩展,生态兼容性也不断成熟,做数据湖选型的人,大概率都卡在过这个问题上:底层到底用什么存?HDFS老牌,但运维成本高,本地盘便宜,但扩容麻烦,云上的对象存储,看着不像正经文件系统,能用吗?答案是能用,而且很能打,这篇文……

对象存储完全适合做数据湖底层的统一存储池,而且这已经是数据架构领域的主流共识便宜、弹性、可扩展,生态兼容性也不断成熟。

做数据湖选型的人,大概率都卡在过这个问题上:底层到底用什么存?HDFS老牌,但运维成本高,本地盘便宜,但扩容麻烦,云上的对象存储,看着不像正经文件系统,能用吗?

答案是能用,而且很能打,这篇文章不堆概念,直接讲清楚为什么对象存储能扛起数据湖底座,以及落地时你要注意什么。

对象存储适合做数据湖吗?先看架构演进的必然性

早年数据湖是HDFS的天下,这个没争议,但从2018年之后,行业共识已经悄悄变了几乎所有云厂商的数据湖方案,底层都是对象存储,AWS的S3、简米云的OSS、酷番云的COS,无一例外。

为什么巨头都押注对象存储?因为数据湖的底层需求变了。

数据湖的存储需求,已经从"大"转向"活"

过去数据湖解决的是"数据放不下"的问题,现在解决的是"数据怎么用得起来"的问题,对象存储天然具备三个适配属性:

  • 按量付费,不用规划容量,存多少花多少,适合数据量波动大的场景。
  • 无限扩展,桶和对象没有上限,不像HDFS要操心NameNode内存。
  • 独立于计算,存算分离架构下,Spark、Flink、Presto各算各的,存储层不动。

这三个属性,恰好命中数据湖建设的核心痛点,数据湖的报表、AI训练、即席查询,读的是同一份数据,算力高峰和低谷差好几倍,如果存储层和计算层绑死,成本和复杂度都失控。

对象存储的数据湖定位:统一底座,而不是文件系统

很多人担心对象存储不支持随机写,不能当文件系统用,这个担心在数据湖场景里其实是伪命题数据湖的写入模式是"写一次,读多次",对象存储的不可变对象天然契合这种模式。

对象存储适合做数据湖底层的统一存储池

保守地讲,现在95%以上的数据湖写入场景,都不需要修改已落盘的文件,批处理、流式落地、日志归档,全是追加写入,对象存储的语义虽简,但恰好覆盖了数据湖的核心需求。

对象存储和hdfs的区别,决定了数据湖的上限

对象存储和HDFS的区别不仅仅是存储介质不同,而是架构哲学的根本差异,搞懂这个区别,你就知道为什么对象存储能成为更合适的数据湖底座。

扩容方式:HDFS加法,对象存储乘法

HDFS是"加节点"的线性扩容,每加一个DataNode,NameNode的负载就多一分,当文件数突破亿级时,NameNode就是整个集群的瓶颈这是HDFS老用户的共识。

对象存储则完全不同,桶里的对象数量可以做到数十亿甚至数百亿,无需规划节点,存储层对上层应用完全透明。对象存储指数级扩展能力,是数据湖规模化基础。

对比维度 HDFS 对象存储
扩容维度 加节点,有上限 按需使用,无感知
存储成本 需要预留冗余 按实际存储量计费
与计算耦合 强耦合,同集群 存算分离,独立弹性
小文件处理 NameNode压力大 需要合并优化

存储成本怎么算?对象存储把账算明白了

算存储成本是数据湖选型绕不开的一环,HDFS的成本不只是磁盘,还有服务器、机柜、机房、运维人力,对象存储按GB计费,看起来单价不是最低,但总拥有成本低得多。

以国内主流公有云为例(截至2026年的公开报价):标准存储单价约0.12元/GB/月,低频存储0.08元/GB/月,归档存储更低,1PB数据一年的存储成本约在百万元级别,而且不用买服务器、不用养运维。无论是自建机房还是使用公有云,对象存储成本优势都相当明显。

对象存储适合做数据湖底层的统一存储池

对象存储做数据湖底层,实操比想象中简单

理论说完了,聊点实际的,很多人对对象存储的顾虑来自迁移复杂度,实际上现代数据湖框架已经把适配工作做完了。

引擎兼容性:主流框架全部原生支持

不用怀疑Spark适配对象存储的能力,Spark从2.0开始就通过S3A协议接入S3,后续版本持续优化了list操作和commit机制,Flink的StreamingFileSink同样支持写入对象存储,Presto和Trino更不用说,查询引擎对对象存储的适配比HDFS还顺畅。

真正需要关注的,是元数据层的选择,简单场景可以直接用文件系统的目录结构,复杂场景建议引入Hive Metastore或统一元数据服务,把表和对象路径的映射关系管起来。

访问模式:数据三副本换来的,是计算和存储的自由

在对象存储上,计算和存储彻底解耦了,集群想扩就扩、想缩就缩,任务跑完直接释放,相比HDFS的"机架感知+数据本地性"优化,对象存储走的是另一条路通过更大带宽和更高并发来弥补本地性的缺失。

简米云OSS加上JindoFS SDK,或者酷番云COS的Hadoop工具包,都能在客户端做缓存和加速,性能已经不输HDFS本地读,对于常规的数据清洗和报表任务,这个性能差距基本感知不到。

小文件问题:必须处理的坑

对象存储对大文件的读写效率很高,但对大量小文件不友好,如果你的数据湖里有海量几KB的小日志文件,list和get的开销会很可观。

解决思路不复杂:用Spark或Flink做小文件合并的定时任务,把零碎文件合并成128MB以上的大文件,再定期清理_$folder$这类标记文件,数据量低于1TB的阶段,对象存储能省下大量运维时间;数据到PB级别以后,小文件治理也是一定要迈过去的坎。

多地域部署:数据湖的另一种打开方式

对象存储适合做数据湖底层的统一存储池

如果你的业务是全球化分布的,对象存储的多副本能力会明显简化跨区域场景,比如把美西的订单数据同步到新加坡,用对象存储的跨区域复制功能,成本比专线低得多前提是你得接受秒级的延迟。把数据湖的底座放在对象存储上,意味着跨区域数据协同的复杂度天然就低了一个维度。 做全球业务的朋友,这部分应该深有体会。

数据湖选型,有一点必须想清楚

说了这么多优点,也聊聊边界,对象存储不是万能的,不适合把它当本地磁盘用,也不适合承载高频随机写的场景,如果你要做的是实时数仓,每秒数万次update,那还是要考虑HBase或Kafka这类组件。

数据湖选型没有绝对的对错,关键看数据生命周期与访问模式,对象存储的优势区间是海量数据的离线存储、批量处理和低频查询,它把"存"这个动作的成本压到了极低,也把"算"的灵活性还给了上层引擎。

对象存储适合做数据湖吗?常见问题解答

用对象存储做数据湖,会不会影响查询性能?

对多数场景影响较小,通过文件合并、列式存储格式(Parquet/ORC)和分区裁剪,查询性能可以达到或接近本地存储水平,对时延极其敏感的交互式查询,可以配合缓存层或使用热存储分层解决。

对象存储和hdfs的迁移成本有多高?

主要成本在数据迁移和任务改造,数据迁移通过DistCp即可完成,日均PB级不成问题;任务改造主要涉及路径替换和参数调优,一般不超过两周投入,对于存算分离的架构,迁移后还能顺手省一笔存储成本。

数据湖存储在S3和OSS之间怎么选?

国内业务优先OSS,海外业务优先S3,是多数情况下的稳妥选择,具体要看Open表格式版本、Compaction实现和存量客户端协议兼容性,如果之前用过服务器、Presto或Spark,选已经验证过的存储层方案,踩坑概率会小很多。

分享本文
本文为 简米科技官网 原创,已由运维技术专家审核。转载请注明来源:原文链接
售前咨询 服务热线 售后 邮箱