Trino server 可以被安装部署到大量不同平台.一般你运行集群用一个coordinator 和多个woker.你可以找到部署群集的说明和相关信息,在下文.
部署trino
需要
Linux 操作系统
- 一定为64位
- 最好最新版本,尤其当运行在容器上.
- 为用户提供足够限制运行trino进程.这些限制可能依赖你使用的指定发布的linux. open file descriptor 数量需要为trino实例扩充大量机器在集群中数量, 乘以某个因子依赖工作负载.推荐使用下边限制,这一般设置在
/etc/security/limits.conf
:
trino soft nofile 131072
trino hard nofile 131072
Java 运行运行环境
Trino 需要64位java11并且需要最小 版本是11.0.11.早期补丁版本像11.0.2 已经不用了,还有更申8的版本.新版本12 或13 也不支持 – 可能能用但没有 被测试.
推荐使用 Azul Zulu JDK,因为Trino 已经测试部署. Zulu jdk也被 trion Docker 镜像使用.
Python
- 版本version 2.6.x, 2.7.x, or 3.x
- 仅需要
bin/launcher
脚本
安装 trion
下载trino server tar包, trino-server-365.tar.gz, 并且解压.
一旦你已经部署完成 ,或者你已经可以访问已经运行的cluster,你可以开始配置你的客户端应用. tar包包含一个顶层目录 ,trino-server-365, 可以称它为安装目录.
trino需要数据目录为日期排序等.推荐创建 数据目录在安装目录外,当升级时这样非常非常容易维护.
配置
创建etc
目录在安装目录.里边包含下边配置:
- Node 属性:环境配置指定每个节点
- JVM配置: 命令行配置为JVM
- 配置属性:配置为trino server
- Catalog 属性:配置为 Connector(数据源)
Node 属性
节点属性文本etc/node.properties
包含配置针对每个节点.一个node被单独安装在一台机器上.这个文件一般被创建通过部署系统当trino第一次安装 .下边是最少配置etc/node.properties
node.environment=production
node.id=ffffffff-ffff-ffff-ffff-ffffffffffff
node.data-dir=/var/trino/data
上边属性说明如下:
- node.environment: 环境名字.所有在集群中Trino node一定有相同环境名.名字一定是小写字母开头并且只包含小写字母或下划线(
_
)字符. - node.id: 安装Trino的id.每个节点一定唯一.这个id应该一直保留就算重启或trino升级.如果运行多个trino安装在同一台机器.每个 安装一定有唯一的id.
- node.data-dir: 数据目录在文件系统路径的位置.trino存储日志和其它数据在这.
JVM配置
JVM配置文件etc/jvm.config
,包含一列命令行选项使用为启动Java JVM.文件格式是一列选项,每项一行.这些选项没有被 shell翻译,所以这个选项共尾集空格或特殊字符还应该用引号.
下边提供一个好的开始点来创建etc/jvm.config
-server
-Xmx16G
-XX:-UseBiasedLocking
-XX:+UseG1GC
-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
由于OutOfMemoryError
一般事JVM处于状态不一致,我们写heap dump 来调试,并且当发生总是强制终端处理.
被JVM使用的临时目录一定允许代码执行.尤其大量一定没有noexec
设置标识.配置/tmp
目录被挂载用这个flag在一些安装,这样保证Trino 启动.你可以变通方案通过覆写临时目录通过增加-Djava.io.tmpdir=/path/to/other/tmpdir
来列出JVM选项
配置属性
配置属性文件,etc/config.properties
,包含 Trino server配置.每个trino server可以运行在coordinator 和a worker上,但是只有一台机器仅执行协调工作,推荐使用最好的性能在大集群.
下边是最小配置为coordinator
coordinator=true
node-scheduler.include-coordinator=false
http-server.http.port=8080
query.max-memory=50GB
query.max-memory-per-node=1GB
query.max-total-memory-per-node=2GB
discovery.uri=http://example.net:8080
最少配置为worker
coordinator=false
http-server.http.port=8080
query.max-memory=50GB
query.max-memory-per-node=1GB
query.max-total-memory-per-node=2GB
discovery.uri=http://example.net:8080
另外选择,如果你设置单独机械为测试有coordinator 和worker功能,使用这个配置:
coordinator=true
node-scheduler.include-coordinator=true
http-server.http.port=8080
query.max-memory=5GB
query.max-memory-per-node=1GB
query.max-total-memory-per-node=2GB
discovery.uri=http://example.net:8080
下边属性需要一些解释:
- coordinator: 允许trino实例运行作为coordinator,这样可以接受从clinet的query并且管理查询执行.
- node-scheduler.include-coordinator: 在coordinator上允许调度工作.对于大集群在coordinator处理任务会影响查询性能,因为机械资源不能被核心任务调度,管理并监控查询执行.
- http-server.http.port: 指定HTTP 服务器port. trino使用HTTP用来交流,内同步和扩展.
- query.max-memory:查询可能使用的最大分配内存.
- query.max-memory-per-node: 在任一机械上可能使用最大使用内存.
- query.max-total-memory-per-node: 用户和系统最大使用内存, 查询可能使用使用一台机械,系统内存被使用在执行被 reader, writer, 和网络缓存等.
- discovery.uri: Trino coordinator 有一个发现服务被所有node发现彼此. 每个Trino 实例注册它自己用发现服务在启动和持续的心跳保证保持注册是活的. 发现服务共享HTTP server 用 Trino因此使用一样的端口.替换 example.net:8080 去匹配 Trino coordinator 中的host和端口.如果你禁用 coordinator上的HTTP,URI scheme 一定是 https,不是http.
上边的配置属性是最少设置来帮助你开始.查看Administration和 Security为更复杂列表.尤其查看资源组配置队列策略.
日志级别
可选日志组别文件etc/log.properties
允许设置最小日志级别用命名的日志层级.每个日志有名字,它一般是完整类名,用在日志.日志有层级基于.
名字,像Java包.例如,考虑下边日志级别:
io.trino=INFO
这会设置最小级别到INFO为io.trino.server 和io.trino.plugin.hive.默认最小 级别是INFO,因此上边例子实质没有有任何改变.有4个级别DEBUG, INFO, WARN 和ERROR.
Catalog 属性
Trino访问数据通过 connector,它安装在catalog内. connector
提供所有schema
和catalog
中的表.例如,hive connecto
r 匹配每个 hive 库到schema
.如果 hive connector
安装作为 hive catalog
,并且 hive
包含表clicks
在数据库web
中.表可以被访问通过hive.web.clicks
.
catalog
被注册通过创建catalog properties 文件在etc/catalog
目录.例如,创建etc/catalog/jmx.properties
用下边内容来安装jmx connector 作为jmx catalog.
connector.name=jmx
查询connector更多信息关于配置
运行Trino
安装目录包含启动脚本在bin/launcher
.Trino 可以启动作为后台进程通过运行下边
bin/launcher start
或者可以运行在前台,带日志和其它输入写到stdout/stderr. 两种流应该被获取如果使用监督系统像daemontools
:
bin/launcher run
运行launcher 带–help 来查看支持命令和命令行选项.尤其带–verbose选项是非常有用的在安装时调试.
launcher 配置默认值配置在配置目录 etc
,配置文件和数据目录 var
,和日志文件在数据目录.你可以改变这些值来调整你的Trino 使用任一必填,像使用外边安装目录,指定安装点或位置,甚至使用其它文件名.例如,Trino 调整使用目录来更好跟随Linux操作系统层级标准(FHS).
在启动Trino后,你可以查找日志在log目录,里边数据目录var
:
- launcher.log: 这个日志在启动时创建,并且连接标准服务的输入和标准错误流.包含少量日志消息发生,当日志被初始化,并且任何错误或JVM生成的诊断.
- server.log: 主要被Trino使用的主要日志.一般包含相关信息如果服务失败在安装时.它会自动轮询压缩.
- http-request.log: HTTP 请求日志包含每个HTTP请示通过server接收.它自动轮询压缩.