
文章目录一. Requirements1. Linux operating system2. Java 环境3. Python二. Installing Trino三. Configuring Trino1. 节点配置2. JVM 配置3. Config properties4. Log levels5. Catalog properties四. Running Trino一. Requirements1. Linux operating system64位资源限制配置/etc/security/limits.conftrino soft nofile131072trino hard nofile131072trino soft nproc128000trino hard nproc1280002. Java 环境最新的Trino版本需要Java的长期支持版本Java 17特别是17.0.3或更新版本。Trino不支持更旧版本的Java而在新版本的JavaJava 18 或 19环境下它也许可以正常工作但并未仔细测试。下载安装JDK17Linux系统下JDK17安装环境配置如果使用java17或者java18需要配置charset为UTF-8在etc/jvm.config-Dfile.encodingUTF-8java19不要配置3. Pythonversion 2.6.x, 2.7.x, or 3.xrequired by the bin/launcher script only二. Installing Trino下载地址trino-server-434.tar.gz,解压tar -zxvf trino-server-434.tar.gztrino需要数据目录来存储日志等。推荐将数据目录放在安装目录之外便于Trino的更新。三. Configuring Trino在安装目录创建一个etc目录此目录下有如下配置节点配置每个节点的环境配置。JVM配置Trino server配置catalog配置配置数据源1. 节点配置创建etc/node.properties文件这里配置每个节点。一个节点代表一个trion的安装实例。当trino第一次安装时有如下最小化配置node.environmentproductionnode.idffffffff-ffff-ffff-ffff-ffffffffffff node.data-dir/var/trino/datanode.environment环境名字。所有的Trino节点都必须有同样的环境名字。名字开头必须小写且只包含小写字母或_字符。node.id trion唯一标识每个节点都不同。此标识在更新或者重启Trion时要保持不动。如果多个trino实例跑在同一个节点每个安装实例必须有唯一标识。标识从一个字母开始标识中只包含字母、- 或 _字符。node.data-dir数据目录位置trion存储日志和其他数据在此目录。2. JVM 配置创建etc/jvm.config文件这里包含一些启动java虚拟机的一些命令。文件格式是每行一个option组成的列表。这些配置不由shell执行所以文件中的空格或其他特殊字符不能用引号括起。如下参考-server-Xmx10G-XX:InitialRAMPercentage80-XX:MaxRAMPercentage80-XX:G1HeapRegionSize32M-XX:ExplicitGCInvokesConcurrent-XX:ExitOnOutOfMemoryError-XX:HeapDumpOnOutOfMemoryError-XX:-OmitStackTraceInFastThrow-XX:ReservedCodeCacheSize512M-XX:PerMethodRecompilationCutoff10000-XX:PerBytecodeRecompilationCutoff10000-Djdk.attach.allowAttachSelftrue-Djdk.nio.maxCachedBufferSize2000000-Dfile.encodingUTF-8# Reduce starvation of threads by GClocker, recommend to set about the number of cpu cores (JDK-8192647)-XX:UnlockDiagnosticVMOptions-XX:GCLockerRetryAllocationCount32根据节点情况调整-Xmx配置一般推荐设为节点总内存的70%-85%。比如所有的workers和coordinator使用64G的RAM则你可以设置-Xmx54G。分配的内存中大部分用于处理小部分用于比如JVM的内部操作比如垃圾回收。其他可用节点的内存必须足够用于系统操作、其他正在运行的服务以及native code对堆外内存的使用。在较大节点上内存比可以更小不支持分配所有内存给JVM或者使用交换内存不使用交换内存是比较推荐的。对于生产场景下大于32GB的内存是比较推荐的。因为OutOfMemoryError通常会使JVM处于不一致的状态所以我们写一个heap dump用于调试并在发生这种情况时强制终止进程。JVM必须能够在临时目录下执行在某些安装中默认的/tmp目录被用作挂载标志而这导致Trino启动不了。当然可以设置-Djava.io.tmpdir/path/to/other/tmpdir来覆盖默认值。这里设置GCLocker retry allocation count -XX:GCLockerRetryAllocationCount32来避免太早的OOMJDK-81926473. Config properties创建etc/config.properties用于配置Trino Server。每一个Trino server都可以有coordinator和worker两种身份。一个集群需要一个coordinator将一台机器专门用于执行协调工作可以给大型集群提供最佳性能对于集群拓展和MPP并行处理则由worker实现。coordinator的最小化配置coordinatortrue node-scheduler.include-coordinatorfalse http-server.http.port8080discovery.urihttp://example.net:8080workers的最小化配置coordinatorfalse http-server.http.port8080discovery.urihttp://example.net:8080如果部署一个测试集群coordinator 和 worker部署到一起则可以配置coordinatortrue node-scheduler.include-coordinatortrue http-server.http.port8080discovery.urihttp://example.net:8080配置说明coordinator配置为true则设置此trino实例作为coordinator用来接收客户端的查询请求以及管理查询。node-scheduler.include-coordinator允许coordinator工作调度。对于更大的集群coordinator的工作处理影响查询性能因为机器的资源不能用于重要任务的调度管理以及监控查询的执行。http-server.http.porthttp server端口Trino使用http协议进行所有内外部的通讯。没有RPC端口discovery.uricoordinator具备服务发现的能力。每个trino实例在启动时都会向发现服务注册自己并持续的汇报心跳。发现服务分享http服务所以使用同样的端口。如果coordinator上禁用了http那么需要使用HTTPS。以上是最小化配置说明。其他配置见All additional configuration is optional and varies widely based on the specific cluster and supported use cases. The Administration and Security sections contain documentation for many aspects, including Resource groups for configuring queuing policies and Fault-tolerant execution.4. Log levels创建etc/log.properties来设置最小日志级别。每一个logger通过类的全限定名声明。如下设置日志级别io.trinoINFO这会给io.trino.server和io.trino.plugin.hive设置INFO的日志级别。不过默认的日志级别就是INFO这里有四种日志级别DEBUG, INFO, WARN and ERROR。5. Catalog propertiesTrino通过连接器访问数据而连接器挂载到Catalog中。连接器向Catalog提供所有的schemas和表。例如hive连接器映射每一个hive数据库为一个schema。如果hive连接器挂载为hive catalog在hive.web.clicks页面上就可以访问hive表。通过在etc/catalog目录下创建一个catalog配置文件来注册Catalogs。如果创建etc/catalog/jmx.properties就会将jmx挂载到catalog中connector.namejmx其他连接器配置见Connectors四. Running Trino在bin/launcher中提供了启动脚本脚本可以被手动操作或作为一个daemon执行。有如下命令命令说明run前台启动使用CtrlC关闭或者在其他终端执行stopstart启动作为一个daemon并返回PIDstop关闭服务restart重启或启动一个服务绑定一个新的PIDkill关闭可能挂起的服务status打印状态Stopped pid or Running as pid.bin/launcher start或者它可以在前台运行将日志和其他输出写入stdout/stderr。如果使用像daemontools这样的监控系统两个流都应该被捕获:bin/launcher runlauncher为etc目录、配置文件、数据目录var和数据目录中的日志文件配置默认值。可以按需修改例如使用安装目录之外的目录、特定的挂载点或位置甚至使用其他文件名。例如Trino RPM调整使用的目录以更好地遵循Linux文件系统层次标准(FHS)。登录时需要写用户可以随便写不需要输入密码当trino启动后可以在数据目录查看如下日志launcher.log由launcher创建包含stdout and stderr streams。server logging的初始化、JVM的错误以及分析会写到launcher.log中。server.logTrino主要日志当sever初始化失败时会包含一些相关信息。日志会自动轮转和压缩。http-request.log记录所有http请求。日志同样会自动轮转和压缩。参考官网Trino Deploying