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

1,643 阅读2分钟

在第一章中,你学习了关于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)”中了解有关日志记录的更多信息。