首页/新闻资讯/正文详情

一个端口同时讲 S3 和 Iceberg:对象存储内置 REST Catalog 拆解

发布时间:2026/9/25 20:22:15 来源:云帆数科 栏目:资讯中心
一个端口同时讲 S3 和 Iceberg:对象存储内置 REST Catalog 拆解
数据湖上了 Iceberg最磨人的往往不是计算而是 catalog。自建要么养一套 Hive Metastore要么跑一个 Polaris 或 Nessie光这一层又是一套服务要盯监控、要备份、要升级。很多人想试 Iceberg最后被表存在哪、元数据谁管两个问题劝退表没建几张先招了个专职运维。有人就琢磨catalog 管的就是表在对象存储里的位置那能不能让对象存储自己把这层也管了近两年这个方向确实热AWS 的 S3 Tables、一众开源 catalog 项目都在往存储即目录靠拢。本文拆一个具体做法把 Iceberg REST Catalog 直接做进对象存储内核一个进程、一个端口同时对外讲标准 S3 和 Iceberg REST。传统两件套的账经典玩法里对象存储管数据catalog 另起一个服务管元数据两边各管各的。代价是实打实的多一套进程要保活多一个依赖要升级多一份元数据要备份。catalog 和对象存储之间要有网络连通和鉴权对齐配错一处表就读不到。团队规模小的时候这一层的人力占比高得离谱。RustFS 从 1.0.0-rc.5 起把这套能力以S3 Table的形式开源内置了走的正是对象存储内核直接带 Iceberg REST Catalog这条路。下面看它怎么把两件套合成一个进程。一个进程两套协议起一个单节点S3 数据和 Iceberg REST Catalog 都在 9000 端口数据面走标准 S3控制面走/iceberg路径的 Iceberg REST。控制台 UI 单独在 9001。想确认 catalog 真的在监听一条 curl 就能验curl-XGET http://ip:9000/iceberg/v1/config\-HAuthorization: AWS4-HMAC-SHA256 ...返回里有defaults和signing-region说明控制面已经起来了。这一层是标准的 Iceberg REST 协议不绑定某个计算引擎。控制面CAS 加幂等键建表、提交快照这类写 catalog 的操作走 Iceberg REST Catalog。这里的一致性靠两件事CASCompare-And-Swap版本校验并发提交时过期的快照提交会被拒绝不会出现后提交的覆盖了先提交的。幂等键同一个提交重复发送catalog 只生效一次网络重试不会造出重复表版本。多引擎同时写也能保证目录层一致不用在存储侧加全局锁。数据面S3 直写存算分离真正的 Parquet 文件不进 catalog而是由计算引擎经 S3 API 直写桶内。catalog 只存元数据指针文件本身走标准 S3 写入路径。这就是典型的存算分离计算集群挂了数据还在桶里计算扩容不用动 catalog。防写坏保留前缀护住目录层元数据指针受保留前缀保护普通 S3 的 PUT/DELETE 改不动目录层结构。好处是你往桶里塞自己的非结构化对象时不会误手把 Iceberg 的元数据指针删了数据湖不会被写坏。反过来表数据落进去之后也要分清哪些 prefix 是表、哪些是你自己塞的对象别误删。并发冲突怎么走多引擎同时提交快照靠的是 catalog 的 CAS 拒绝过期提交不是存储层加锁。所以高频并发写的场景冲突会走读最新快照、重算、再提交的乐观路径。写应用的时候把重试逻辑留好比指望底层无锁更稳。这种架构适合谁团队小、不想养 metastore 的一个进程把数据和目录都管了运维面小。已经是 Spark / DuckDB / PyIceberg 技术栈的不用为 catalog 单独学一套系统。想存算分离的数据面走 S3、计算集群可独立扩缩。可以照着看的一步想判断这条路适不适合你半小时内能验证起一个单节点容器控制台建个桶并启用表存储桶用上面那条 curl 确认/iceberg/v1/config能返回再拿一段 PySpark 把表建出来。控制面和数据面是不是你要的一测就知道比看架构图实在。

相关推荐

基于规则与模型的混合路由分发架构
基于规则与模型的混合路由分发架构

基于规则与模型的混合路由分发架构在构建轻量级 Agent 或交互式助手时,许多人习惯把用户输入的每一句话都直接扔给大语言模型(LLM)去解析意图。这种做法在演示 Demo 中显得无所不能,但在实际生产运行中会带来严重的延迟与成本痛点… · 2026/9/25 20:22:15

为什么 Python 的 queue 模块里会有 LifoQueue?
为什么 Python 的 queue 模块里会有 LifoQueue?

为什么 Python 的 queue 模块里会有 LifoQueue? 我一开始有一个疑问:为什么 Python 的 queue 模块里会有一个 LifoQueue?queue 不是 FIFO 吗?这个问题看起来像是个命名矛盾,但当我顺着官方文档和 CPython 源码往下看&a… · 2026/9/25 20:22:14

对接扫码枪/打印机/报警器全是重复代码?C#上位机通用外设层封装实战
对接扫码枪/打印机/报警器全是重复代码?C#上位机通用外设层封装实战

做工业上位机开发的朋友应该都有同感:业务逻辑没多少工作量,大半时间都耗在对接各种外设上。一条产线工位,扫码枪、标签打印机、声光报警器是标配,好点的还要加RFID读卡器、称重仪、指示灯。每个外设接口不一样、协议不一样,串口、USB、网口混着来,换个品牌就要重写半套代… · 2026/9/25 20:22:08

dasd是什么?macOS后台进程CPU占用高原因与排查指南
dasd是什么?macOS后台进程CPU占用高原因与排查指南

打开活动监视器,按CPU那一栏点一下排序,结果我愣住了:一个叫dasd的进程排在最前面,CPU占用忽高忽低,底下父进程写的是launchd,路径/usr/libexec/dasd。估计你跟我当初一样,第一反应是“这是什么… · 2026/9/25 20:45:07

开源转换器f2cpp实战:Fortran到C++代码迁移指南
开源转换器f2cpp实战:Fortran到C++代码迁移指南

简介:f2cpp是一款面向科学计算领域开发者的开源转换工具,核心用途是将Fortran 77编写的数值计算程序自动转换为现代C代码,帮助科研人员与工程师将遗留代码库平滑迁移到C生态,减少手工重写成本。资源包共11个文件、大小仅48KB&… · 2026/9/25 20:45:07

CentOS 7 安装 PostgreSQL 14.0:从排雷到远程连接全攻略
CentOS 7 安装 PostgreSQL 14.0:从排雷到远程连接全攻略

1. 安装前必须排掉的三个雷:网络、yum源、安装方式我见过太多人兴冲冲跑到服务器上,第一行命令就是yum install postgresql,然后装完一看版本是 9.2,当场人就傻掉了。CentOS 7 自带仓库里那个 PostgreSQL 版本太老,已经… · 2026/9/25 20:45:01

AI 算力需求从集中训练到广泛推理:端脑科技如何构建云边端协同算力体系
AI 算力需求从集中训练到广泛推理:端脑科技如何构建云边端协同算力体系

摘要:随着人工智能从大模型集中训练走向面向创作、科研、开发与企业业务的广泛推理,算力基础设施正在由以中心化集群承载训练为主,向云端、边缘与本地设备分层协同演进。基于在人工智能、高性能计算及国家超级计算广州中心南沙分中心建设与运… · 2026/9/25 20:45:01

微信小程序动漫推荐系统毕设源码:Java后端+MySQL完整项目实战
微信小程序动漫推荐系统毕设源码:Java后端+MySQL完整项目实战

简介:这是一套面向高校计算机相关专业毕业设计的动漫推荐系统小程序源码,采用微信开发者工具、Java与MySQL组合开发,适合正在准备毕设或需要小程序全栈练手项目的学生参考。压缩包共3267个文件,约16.59MB,其中png、svg… · 2026/9/25 20:45:01

环氧厚浆底漆配套体系选型:厂房与沿海钢构涂层设计差异
环氧厚浆底漆配套体系选型:厂房与沿海钢构涂层设计差异

钢结构防腐项目中,设计院或业主常问一个问题:同一款环氧厚浆底漆,能不能在厂房和沿海都直接套用?答案是否定的。配套体系必须跟着环境走,不同腐蚀环境对应的涂层组合和厚度参数存在明确分界。普通重防腐厂房钢结构的涂… · 2026/9/25 20:45:01

数值优化(Numerical Optimization)学习系列-03-共轭梯度方法(Conjugate Gradient)
数值优化(Numerical Optimization)学习系列-03-共轭梯度方法(Conjugate Gradient)

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 1:00:31

创维E900V22D刷机全攻略:S905L3SB芯片兼容性解析与救砖实战
创维E900V22D刷机全攻略:S905L3SB芯片兼容性解析与救砖实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 1:00:31

MQTT协议原理与Broker服务器搭建实战:从Mosquitto到EMQX
MQTT协议原理与Broker服务器搭建实战:从Mosquitto到EMQX

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 1:00:37

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码