在第一章中,你学习了关于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.properties、etc/catalog/sales.properties、etc/catalog/web-traffic.properties和etc/catalog/mysql-dev.properties,那么在Trino中公开的目录名称将是cdh-hadoop、sales、web-traffic和mysql-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)”中了解有关日志记录的更多信息。