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 LinuxJDK17(最低)运行与构建都需要,macOS 上推荐 Amazon Corretto 17Python3.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 / PostgreSQLKubernetes1.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 / PostgreSQLH2 只适合本地试玩,官方明确不对 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),仅供参考
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 LinuxJDK17(最低)运行与构建都需要,macOS 上推荐 Amazon Corretto 17Python3.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 / PostgreSQLKubernetes1.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 / PostgreSQLH2 只适合本地试玩,官方明确不对 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),仅供参考