Apache Gravitino 1.3.1 配置参数详解
系统讲解 Apache Gravitino 1.3.1 核心配置参数,覆盖存储后端(H2/PostgreSQL,entity.store.relational.*)、Web 服务端口(8090)、iceberg-rest(9001)与 lance-rest(9101)辅助服务、认证与 JVM 堆内存(256–512MB),给出每个参数的作用、默认值、修改方式与生产配置模板。默认值取自 1.3.1 真实环境实测。
Apache Gravitino 1.3.1 配置参数详解
目标:系统讲解 Apache Gravitino 1.3.1 的核心配置参数,覆盖存储后端、Web 服务端口、辅助服务、认证与 JVM 堆内存,并给出每个参数的作用、默认值、修改方式与生产配置模板。所有默认值均在 Apache Gravitino 1.3.1 真实环境实测(
conf/gravitino.conf+conf/gravitino-env.sh+ 启动日志)。
一、环境信息
- 操作系统:Ubuntu 22.04.5 LTS / CentOS 8(Gravitino 1.3.1 跨平台配置一致)
- 组件版本:Apache Gravitino 1.3.1
- 安装目录:
/opt/gravitino/gravitino-1.3.1-bin - 主配置文件:
conf/gravitino.conf(服务端参数) - 环境变量文件:
conf/gravitino-env.sh(JAVA_HOME、GRAVITINO_HOME、JVM 堆) - 运行日志:
logs/gravitino-server.log - 存储后端:内嵌 H2(默认)或 PostgreSQL / MySQL / MariaDB
二、前置条件
- 已完成 Gravitino 1.3.1 安装(发行包解压到
/opt/gravitino/gravitino-1.3.1-bin) - 已确认
java -version为 JDK 17 - 若使用 PostgreSQL:已建库/用户、补齐 JDBC 驱动、执行 schema SQL 并授权
- 具备读取
conf/与logs/的权限
三、参数查看与修改方式
3.1 查看当前配置
查看存储后端相关键(编号为文件行号):
cd /opt/gravitino/gravitino-1.3.1-bin
grep -nE 'jdbcUrl|jdbcDriver|jdbcUser|jdbcPassword' conf/gravitino.conf
grep -n 'webserver.httpPort' conf/gravitino.conf
tail -3 conf/gravitino-env.sh
实测回显:
61:gravitino.entity.store.relational.jdbcUrl = jdbc:postgresql://127.0.0.1:5432/gravitino
63:gravitino.entity.store.relational.jdbcDriver = org.postgresql.Driver
65:gravitino.entity.store.relational.jdbcUser = gravitino
67:gravitino.entity.store.relational.jdbcPassword = gravitino123
gravitino.server.webserver.httpPort = 8090
export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64
export GRAVITINO_HOME=/opt/gravitino/gravitino-1.3.1-bin
export GRAVITINO_MEM="-Xms256m -Xmx512m -XX:MaxMetaspaceSize=256m"
辅助服务端口可从启动日志确认:
grep -iE 'web server started' logs/gravitino-server.log
实测回显:
iceberg-rest web server started on host 0.0.0.0 port 9001.
lance-rest web server started on host 0.0.0.0 port 9101.
Gravitino-webserver web server started on host 0.0.0.0 port 8090.
3.2 修改方式对比
| 方式 | 操作 | 生效时机 |
|---|---|---|
conf/gravitino.conf | 直接编辑键值对 | 服务重启后 |
conf/gravitino-env.sh | 编辑 JAVA_HOME/GRAVITINO_HOME/GRAVITINO_MEM | 服务重启后 |
libs/ | 放置/替换 JDBC 驱动 jar | 服务重启后 |
scripts/postgresql/ | 数据库 schema 初始化 SQL | 首次建表时 |
💡 说明:Gravitino 以文件配置为主,修改
gravitino.conf或gravitino-env.sh后需./bin/gravitino.sh stop && ./bin/gravitino.sh start重启生效。
四、参数总览
本文覆盖的参数汇总(默认值均为 1.3.1 实测):
| 分类 | 参数 | 默认值(实测/官方) | 说明 |
|---|---|---|---|
| 存储后端 | gravitino.entity.store.relational.jdbcUrl | jdbc:h2 | JDBC 连接串 |
| 存储后端 | gravitino.entity.store.relational.jdbcDriver | org.h2.Driver | JDBC 驱动类 |
| 存储后端 | gravitino.entity.store.relational.jdbcUser | gravitino | 数据库用户 |
| 存储后端 | gravitino.entity.store.relational.jdbcPassword | gravitino | 数据库密码 |
| Web 服务 | gravitino.server.webserver.httpPort | 8090 | REST/Web 端口 |
| 辅助服务 | iceberg-rest httpPort | 9001 | Iceberg REST 服务端口 |
| 辅助服务 | lance-rest httpPort | 9101 | Lance REST 服务端口 |
| 环境变量 | JAVA_HOME | 系统 JDK 17 路径 | JDK 家目录 |
| 环境变量 | GRAVITINO_HOME | 安装根目录 | 安装目录 |
| 环境变量 | GRAVITINO_MEM | 默认约 1G | JVM 堆参数 |
| 环境变量 | GRAVITINO_USE_WEB_V2 | true | 启用 Web UI v2 |
五、核心参数分类详解
5.1 存储后端段(entity.store.relational.*)
Gravitino 的实体(metalake、catalog、schema、table 等元数据)默认落在内嵌 H2 文件库;生产建议切换为外部关系库。相关键位于 conf/gravitino.conf 第 61–67 行附近:
# conf/gravitino.conf(切换为 PostgreSQL 后)
gravitino.entity.store.relational.jdbcUrl = jdbc:postgresql://127.0.0.1:5432/gravitino
gravitino.entity.store.relational.jdbcDriver = org.postgresql.Driver
gravitino.entity.store.relational.jdbcUser = gravitino
gravitino.entity.store.relational.jdbcPassword = gravitino123
| 参数 | 默认值 | 说明 |
|---|---|---|
jdbcUrl | jdbc:h2 | 连接串;H2 开箱即用,PostgreSQL 需 JDBC 驱动与 schema 初始化 |
jdbcDriver | org.h2.Driver | 驱动类;PostgreSQL 为 org.postgresql.Driver |
jdbcUser | gravitino | 数据库用户 |
jdbcPassword | gravitino | 数据库密码 |
⚠️ 注意:Gravitino 的 JDBC 存储不会自动建表(仅 H2 开箱即用),且发行包
libs/只自带 H2 驱动。使用 PostgreSQL 时必须:① 将postgresql-<ver>.jar(本次42.7.4)放入libs/;② 执行scripts/postgresql/schema-1.3.0-postgresql.sql建表;③ 对服务账号授权(GRANT ALL ON SCHEMA public及ALL TABLES/SEQUENCES IN SCHEMA public)。
5.2 Web 服务端口段(webserver.httpPort)
# conf/gravitino.conf
gravitino.server.webserver.httpPort = 8090
| 参数 | 默认值 | 说明 |
|---|---|---|
gravitino.server.webserver.httpPort | 8090 | REST API 与 Web UI 对外端口 |
💡 说明:启动日志回显
Gravitino-webserver web server started on host 0.0.0.0 port 8090.,即服务监听0.0.0.0:8090;REST 健康检查路径为/health,版本接口为/api/version。
5.3 辅助服务段(iceberg-rest / lance-rest)
发行包内置两个辅助 REST 服务,随主服务一并启动:
# 启动日志中的辅助服务回显
AuxiliaryServiceManager ... AuxService name:iceberg-rest, config:{... httpPort=9001 ...}
iceberg-rest web server started on host 0.0.0.0 port 9001.
lance-rest web server started on host 0.0.0.0 port 9101.
| 服务 | 默认端口(实测) | 说明 |
|---|---|---|
| iceberg-rest | 9001 | 提供 Iceberg REST Catalog 网关 |
| lance-rest | 9101 | 提供 Lance REST 接口 |
💡 说明:两辅助服务根路径返回 HTTP 404 属正常(无根路由,服务存活)。注意默认端口中 iceberg-rest 为 9001,并非 9000;如需变更,在对应辅助服务配置段调整
httpPort后重启。
5.4 认证与鉴权(可选)
Gravitino 默认未启用认证,REST 与 gcli 可直接访问(实测 audit.creator 为 anonymous)。生产环境建议在 conf/gravitino.conf 中配置认证与鉴权(如 OAuth / Kerberos 等插件),并在 gcli 侧携带相应凭据。示例管理账号可用 root + 密码 q1w2e3r4(属安全插件范畴,需按官方文档启用)。
| 配置项 | 默认 | 说明 |
|---|---|---|
认证(authenticator) | 未启用 | 启用后 REST/gcli 需携带凭据 |
鉴权(authorization) | 未启用 | 控制 metalake/catalog 等资源的访问权限 |
5.5 JVM 堆内存段(GRAVITINO_MEM)
conf/gravitino-env.sh 中通过 GRAVITINO_MEM 控制 JVM 堆(默认约 1G,按要求压到 256–512MB):
# conf/gravitino-env.sh
export GRAVITINO_MEM="-Xms256m -Xmx512m -XX:MaxMetaspaceSize=256m"
| 变量 | 实测值 | 说明 |
|---|---|---|
GRAVITINO_MEM | -Xms256m -Xmx512m -XX:MaxMetaspaceSize=256m | 初始堆 256MB / 上限 512MB / 元空间 256MB |
生效验证(jcmd):
PID=$(pgrep -f GravitinoServer | head -1)
jcmd $PID VM.flags
实测回显:
InitialHeapSize=268435456
MaxHeapSize=536870912
MaxMetaspaceSize=268435456
UseG1GC
⚠️ 注意:修改
gravitino-env.sh时注意文件末行换行符,避免 append 造成粘连;修改后用bash -n conf/gravitino-env.sh校验语法。
六、生产配置模板
本模板面向「16GB 内存、本机 PostgreSQL、单实例元数据治理」的典型场景:
# /opt/gravitino/gravitino-1.3.1-bin/conf/gravitino.conf
gravitino.entity.store.relational.jdbcUrl = jdbc:postgresql://127.0.0.1:5432/gravitino
gravitino.entity.store.relational.jdbcDriver = org.postgresql.Driver
gravitino.entity.store.relational.jdbcUser = gravitino
gravitino.entity.store.relational.jdbcPassword = gravitino123
gravitino.server.webserver.httpPort = 8090
# /opt/gravitino/gravitino-1.3.1-bin/conf/gravitino-env.sh
export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64
export GRAVITINO_HOME=/opt/gravitino/gravitino-1.3.1-bin
export GRAVITINO_MEM="-Xms256m -Xmx512m -XX:MaxMetaspaceSize=256m"
配套初始化(PostgreSQL 后端):
# 1) 补 JDBC 驱动
cd /opt/gravitino/gravitino-1.3.1-bin/libs
wget https://repo1.maven.org/maven2/org/postgresql/postgresql/42.7.4/postgresql-42.7.4.jar
# 2) 初始化 schema
su - postgres -c 'psql -d gravitino -v ON_ERROR_STOP=1 \
-f /opt/gravitino/gravitino-1.3.1-bin/scripts/postgresql/schema-1.3.0-postgresql.sql'
su - postgres -c "psql -d gravitino -c 'GRANT ALL ON SCHEMA public TO gravitino;'"
su - postgres -c "psql -d gravitino -c 'GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO gravitino;'"
su - postgres -c "psql -d gravitino -c 'GRANT ALL PRIVILEGES ON ALL SEQUENCES IN SCHEMA public TO gravitino;'"
💡 说明:内存紧张或仅做元数据验证场景,可不改
GRAVITINO_MEM(保持 256–512MB);元数据量大时应在测试环境观测基线后再上调堆上限,但始终不超出本机物理内存。
七、常见问题(FAQ)
Q1:改成 PostgreSQL 后启动报 relation "entity_change_log" does not exist。
JDBC 后端不自动建表,执行 scripts/postgresql/schema-1.3.0-postgresql.sql 后重启。
Q2:报 class not found: org.postgresql.Driver。
libs/ 缺 PostgreSQL 驱动,放入 postgresql-42.7.4.jar 后重启。
Q3:报 permission denied for table entity_change_log。
schema 由超级用户创建,表 owner 为 postgres;对 gravitino 执行 GRANT ALL ON SCHEMA public 及 ALL TABLES/SEQUENCES。
Q4:/api/health/liveness 返回 404。
1.3.1 健康检查真值路径为 /health,版本接口为 /api/version。
Q5:修改配置后未生效。
gravitino.conf 与 gravitino-env.sh 的改动需重启服务(gravitino.sh stop/start)方生效;JVM 堆参数改动仅在重启后由 jcmd 可见。
八、参考链接
- Apache Gravitino 官方下载:
https://dlcdn.apache.org/gravitino/1.3.1/ - Apache Gravitino 项目主页:
https://gravitino.apache.org/