《Trino权威指南2》第二章:安装和配置Trino

前文引用:
《Trino权威指南2》第一章:Trino介绍

在第一章中,你学习了关于 Trino 及其可能的用例。现在你已经准备好尝试它了。在本章中,你将学习如何安装 Trino,配置数据源并查询数据。

使用 Docker 容器尝试 Trino

Trino 项目提供了一个 Docker 容器。它允许您轻松地启动一个配置好的 Trino 演示环境,以便初次尝试和探索。

要在 Docker 中运行 Trino,您必须在计算机上安装 Docker。您可以从 Docker 网站下载 Docker,或者使用操作系统的打包系统。

使用 docker 命令下载容器镜像,并将其保存为名称为 trino-trial 的镜像。然后,将其后台运行,并将容器内部的 8080 端口映射到您工作站上的 8080 端口:

docker run -d -p 8080:8080 --name trino-trial trinodb/trino

现在让我们连接到容器并在其中运行 Trino 命令行界面(CLI)trino。它将连接到在同一容器上运行的 Trino 服务器。然后在提示符下,您可以执行一个关于 tpch 基准数据表的查询:

$ docker exec -it trino-trial trino
trino> select count(*) from tpch.sf1.nation;
 _col0
-------
    25
(1 row)

Query 20181105_001601_00002_e6r6y, FINISHED, 1 node
Splits: 21 total, 21 done (100.00%)
0:06 [25 rows, 0B] [4 rows/s, 0B/s]

您可以继续使用您的 SQL 知识探索数据集,并使用 help 命令了解 Trino CLI 的使用方法。

另外,您也可以直接在您的工作站上安装 Trino CLI。CLI 中的默认服务器 URL 为 http://localhost:8080 ,与启动容器时使用的端口相匹配。关于使用 CLI 的更多信息可以在“Trino 命令行界面”中找到。您还可以使用任何其他客户端应用程序(例如 DBeaver)连接到容器中的 Trino。

镜像已经包含了一个默认配置,以供您开始使用,并包含了一些目录,让您可以探索 Trino。您还可以使用自定义的配置文件与容器一起使用,只需将这些文件以本地 etc 目录结构的形式挂载到容器启动时的 etc/trino 路径中,您的配置将替代镜像中的默认配置。更多关于安装配置文件的信息可以在“从存档文件安装”中找到。

$ docker run -d -p 8080:8080 --volume $PWD/etc:/etc/trino trinodb/trino

当您完成了探索后,只需输入 quit 命令即可退出。

要停止容器,只需执行以下命令:

$ docker stop trino-trial
trino-trial

如果您想进一步实验,可以再次启动容器:

$ docker start trino-trial
trino-trial

如果您已经学习足够并且不再需要 Docker 镜像,您可以删除该镜像并删除所有相关的 Docker 资源:

$ docker rm trino-trial
trino-trial
$ docker rmi trinodb/trino
Untagged: trinodb/trino:latest
...
Deleted: sha256:877b494a9f...

从存档文件安装

在使用 Docker 尝试过 Trino 之后,或者作为第一步,您可以从存档文件在您的本地工作站或所选服务器上安装 Trino。

Trino 适用于大多数现代 Linux 发行版。对于本地测试,您也可以使用 macOS。它需要 Java 虚拟机(JVM)和 Python 安装。

JVM

Trino 是用 Java 编写的,因此需要在您的系统上安装 Java 虚拟机(JVM)。Trino 要求使用 Java 17 的长期支持版本,具体为 17.0.3 或更新版本。Trino 不支持旧版本的 Java。较新的主要版本可能可用,但对这些版本的 Trino 测试不充分。

请确认 Java 已安装并在 PATH 环境变量中可用:

$ java --version
openjdk version "17.0.3" 2022-04-19 LTS
OpenJDK Runtime Environment Zulu17.34+19-CA (build 17.0.3+7-LTS)
OpenJDK 64-Bit Server VM Zulu17.34+19-CA (build 17.0.3+7-LTS, mixed mode, sharing)

如果您没有安装 Java 17,Trino 将无法启动。

Python

Trino 附带的启动脚本需要 Python 2.6 或更高版本。

请确认 Python 已安装并在 PATH 环境变量中可用:

$ python --version
Python 3.9.13

安装

Trino 发布的二进制文件可以在 Maven Central Repository 上找到。服务器以 tar.gz 压缩文件的形式提供。

您可以在 repo.maven.apache.org/maven2/io/t… 上查看可用版本的列表。找到最大的版本号,该版本号代表最新发布的版本,然后进入相应的文件夹并下载 tar.gz 文件。您也可以使用命令行下载存档文件,例如,使用 wget 下载版本 392 的文件:

$ wget https://repo.maven.apache.org/maven2/\
  io/trino/trino-server/392/trino-server-392.tar.gz

接下来,解压缩存档文件:

$ tar xvzf trino-server-*.tar.gz

解压缩后会创建一个顶级目录,其名称与基本文件名相同(不包含扩展名)。这个目录被称为安装目录。

安装目录包含以下子目录:

  • lib

包含组成 Trino 服务器和所有必需依赖项的 Java 存档文件(JAR)。

  • plugins

包含 Trino 插件及其依赖项,每个插件都有单独的目录。Trino 默认包含许多插件,并且还可以添加第三方插件。Trino 允许可插拔组件与 Trino 集成,例如连接器、函数和安全访问控制。

  • bin

包含 Trino 的启动脚本。这些脚本用于启动、停止、重启、终止和获取运行中 Trino 进程的状态。了解有关这些脚本的使用的更多信息,请参阅“启动器”。

  • etc

这是配置目录。用户创建并提供 Trino 所需的配置文件。您可以在“配置详解”中了解更多关于配置的信息。

  • var

最后,这是一个数据目录,用于存储日志。在首次启动 Trino 服务器时创建。默认情况下,它位于安装目录中。我们建议将其配置在安装目录之外,以便在升级过程中保留数据。

配置

在启动 Trino 之前,您需要提供一组配置文件:

  • Trino 日志配置
  • Trino 节点配置
  • JVM 配置

默认情况下,这些配置文件应位于安装目录内的 etc 目录中。

除了 JVM 配置外,其他配置文件遵循 Java 属性标准。一般而言,每个配置参数以 key=value 的格式存储在每行中。

在前面一节创建的 Trino 安装目录内,您需要创建基本的 Trino 配置文件集。您可以在书籍的 Git 存储库中找到准备就绪的配置文件,详见“书籍存储库”。以下是三个配置文件的内容:

coordinator=true
node-scheduler.include-coordinator=true
http-server.http.port=8080
discovery.uri=http://localhost:8080
node.environment=demo
-server
-Xmx4G
-XX:InitialRAMPercentage=80
-XX:MaxRAMPercentage=80
-XX:G1HeapRegionSize=32M
-XX:+ExplicitGCInvokesConcurrent
-XX:+ExitOnOutOfMemoryError
-XX:+HeapDumpOnOutOfMemoryError
-XX:-OmitStackTraceInFastThrow
-XX:ReservedCodeCacheSize=512M
-XX:PerMethodRecompilationCutoff=10000
-XX:PerBytecodeRecompilationCutoff=10000
-Djdk.attach.allowAttachSelf=true
-Djdk.nio.maxCachedBufferSize=2000000
-XX:+UnlockDiagnosticVMOptions
-XX:+UseAESCTRIntrinsics

在上述配置文件就位后,Trino 已准备就绪可以启动了。您可以在第 5 章中找到关于这些文件的更详细描述。

添加数据源

虽然我们的 Trino 安装已经准备就绪,但您还不会立即启动它。毕竟,您希望能够在 Trino 中查询某种外部数据。这需要您添加一个配置为目录的数据源。

Trino 目录定义了用户可以访问的数据源。数据访问是通过在目录中配置的 Trino 连接器执行的,其中使用 connector.name属性进行配置。目录向 Trino 公开数据源内的所有模式和表。

例如,Hive 连接器将每个 Hive 数据库映射到一个模式。如果 Hive 数据库 web包含一个名为 clicks的表,并且目录的名称为 sitehive,则 Hive 连接器将公开该表。必须在目录文件中指定 Hive 连接器。您可以使用完全限定名称语法 catalog.schema.table访问目录和模式中的表,因此在此示例中为 sitehive.web.clicks

通过在 etc/catalog目录中创建目录属性文件来注册目录。文件的基本名称设置目录的名称。例如,假设您创建了目录属性文件 etc/catalog/cdh-hadoop.propertiesetc/catalog/sales.propertiesetc/catalog/web-traffic.propertiesetc/catalog/mysql-dev.properties,那么在 Trino 中公开的目录名称将是 cdh-hadoopsalesweb-trafficmysql-dev

您可以使用 TPC-H 连接器进行 Trino 示例的初步探索。TPC-H 连接器内置于 Trino 中,提供一组模式以支持 TPC Benchmark H(TPC-H)。您可以在“Trino TPC-H 和 TPC-DS Connectors”中了解更多信息。

要配置 TPC-H 连接器,请创建一个目录属性文件 etc/catalog/tpch.properties,并配置 tpch 连接器:

connector.name=tpch

每个目录文件都需要 connector.name 属性。其他属性由 Trino 连接器实现确定。这些属性在 Trino 文档中有详细说明,你可以在第 6 章和第 7 章开始了解更多内容。

我们的图书仓库包含了一系列其他目录文件,对你学习 Trino 非常有用。

运行 Trino

现在你已经准备好了,我们可以继续开始 Trino。安装目录中包含启动脚本。你可以使用它们来启动 Trino:

$ bin/launcher run

运行命令将 Trino 作为前台进程启动。Trino 的日志和其他输出将被写入 stdout 和 stderr。成功启动后会记录日志,你应该会在一段时间后看到以下行:

INFO main io.trino.server.Server ======== SERVER STARTED ========

在前台运行 Trino 可以用于首次测试和快速验证进程是否正确启动,并且是否使用了预期的配置设置。您可以使用 Ctrl-C 停止服务器。 您可以在“启动器(Launcher)”中了解有关启动脚本的更多信息,以及在“日志(Logging)”中了解有关日志记录的更多信息。

发表回复