Apache Gravitino 安装部署完整指南:十分钟搭建统一元数据湖

Apache Gravitino 安装部署完整指南:十分钟搭建统一元数据湖

【免费下载链接】gravitinoWorld's most powerful open data catalog for building a high-performance, geo-distributed and federated metadata lake.项目地址: https://gitcode.com/GitHub_Trending/gra/gravitino

元数据散落在 Hive、MySQL、Iceberg 各自为政的体系里,查询、权限和治理都得逐套系统打交道。Apache Gravitino 是一个开源的统一元数据湖(metadata lake),把不同数据源、不同区域的元数据汇聚到一个模型里,通过一套 API 暴露给计算引擎和 Web UI。

Gravitino 架构一览:元数据从哪里来,到哪里去

整条链路可以拆成三段:

  • 接入层:Gravitino 内置多种 Catalog 连接器(Hive、JDBC、Iceberg、Paimon、Kafka、Fileset、Model 等),直连底层系统,底层的变化会实时反映到元数据中;
  • 服务端:Gravitino Server 负责 Metalake / Catalog / Schema / Table 的层级化管理,元数据默认存在内置 H2 里,生产可换成 MySQL / PostgreSQL;
  • 消费层:Web UI、REST API、Java / Python 客户端,以及 Trino、Spark、Flink 等引擎连接器都从这里读取元数据,SQL 方言无需改动。

能力速览:你能用它解决什么问题

你面对的场景接入 Gravitino 之后
湖和仓的元数据分散在多个系统用 Metalake / Catalog 层级统一管理,一套 API 检索全部资产
混合云或多区域部署,元数据各存各的元数据跨区域共享,避免重复建设和漂移
权限、审计散落在各引擎里访问控制、审计、归属(Ownership)在元数据层集中执行
引擎查湖仓表要各自配 catalogTrino / Spark / Flink 通过连接器即插即用,SQL 写法不变
要管理 AI 模型、文件集等非表资产Model、Fileset 等实体纳入同一套元数据管理

Gravitino 部署环境与依赖清单

动手前先对照下表确认环境。Windows 原生环境暂不支持构建,可用 WSL 走 Linux 流程。

类别要求说明
操作系统Linux / macOS官方验证 Ubuntu 22.04 / 24.04、Amazon Linux
JDK17(最低)运行与构建都需要,macOS 上推荐 Amazon Corretto 17
Python3.10 / 3.11 / 3.12仅构建 Python 客户端时需要
Docker可选容器化部署、Playground、集成测试需要
内存 / 磁盘建议 4 GB RAM 起Playground 全家桶建议 2 核 / 8 GB RAM / 25 GB 磁盘
元数据存储H2(默认)或 MySQL 5.7/8.0、PostgreSQL 12–16H2 开箱即用但仅限开发;生产元数据请落 MySQL / PostgreSQL
Kubernetes1.29+ / Helm 3+仅生产 Helm 部署路径需要

部署路径:挑一条最匹配你节奏的路

最快的一条命令:容器直接跑

只是想快速体验,拉一个官方镜像即可:

docker run -d -i -p 8090:8090 apache/gravitino:<version>

把<version>换成镜像标签。启动后 Web UI 在http://localhost:8090。注意镜像只含 Gravitino Server 基础配置,要连真实数据源得自己加 Catalog 配置。

全家桶体验:启动 Playground

不想自己拼 Hive、Trino、MySQL 的环境,可以直接用官方提供的 Docker Compose 版 Playground——Gravitino Server、Hive、HDFS、Trino、MySQL、PostgreSQL、Jupyter 一次拉起,启动约 3–5 分钟。资源需求 2 核 / 8 GB 内存 / 25 GB 磁盘,端口占用与启动命令见官方文档:docs/how-to-use-the-playground.md。

从源码构建发行包

需要定制、或想拿到 contrib 目录(如 ClickHouse、OceanBase Catalog)时用这条路径:

# 克隆仓库 git clone https://gitcode.com/GitHub_Trending/gra/gravitino cd gravitino # 打包二进制发行包(跳过测试;首次构建含依赖下载,预计 15 分钟以上) ./gradlew assembleDistribution -x test

产物在distribution/目录:gravitino-<version>-bin.tar.gz是标准包;gravitino-<version>-bin-all.tar.gz额外包含catalogs-contrib下的目录。解压后即可运行:

tar -xzf distribution/gravitino-<version>-bin.tar.gz -C /opt/ cd /opt/gravitino-<version> ./bin/gravitino.sh start # 后台启动 ./bin/gravitino.sh stop # 停止服务

发行包结构速览:bin/是启动脚本,conf/放配置,catalogs/<类型>/放各 Catalog 依赖与默认配置,scripts/是各数据库的建库脚本。

上生产:Helm Chart 部署到 Kubernetes

生产环境推荐用官方 Helm Chart 部署,要求 K8s 1.29+ 与 Helm 3+。直接从 OCI 仓库安装:

helm upgrade --install gravitino \ oci://registry-1.docker.io/apache/gravitino-helm \ --version <VERSION> -n gravitino --create-namespace

需要覆盖gravitino.conf里的任何配置项时,通过values.yaml传入即可,完整选项见 docs/chart.md。

确认服务存活:三个姿势交叉验证

服务起来后别急着配 Catalog,先用下面三种方式确认它真的健康:

1. 版本 API(最基本的连通性)

curl -s -X GET \ -H "Accept: application/vnd.gravitino.v1+json" \ http://localhost:8090/api/version

返回版本 JSON 就说明 HTTP 服务在应答。

2. 健康检查端点(生产探针同款)

curl -i http://localhost:8090/api/health

返回 200 表示 HTTP 服务、元数据存储(entity store)双双可达;返回 503 时,响应体里的checks字段会指明是httpServer还是entityStore挂了。语义细节参考 docs/health-and-readiness.md。

3. Web UI 目视确认

浏览器打开http://localhost:8090,能看到 Metalake 列表页即表示一切正常(默认为 Web V2 UI;想回退旧版 UI,在conf/gravitino-env.sh里设GRAVITINO_USE_WEB_V2=false后重启)。

最小可用配置:端口与元数据存储

Gravitino 的配置文件只有一个核心文件conf/gravitino.conf。默认值已经能跑起来(H2 存储 + 8090 端口),真正需要动的通常只有两类:

改端口(开发机端口冲突时)

gravitino.server.webserver.httpPort = 8090

生产必改:把元数据落到 MySQL / PostgreSQL

H2 只适合本地试玩,官方明确不对 H2 中的元数据做一致性/持久性保证。切换时改四个 JDBC 属性即可,gravitino.entity.store与gravitino.entity.store.relational保持默认(relational/JDBCBackend):

# conf/gravitino.conf —— 以 MySQL 为例 gravitino.entity.store.relational.jdbcUrl = jdbc:mysql://{host}:3306/{database} gravitino.entity.store.relational.jdbcDriver = com.mysql.cj.jdbc.Driver gravitino.entity.store.relational.jdbcUser = {username} gravitino.entity.store.relational.jdbcPassword = {password}

两个容易踩的坑:

  • H2 会在启动时自动初始化表结构,MySQL / PostgreSQL 不会——第一次启动前要先建库,并手工执行发行包scripts/mysql/(或scripts/postgresql/)下与版本对应的schema-*.sql;
  • 驱动 jar(如com.mysql:mysql-connector-j、org.postgresql:postgresql)需要放到libs/目录。

完整参数说明见 docs/gravitino-server-config.md,RDBMS 初始化步骤见 docs/how-to-use-relational-backend-storage.md。

引擎接入与客户端连接

服务跑通后,元数据要进入日常工作流才算数。

Trino 连接器:构建./gradlew assembleTrinoConnector可得到gravitino-trino-connector-<version>.tar.gz,部署到 Trino 后,Hive、Iceberg、MySQL、PostgreSQL、AWS Glue 等目录都能通过 Gravitino 联邦查询,SQL 写法不变。文档:docs/trino-connector/。

Spark / Flink 连接器:分别对应spark-connector/与flink-connector/模块,支持 Hive、Iceberg、JDBC、Paimon 等 Catalog,文档:docs/spark-connector/spark-connector.md、docs/flink-connector/flink-connector.md。

Iceberg REST 服务:发行包内置原生 Iceberg REST Catalog,默认监听 9001 端口,可用gravitino.sh start随主服务一起拉起,也支持独立进程运行,详见 docs/iceberg-rest-service.md。

客户端:Java 客户端走clients/client-java/,Python 客户端在clients/client-python/,安装后可以用几行代码完成 Metalake、Catalog、Table 的增删查改,示例见 docs/how-to-use-python-client.md。

在 Web UI 里建第一个 Catalog:登录后点「创建 Catalog」,选择类型(Hive / JDBC / Iceberg 等),填入连接属性即可。类型级默认配置写在catalogs/<类型>/conf/下,创建时传入的 properties 优先级更高;带gravitino.bypass.前缀的属性会透传给底层客户端(如 HMS 的 Kerberos 配置)。

卡点排查:现象与解法对照表

卡点现象对应解法
/api/health返回 503,checks 里entityStore为 down元数据存储连不上:核对 jdbcUrl / 账号 / 密码,确认 MySQL / PostgreSQL 已建库并执行过 schema 脚本
端口 8090 被占用,启动即退出修改gravitino.server.webserver.httpPort,或释放原端口;logs/下的日志可确认冲突详情
docker run后浏览器访问不到 8090确认-p 8090:8090已映射且宿主机防火墙放行;容器内用docker exec进curl自检
首次./gradlew build非常慢属正常现象,首次要下载大量依赖,15 分钟以上;加-x test跳过测试可明显提速
Windows 上构建失败原生 Windows 不支持,安装 WSL(Ubuntu)后按 Linux 流程构建,步骤见 docs/how-to-build.md
找不到 ClickHouse / OceanBase Catalog这两个目录不在默认发行包内;从源码构建并改用gravitino-<version>-bin-all.tar.gz
健康端点 503 且 details 提示OutOfMemoryErrorOOM 后健康状态会持续异常直到进程重启,先扩容或限制大请求,再./bin/gravitino.sh restart
重启后元数据「丢了」检查是否还在用 H2 且未持久化;生产请切换到 MySQL / PostgreSQL 存储
创建 Catalog 报错,属性不生效确认属性拼写与catalogs/<类型>/conf/默认值的关系:创建时 properties 覆盖配置文件;需要透传底层配置时加gravitino.bypass.前缀

继续深入:文档与社区

  • 入门与云环境部署(AWS / GCP / 本地):docs/getting-started/
  • 安装、构建与升级:docs/how-to-install.md、docs/how-to-build.md、docs/how-to-upgrade.md
  • 各 Catalog 专题(Hive / Iceberg / JDBC / Kafka / Fileset 等):docs/
  • 安全与认证:docs/security/how-to-authenticate.md;监控指标:docs/metrics.md
  • 遇到问题先翻仓库 Issues;日常讨论可加入 Apache Gravitino 的邮件列表与 Slack 社区,源码层面的疑问可以直接对照各模块 README 与docs/open-api/下的 OpenAPI 定义。

服务已经跑起来只是起点——下一步,试着把你的第一个数据源接进 Metalake,用 Trino 或 Spark 从「同一个门口」查询它,元数据湖的价值才会真正显现。

【免费下载链接】gravitinoWorld's most powerful open data catalog for building a high-performance, geo-distributed and federated metadata lake.项目地址: https://gitcode.com/GitHub_Trending/gra/gravitino

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

PySR项目中导入问题的分析与解决

PySR项目中导入问题的分析与解决

PySR项目中导入问题的分析与解决 【免费下载链接】PySR Symbolic Learning in Python and Julia 项目地址: https://gitcode.com/GitHub_Trending/py/PySR 引言&#xff1a;当符号回归遇上导入困境 你是否曾经满怀期待地安装PySR这个强大的符号回归工具&#xff0c;却在…

2026/10/20 1:20:54 阅读更多 →
Spike RISC-V 模拟器安装指南:三步完成编译与首次运行验证

Spike RISC-V 模拟器安装指南:三步完成编译与首次运行验证

Spike RISC-V 模拟器安装指南&#xff1a;三步完成编译与首次运行验证 【免费下载链接】riscv-isa-sim Spike, a RISC-V ISA Simulator 项目地址: https://gitcode.com/GitHub_Trending/ri/riscv-isa-sim Spike 是一款 RISC-V 指令集模拟器&#xff0c;它以功能模型的方…

2026/10/20 1:20:54 阅读更多 →
PySR项目中关于JuliaCall错误的技术分析与解决方案

PySR项目中关于JuliaCall错误的技术分析与解决方案

PySR项目中关于JuliaCall错误的技术分析与解决方案 【免费下载链接】PySR Symbolic Learning in Python and Julia 项目地址: https://gitcode.com/GitHub_Trending/py/PySR 引言&#xff1a;当高性能符号回归遭遇JuliaCall困境 你是否曾经满怀期待地安装PySR&#xff…

2026/10/20 1:20:54 阅读更多 →

最新新闻

Unity代码热更新实战:ILRuntime集成Addressable的完整方案与避坑指南

Unity代码热更新实战:ILRuntime集成Addressable的完整方案与避坑指南

做Unity客户端这些年&#xff0c;只要是做手游的&#xff0c;基本绕不开热更新这个话题。资源热更还好说&#xff0c;AssetBundle或者Addressable都能解决&#xff0c;真正麻烦的是代码热更。以前用Lua&#xff0c;好是好&#xff0c;但团队要养Lua程序员&#xff0c;C#的代码也…

2026/10/20 2:00:13 阅读更多 →
MapReduce核心原理解析:从分而治之到Shuffle与优化实践

MapReduce核心原理解析:从分而治之到Shuffle与优化实践

1. 为什么先要有MapReduce&#xff1a;单机跑不动的那一刻我最早接触MapReduce是在某培训机构的课程笔记里&#xff08;也就是标题里这个"学习历程"系列&#xff09;&#xff0c;前几章还在讲HDFS&#xff0c;讲数据怎么分块存储、怎么备份。当时我的感觉是&#xff…

2026/10/20 2:00:13 阅读更多 →
排队论与Anylogic仿真:车站进站拥堵优化实践

排队论与Anylogic仿真:车站进站拥堵优化实践

简介&#xff1a;一份基于排队论与Anylogic仿真研究车站进站排队优化的学术PDF文档&#xff0c;面向铁路运营管理、车站规划设计及客流管理相关从业者与研究人员&#xff0c;也适合交通工程、运筹学方向学生作为案例参考。文档针对实名制售票下旅客进站排队过长、体验不佳的问题…

2026/10/20 2:00:13 阅读更多 →
轻量级数据抓取与清洗:用Python和规则配置打造自动化处理工具

轻量级数据抓取与清洗:用Python和规则配置打造自动化处理工具

1. 为什么会做"rea"这个项目"rea"这个名字从一开始就不是什么复杂的单词缩写&#xff0c;它只是我手上这个小工具的一个代号。当时我维护着一个内容站点&#xff0c;每天需要从几个固定的数据源抓取素材&#xff0c;经过人工筛选、格式整理之后再发布到后台…

2026/10/20 2:00:13 阅读更多 →
ANSYS弹塑性分析实战:从弹性到塑性收敛调试

ANSYS弹塑性分析实战:从弹性到塑性收敛调试

简介&#xff1a;《2021年ANSYS弹性及塑性分析非常经典.docx》是一份面向ANSYS初、中级用户及机械、土木、航天等工程领域从业者的中文教程资料&#xff0c;聚焦弹性与塑性非线性分析的核心原理和软件操作方法&#xff0c;帮助读者理解材料屈服、塑性变形和ANSYS塑性选项的实际…

2026/10/20 2:00:13 阅读更多 →
HyperDbg:Windows Ring0级内核调试代理原理与实践

HyperDbg:Windows Ring0级内核调试代理原理与实践

简介&#xff1a;本资源为开源Ring0级内核调试器Hyperdbg的完整源码工程&#xff0c;面向Windows驱动开发者、系统安全研究员及操作系统学习者&#xff0c;用于深入理解与实践内核层调试技术&#xff0c;解决驱动开发调试、恶意代码行为分析、系统稳定性优化等高阶问题。压缩包…

2026/10/20 1:59:13 阅读更多 →

日新闻

CLRC663芯片Pin-to-Pin替代实战:从评估到量产全记录

CLRC663芯片Pin-to-Pin替代实战:从评估到量产全记录

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

2026/10/20 1:01:30 阅读更多 →
ESP32舵机控制指南:原理、多路驱动与避坑实战

ESP32舵机控制指南:原理、多路驱动与避坑实战

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

2026/10/20 1:01:30 阅读更多 →
位移法实现一阶低通滤波:单片机ADC采样降噪实战

位移法实现一阶低通滤波:单片机ADC采样降噪实战

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

2026/10/20 1:01:30 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型&#xff08;GMM&#xff09;的语音识别系统&#xff0c;很多人第一反应就是一堆数学公式&#xff0c;觉得门槛很高。但如果你真的在MATLAB里把它落地跑通&#xff0c;会发现核心其实就是三件事&#xff1a;把声音变成特征向量&#xff0c;用GMM给每个类别…

2026/10/19 10:02:04 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人&#xff0c;但落到具体操作上&#xff0c;无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程&#xff1a;对图像做反白、改调色板、彩色转灰度&#xff0c;最后把像素数据导出成txt文件。单看每一…

2026/10/19 17:32:41 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词&#xff0c;你会发现一个很有意思的现象&#xff1a;每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型&#xff0c;有人指的是运动控制系统&#xff0c;还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/19 1:30:52 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

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

2026/10/19 2:54:50 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

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

2026/10/19 9:10:22 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

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

2026/10/18 12:16:16 阅读更多 →