Ubuntu 22.04 安装 Apache Texera 指南
在 Ubuntu 22.04 上从零安装 Apache Texera 1.2.0-incubating,覆盖源码构建全链路(JDK 17、Node 24、sbt、PostgreSQL、jOOQ、前后端编译打包)与官方发行包校验两种方案,命令与回显均实测通过
Ubuntu 22.04 安装 Apache Texera 指南
目标:在 Ubuntu 22.04 上从零搭建 Apache Texera 1.2.0-incubating 的运行环境,走通「源码构建 → 数据库初始化 → stage 打包 → 服务启动 → API 验证」全链路,并给出官方发行包部署方案。本文全部命令与回显均已在 Ubuntu 22.04.5 LTS 实测通过。
Texera 是 Apache 孵化器中的可协作数据分析平台:前端(Angular 21)负责工作流编辑与可视化,后端由多个 Scala 服务组成,执行核心是 amber 引擎。官方安装文档仅提供编排模板与 Kubernetes 两种方式;对需要理解内部结构或无法使用编排环境的读者,源码构建是唯一完整路径——本文以源码构建为方案 A(推荐),官方 src 发行包为方案 B,两者均实测。
一、环境信息
本节固定可复现的基线环境,后续命令均在此环境执行:
- 操作系统:Ubuntu 22.04.5 LTS
- 架构:x86_64
- JDK:OpenJDK 17.0.20.1(apt 包
openjdk-17-jdk) - Node.js:v24.10.0(官方 tarball,前端要求 node>=24)
- 构建工具:sbt 1.12.9(sbt-launch 方式)
- 数据库:PostgreSQL 14(apt 包
postgresql) - 组件版本:Apache Texera 1.2.0-incubating
- 实测目录:
/work/texera-ub(源码树)、/opt/texera-pkg(发行包)
系统与关键组件确认(实时回显):
cat /etc/os-release | head -2
PRETTY_NAME="Ubuntu 22.04.5 LTS"
NAME="Ubuntu"
uname -m
x86_64
💡 说明:Texera 不是单一 jar 而是一个多服务工程,安装的判定标准是「数据库就绪 + 后端服务启动 + 元数据接口可用」三件事同时成立,而不是某个包解压完成。
二、前置条件
- 具有 root 或 sudo 权限的 Ubuntu 22.04 系统。
- 可访问 Ubuntu 软件源(apt 安装 JDK/PostgreSQL)。
- 可访问 GitHub(源码克隆)与 Apache 下载站
downloads.apache.org(发行包)。 - 磁盘空间建议 6 GB 以上:实测源码树加依赖缓存约 3.1 GB(源码树 2.4 GB + coursier 缓存 674 MB),前端 node_modules 另占约 840 MB。
- 内存建议 8 GB:sbt 编译实测堆峰值较高(本文用
-Xmx4g),前端构建脚本自带 8 GB 旧生代上限。
网络连通性确认(实时回显):
curl -sI --max-time 20 https://downloads.apache.org/incubator/texera/ | head -2
HTTP/1.1 200 OK
Date: Thu, 15 Oct 2026 13:12:40 GMT
curl -sI --max-time 20 https://nodejs.org/dist/v24.10.0/ | head -1
HTTP/2 200
三、版本选型说明
Texera 目前处于 Apache 孵化阶段,版本以 x.y.z-incubating 命名。实测 git ls-remote --tags 的最新 12 个 tag(按版本排序):
v1.1.0-incubating-rc3
v1.1.0-incubating-rc4
v1.1.0-incubating-rc5
v1.1.0-incubating-rc6
v1.1.0-incubating-rc7
v1.1.0-incubating-rc8
v1.2.0-incubating
v1.2.0-incubating-rc1
v1.2.0-incubating-rc2
v1.2.0-incubating-rc3
v1.2.0-incubating-rc4
v1.2.1-incubating-rc1
| 类别 | tag 形态 | 是否可用 |
|---|---|---|
| 候选版本 | *-rcN | 供投票评审,不建议生产使用 |
| 正式版本 | v1.2.0-incubating、v1.1.0-incubating | 官方发布并同步到下载站 |
| 历史版本 | 0.1.0、1.0.0 | 项目进入 Apache 前的旧谱系 |
官方下载站 https://downloads.apache.org/incubator/texera/ 当前提供 1.1.0-incubating 与 1.2.0-incubating 两个正式版目录;1.2.1 仅有 rc1、尚无正式版。本文实际采用 v1.2.0-incubating(commit c3aa6e4ba36bdd0cdc9f76bd7896c024dda392b3),理由:它是官方下载站的最新正式版,且本文方案 A/B 均针对该版本实测。
四、方案 A:源码构建安装(在线,推荐)
4.1 方案说明
链路为:安装 JDK 17 与 PostgreSQL → 安装 Node 24 与 sbt → 克隆源码并检出 v1.2.0-incubating → 初始化数据库并生成 jOOQ 代码 → 后端编译、前端构建 → stage 打包 → 启动验证。优点是全链路可控、便于阅读源码与二次开发;缺点是首次构建需下载约 1 GB 依赖。
4.2 安装 JDK 17
apt-get update -qq && DEBIAN_FRONTEND=noninteractive apt-get install -y openjdk-17-jdk
# 输出节选(实测)
Unpacking openjdk-17-jdk:amd64 (17.0.20.1+1-1~22.04) ...
确认版本:
java -version
openjdk version "17.0.20.1" 2026-08-18
OpenJDK Runtime Environment (build 17.0.20.1+1-1-22.04-Ubuntu)
OpenJDK 64-Bit Server VM (build 17.0.20.1+1-1-22.04-Ubuntu, mixed mode, sharing)
验证点:版本输出 17.0.x 即可。Texera 1.2.0 的 Scala 2.13 工具链按 JDK 17 验证,勿使用 JDK 11。
4.3 安装 Node.js 24
前端要求 node>=24(frontend/package.json 的 engines 字段),apt 源没有 24 版本,用官方 tarball:
curl -sL -o /tmp/node24.tar.xz https://nodejs.org/dist/v24.10.0/node-v24.10.0-linux-x64.tar.xz
mkdir -p /opt/node24
tar xJf /tmp/node24.tar.xz -C /opt/node24 --strip-components=1
export PATH=/opt/node24/bin:$PATH
node -v
v24.10.0
建议把 export PATH=/opt/node24/bin:$PATH 写入 /root/.bashrc,否则新终端会找不到 node。
4.4 安装 sbt
sbt 通过 sbt-launch 运行。下载 1.12.9 的启动 jar 并建立包装脚本(固定堆内存,避免默认堆过小导致编译失败):
curl -sL -o /usr/local/bin/sbt-launch.jar \
https://repo1.maven.org/maven2/org/scala-sbt/sbt-launch/1.12.9/sbt-launch-1.12.9.jar
cat > /usr/local/bin/sbt <<'EOF'
#!/bin/bash
exec java -Xmx4g -jar /usr/local/bin/sbt-launch.jar "$@"
EOF
chmod +x /usr/local/bin/sbt
实测环境走代理下载依赖,包装脚本中实际还带了 -Dhttp.proxyHost=192.168.1.62 -Dhttp.proxyPort=7897 -Dhttps.proxyHost=192.168.1.62 -Dhttps.proxyPort=7897 三个 JVM 代理参数;直连网络的环境按上面写法即可,需代理的环境自行补上。
💡 技术拓展:多模块 Scala 工程的构建工具目前主要是 sbt 与 Maven——Texera 全仓采用 sbt(根 build.sbt 声明 12 个子模块与 1 个根工程),Maven 无法直接替代;若团队统一使用 Maven,建议仅将 sbt 局限在本工程内使用,不要混装全局配置。
4.5 安装并初始化 PostgreSQL
DEBIAN_FRONTEND=noninteractive apt-get install -y postgresql
pg_ctlcluster 14 main start
echo $?
0
su postgres -c "psql -c \"ALTER USER postgres PASSWORD 'postgres';\""
ALTER ROLE
⚠️ 注意:apt 安装 PostgreSQL 时若不加
DEBIAN_FRONTEND=noninteractive,tzdata 配置脚本会等待交互输入导致安装卡住;若已卡住,先dpkg --configure -a修复再重装。
4.6 克隆源码并初始化数据库
git clone https://github.com/apache/texera.git texera-ub
cd texera-ub && git checkout v1.2.0-incubating
git describe --tags
v1.2.0-incubating
执行官方 DDL(28 张业务表 + Iceberg 结果目录库):
su postgres -c "psql -v ON_ERROR_STOP=0 -f sql/texera_ddl.sql"
echo $?
su postgres -c "psql -f sql/iceberg_postgres_catalog.sql"
echo $?
0
0
DDL 日志中会出现 2 条与 pgroonga 扩展相关的 ERROR,28 张表正常建成(详见第九章 9.1)。
4.7 jOOQ 代码生成与后端编译
sbt "DAO/jooqGenerate"
[info] Generating JOOQ classes...
[info] JOOQ code generation completed successfully
[success] Total time: 3 s
sbt compile
[info] compiling 258 Scala sources and 50 Java sources to /work/texera-ub/common/workflow-operator/target/scala-2.13/classes ...
[info] done compiling
[success] Total time: 72 s (0:01:12.0), completed Oct 15, 2026, 12:57:28 PM
验证点:两个命令均为 [success]。若 DAO/jooqGenerate 日志出现 Connection to localhost:5432 refused,说明数据库未就绪;若跳过本步直接编译,会报 27 个 object jooq is not a member of package org.apache.texera.dao 错误。
4.8 前端构建
export PATH=/opt/node24/bin:$PATH
corepack enable && corepack prepare yarn@4.14.1 --activate
cd frontend
yarn install
➤ YN0013: │ 1565 packages were added to the project (+ 839.42 MiB).
➤ YN0000: └ Completed in 2m 19s
yarn run build
build-version: 1.2.0-incubating.261015390
Initial chunk files | Names | Raw size | Estimated transfer size
main.4c0dbd0f67bc5759.js | main | 13.19 MB | 2.79 MB
styles.0d6ec57d5eb92aca.css | styles | 678.37 kB | 89.85 kB
...
| Initial total | 13.95 MB | 2.90 MB
产物为 frontend/dist/(实测 39 MB,入口 index.html 18420 字节)。
4.9 stage 打包
cd /work/texera-ub && sbt "WorkflowExecutionService/stage"
[success] Total time: 53 s, completed Oct 15, 2026, 12:58:29 PM
产物位于 amber/target/universal/stage/,bin/ 下有 4 个 Linux 启动脚本(另有 .bat 为 Windows 用):
amber
computing-unit-master
computing-unit-worker
texera-web-application
4.10 启动与最小验证
cd /work/texera-ub/amber
target/universal/stage/bin/texera-web-application -J-Xmx512m
启动日志关键行(实测节选):
texera-hikari - Start completed.
Starting TexeraWebApplication
Started application@6fefc5ea{HTTP/1.1,[http/1.1]}{0.0.0.0:8080}
Started admin@6159fb3c{HTTP/1.1,[http/1.1]}{0.0.0.0:8081}
Started @5540ms
另开终端验证(实测回显):
curl -s -o /dev/null -w "%{http_code}\n" http://localhost:8080/api/resources/operator-metadata
200
curl -s -X POST -H "Content-Type: application/json" \
-d '{"username":"ub_admin","password":"q1w2e3r4"}' \
http://localhost:8080/api/auth/register
{"accessToken":"eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJ1Yl9hZG1pbiIsInVzZXJJZCI6MiwiZ29vZ2xlSWQiOm51bGwsImVtYWlsIjoidWJfYWRtaW4iLCJyb2xlIjoiUkVTVFJJQ1RFRCIsImdvb2dsZUF2YXRhciI6bnVsbCwiZXhwIjoxNzkyNjc1NzYzfQ.PWj-AIdWqCxHivCoQFJ5Sut4R6-TXzrLWaKM1VzU9Rc"}
验证点:元数据接口 200、注册接口返回 accessToken 即安装成功。完整单机执行还需再启 computing-unit-master(先)与 computing-unit-worker(后)。
五、方案 B:官方发行包部署
5.1 方案说明
Apache 官方为 1.2.0-incubating 发布了源码包 apache-texera-1.2.0-incubating-src.tar.gz(约 25.5 MB)及配套 .sha512、.asc 校验件。发行包内容与 GitHub 源码树一致但没有 .git 目录,适合无法克隆 Git 仓库的网络环境;下载后仍需按 4.5-4.10 完成数据库与编译步骤。
5.2 下载与完整性校验
mkdir -p /opt/texera-pkg && cd /opt/texera-pkg
P=https://downloads.apache.org/incubator/texera/1.2.0-incubating
curl -sL -O $P/apache-texera-1.2.0-incubating-src.tar.gz
curl -sL -O $P/apache-texera-1.2.0-incubating-src.tar.gz.sha512
curl -sL -O $P/apache-texera-1.2.0-incubating-src.tar.gz.asc
curl -sL -O https://downloads.apache.org/incubator/texera/KEYS
先做 SHA-512 校验(实测回显):
sha512sum -c apache-texera-1.2.0-incubating-src.tar.gz.sha512
apache-texera-1.2.0-incubating-src.tar.gz: OK
再导入官方 KEYS 并验签(实测回显):
gpg --import KEYS
gpg: imported: 3
gpg: new signatures: 1
gpg --verify apache-texera-1.2.0-incubating-src.tar.gz.asc apache-texera-1.2.0-incubating-src.tar.gz
gpg: using RSA key 36B1DAC3286B3199B4CEFC2BB49658187ADCD1BD
gpg: Good signature from "Xuan Gu (CODE SIGNING KEY) <xuangu@apache.org>" [unknown]
Primary key fingerprint: FF17 8695 C2B3 8EC0 BB8F 4C49 33CC 8C5B 60E4 6FA4
Good signature 即验签通过;[unknown] 与 not certified 警告是因为导入的公钥未经本地信任链签署,属正常现象,核对主钥指纹与官方 KEYS 中登记一致即可。
5.3 解压与后续步骤
tar xzf apache-texera-1.2.0-incubating-src.tar.gz
cd apache-texera-1.2.0-incubating-src
# 解压后顶层内容(实测前 8 项)
AGENTS.md
CLAUDE.md
CONTRIBUTING.md
DISCLAIMER
LICENSE
NOTICE
README.md
随后按 4.5 节初始化数据库,并以该目录为源码树执行 4.7-4.10 的编译、打包与启动(命令完全一致)。
六、方案对比
| 维度 | 方案 A:源码构建(Git) | 方案 B:官方发行包 |
|---|---|---|
| 版本准确性 | tag 检出,含完整 git 历史 | 与发布评审内容逐字节一致(sha512 + gpg 双校验) |
| 网络要求 | 需访问 GitHub | 只需访问 downloads.apache.org |
| 体积 | 克隆约 600 MB 级仓库 | 25.5 MB 压缩包 |
| 后续编译 | 需要(4.7-4.9) | 同样需要 |
| 适用场景 | 开发调试、阅读源码、二次开发 | 网络受限环境、合规审计要求可追溯签名 |
两个方案最终都落到同一套编译与启动流程,运行期行为一致;生产部署的长期升级建议固定在正式 tag 或发行包上。
七、基础配置
7.1 服务端口
后端端口定义在 amber/src/main/resources/web-config.yml:8080 为应用端口(REST API 与页面),8081 为管理端口(健康检查)。修改后需重新 stage 打包。
7.2 数据库与存储
common/config/src/main/resources/storage.conf 是存储配置中枢:
- 主库:
jdbc:postgresql://localhost:5432/texera_db?currentSchema=texera_db,public(默认账号 postgres/postgres,与 4.5 设置一致); - 工作流结果:Iceberg catalog 默认 postgres 类型,指向
localhost:5432/texera_iceberg_catalog; - 数据集:LakeFS 默认
http://localhost:8000/api/v1,S3 协议对象存储默认http://localhost:9000。
7.3 环境变量覆盖
storage.conf 每一项均带 ${?STORAGE_...} 回退声明,例如 type = ${?STORAGE_ICEBERG_CATALOG_TYPE}。不改文件、仅注入 STORAGE_ 前缀环境变量即可覆盖任意配置,这是多环境部署的推荐方式。
7.4 日志位置
web-config.yml 同时定义请求日志 logs/access.log(按天滚动保留 7 份)与应用日志 logs/amber-server.log,均相对服务启动目录生成。
八、验证清单
按顺序逐项打钩,全部通过即安装完成:
pg_ctlcluster 14 main status输出 online(PostgreSQL 就绪)。sbt "DAO/jooqGenerate"日志含JOOQ code generation completed successfully。sbt compile与sbt "WorkflowExecutionService/stage"均[success]。yarn run build产出frontend/dist/index.html(实测 18420 字节)。texera-web-application -J-Xmx512m日志出现Started @xxxxms。curl http://localhost:8080/api/resources/operator-metadata返回 200 与 163 个算子。- 注册接口返回 accessToken,
curl http://localhost:8081/healthcheck返回{"deadlocks":{"healthy":true}}。 - (完整单机执行)
computing-unit-master先启动、computing-unit-worker后启动。
九、常见问题(FAQ)
9.1 DDL 报 pgroonga 相关 ERROR
实测 DDL 日志含 2 条 ERROR,源自 CREATE EXTENSION IF NOT EXISTS pgroonga 与插件注册函数——Ubuntu 源默认没有 pgroonga 包。28 张业务表不受影响,仅中文全文检索增强缺失。需要该能力时先安装 groonga/pgroonga 再重跑 DDL。
9.2 编译报 27 个 jooq 错误
[error] object jooq is not a member of package org.apache.texera.dao
[error] 27 errors found
原因:跳过了 DAO/jooqGenerate 或数据库不可达时生成失败。注意该 sbt 任务失败时退出码仍可能为 0,必须看日志。处理:确认 PostgreSQL 运行且 DDL 已执行,重跑 sbt "DAO/jooqGenerate"。
9.3 GET / 返回 404 但 API 正常
stage 独立启动时,静态资源目录按启动位置相对推导(../../frontend/dist),不指向真实构建产物,页面 404 而 /api/* 一切正常。解决:保持源码树目录布局运行,或由反向代理托管 frontend/dist。
9.4 启动日志中的 jgit 堆栈
RepositoryNotFoundException: repository not found: .../amber 来自算子版本号读取(尝试定位 git 仓库),被捕获后服务照常启动,可忽略;在仓库根目录启动可消除。
9.5 sbt 编译内存不足
默认堆下编译易被 OOM 终止,实测采用 4.4 节的 -Xms512m -Xmx4g 包装脚本可稳定完成编译与 stage;内存不足 8 GB 的机器建议关闭前端构建并行执行。
9.6 apt 安装 PostgreSQL 卡住
tzdata 交互等待所致,按 4.5 节加 DEBIAN_FRONTEND=noninteractive,中断后用 dpkg --configure -a 修复。
十、卸载与清理
# 停服务
pkill -f texera-web-application
pg_ctlcluster 14 main stop
# 删除数据库(如不再需要)
su postgres -c "psql -c 'DROP DATABASE IF EXISTS texera_db;'"
su postgres -c "psql -c 'DROP DATABASE IF EXISTS texera_iceberg_catalog;'"
# 删除源码与依赖缓存
rm -rf /work/texera-ub /root/.cache/coursier /root/.sbt /opt/texera-pkg
# 卸载系统包(可选)
DEBIAN_FRONTEND=noninteractive apt-get purge -y openjdk-17-jdk postgresql
apt-get autoremove -y
以上命令是本文各安装步骤的逆操作(停止服务 → 删库 → 删文件 → 卸载系统包)。rm -rf 的四个路径即本文创建的全部落盘内容(源码树 2.4 GB、coursier 缓存 674 MB、sbt 目录 74 MB、发行包 25.5 MB)。执行后系统回到安装前状态。
十一、参考链接
- Apache Texera 官网:
https://texera.apache.org/ - 源码仓库:
https://github.com/apache/texera - 官方发行包目录:
https://downloads.apache.org/incubator/texera/1.2.0-incubating/ - 官方 KEYS:
https://downloads.apache.org/incubator/texera/KEYS - 官方安装文档:仓库内
docs/getting-started/install-texera.md - 开发者指南:仓库内
docs/contribution-guidelines/guide-for-developers.md - Node.js 下载:
https://nodejs.org/dist/v24.10.0/ - sbt-launch(Maven 坐标):
org.scala-sbt:sbt-launch:1.12.9 - Apache 软件基金会孵化器声明:
https://incubator.apache.org/