本地部署
本地部署 Polaris
Polaris 可以通过 Docker 镜像部署,也可以作为独立进程运行。在开始之前,请确保你已满足上一页中详述的相关先决条件。
通用设置
在运行 Polaris 之前,请确保你已完成以下设置步骤:
- 构建 Polaris
cd ~/polaris
./gradlew \
:polaris-server:assemble \
:polaris-server:quarkusAppPartsBuild --rerun \
:polaris-admin:assemble \
:polaris-admin:quarkusAppPartsBuild --rerun \
-Dquarkus.container-image.build=true- 对于独立模式:如果不需要构建 Docker 镜像,可以省略
-Dquarkus.container-image.tag和-Dquarkus.container-image.build选项。
使用 Docker 运行 Polaris
开始在 Docker 中使用 Polaris 并启动 Polaris,它已打包了 Postgres 实例、Apache Spark 和 Trino。
export ASSETS_PATH=$(pwd)/getting-started/assets/
export QUARKUS_DATASOURCE_JDBC_URL=jdbc:postgresql://postgres:5432/POLARIS
export QUARKUS_DATASOURCE_USERNAME=postgres
export QUARKUS_DATASOURCE_PASSWORD=postgres
export CLIENT_ID=root
export CLIENT_SECRET=s3cr3t
docker compose -p polaris -f getting-started/assets/postgres/docker-compose-postgres.yml \
-f getting-started/jdbc/docker-compose-bootstrap-db.yml \
-f getting-started/jdbc/docker-compose.yml up -d在 Polaris、Spark 和 Trino 构建并启动的过程中,你会持续看到相应的输出。最终,日志将不再滚动,屏幕上会显示一些与 Spark 相关的日志,内容大致如下:
spark-sql-1 | Spark Web UI available at http://8bc4de8ed854:4040
spark-sql-1 | Spark master: local[*], Application Id: local-1743745174604
spark-sql-1 | 25/04/04 05:39:38 WARN SparkSQLCLIDriver: WARNING: Directory for Hive history file: /home/spark does not exist. History will not be available during this session.
spark-sql-1 | 25/04/04 05:39:39 WARN RESTSessionCatalog: Iceberg REST client is missing the OAuth2 server URI configuration and defaults to http://polaris:8181/api/catalogv1/oauth/tokens. This automatic fallback will be removed in a future Iceberg release.It is recommended to configure the OAuth2 endpoint using the 'oauth2-server-uri' property to be prepared. This warning will disappear if the OAuth2 endpoint is explicitly configured. See https://github.com/apache/iceberg/issues/10537Docker 镜像预先配置了一个名为 quickstart_catalog 的示例目录,该目录使用本地文件系统。
将 Polaris 作为独立进程运行
你也可以通过 Gradle(包含在 Polaris 仓库中)启动 Polaris:
运行以下命令以启动 Polaris 服务器:
./gradlew run你会看到 Polaris 构建并启动期间持续输出日志。最终,日志将停止滚动,你应当看到类似如下的信息:
INFO [io.quarkus] [,] [,,,] (main) Apache Polaris Server <version> on JVM (powered by Quarkus <version>) started in 1.911s. Listening on: http://0.0.0.0:8181. Management interface listening on http://0.0.0.0:8182.
INFO [io.quarkus] [,] [,,,] (main) Profile prod activated.
INFO [io.quarkus] [,] [,,,] (main) Installed features: [...]此时,Polaris 已经在运行了。
在本教程中使用 Gradle 启动的 Polaris 实例时,我们将启动一个仅将实体存储在内存中的 Polaris 实例。这意味着你定义的任何实体都会在 Polaris 关闭时被销毁。有关如何将 Polaris 配置为生产环境使用的更多信息,请参阅文档。
使用 ./gradlew run 命令运行 Polaris 时,根主体凭据的 CLIENT_ID 和 CLIENT_SECRET 分别为 root 和 s3cr3t。
本地安装 Apache Spark 和 Trino 用于测试
Apache Spark
如果你想通过 Apache Spark 连接到 Polaris,首先需要克隆 Spark。与前置条件中一样,请先确保已安装 git。
然后,克隆 Spark 并检出一个带版本号的分支。本指南使用 Spark 3.5。
git clone --branch branch-3.5 https://github.com/apache/spark.git ~/sparkTrino
如果你想使用 Trino 连接到 Polaris,建议通过 Docker 搭建一个 Trino 测试实例。与前置要求中一样,请先确保已安装 Docker。
docker run --name trino -d -p 8080:8080 trinodb/trino下一步
恭喜,你现在已经成功运行了 Polaris 实例!有关如何使用 Polaris 的更多信息,请查看创建目录和使用 Polaris页面。
评论
登录后参与评论
KnowForge