当前位置: 首页 > article >正文

二、Trino406系列 之 集群部署

文章目录

  • 需要条件
    • linux操作系统
    • Java runtime environment
    • Python
  • 安装Trino
  • 配置Trino
    • node.properties
    • jvm.config
  • Disable Preventive GC for performance reasons (JDK-8293861)
    • config.properties
    • 日志级别
    • Catalog properties
  • Running Trino
    • launcher commands
    • 启动客户端
    • 常用查询命令
  • 感谢

Trino服务可以安装和部署在许多不同的平台上。通常,您使用一个coordinator和许多worker运行一个机器集群。您可以在以下部分中找到部署这样一个集群的说明和相关信息:
一旦您完成了部署,或者您已经访问了一个正在运行的集群,您就可以继续配置您的客户端应用程序。

需要条件

linux操作系统

  • 64-bit必要条件
  • 首选更新的版本,特别是运行在容器中
  • 为运行Trino进程的用户设置足够的ulimit。这些限制可能取决于您使用的特定Linux发行版。特定Trino实例需要打开的文件描述符的数量大致等于集群中的机器数量,乘以取决于工作负载的某个因素。我们推荐以下限制,通常可以在/etc/security/limits.conf中设置:
    trino soft nofile 131072
    trino hard nofile 131072

Java runtime environment

Trino需要64位版本的Java 17,最低要求版本为17.0.3。早期的主要版本,如Java 8或Java 11不能工作。较新的主要版本,如Java 18或19,不受支持-它们可能工作,但没有经过测试。
我们建议使用Azul Zulu作为Trino的JDK,因为Trino是针对该发行版进行测试的。Zulu也是Trino Docker镜像使用的JDK。

Python

  • version 2.6.x, 2.7.x, or 3.x
  • required by the bin/launcher script only

安装Trino

下载Trino服务器tarball, Trino -server-406.tar.gz,并解压缩它。tarball包含一个顶级目录trino-server-406,我们称之为安装目录。

Trino需要一个数据目录来存储日志等等。我们建议在安装目录之外创建一个数据目录,这样可以在升级Trino时方便地保存它。

配置Trino

在安装目录中创建一个etc目录。它包含以下配置:

  • 节点属性:特定于每个节点的环境配置
  • JVM配置:Java虚拟机的命令行选项
  • Config Properties: Trino服务器的配置。有关可用的配置属性,请参阅Properties参考。
  • 目录属性:连接器(数据源)的配置。连接器可用的目录配置属性在各自的连接器文档中进行了描述。

node.properties

节点属性文件,etc/node。属性,包含特定于每个节点的配置。节点是机器上安装的Trino的单个实例。这个文件通常是部署系统在第一次安装Trino时创建的。下面是一个极小的etc/node.properties:
node.environment=production
node.id=ffffffff-ffff-ffff-ffff-ffffffffffff
node.data-dir=/var/trino/data

上面提到属性解释:
node.environment:环境的名称。集群中的所有Trino节点必须具有相同的环境名称。名称必须以小写字母数字开头,且只能包含小写字母数字或下划线。
node.id:此Trino安装的唯一标识符。这对于每个节点都必须是唯一的。这个标识符应该在重新启动或升级Trino时保持一致。如果在一台机器上运行多个Trino安装(即同一台机器上的多个节点),则每个安装必须具有唯一标识符。标识符必须以字母数字开头,且只能包含字母数字、“-”或“_”。
node.data-dir:数据目录的位置(文件系统路径)。Trino在这里存储日志和其他数据。

jvm.config

JVM配置文件etc/ jvm. config,包含用于启动Java虚拟机的命令行选项列表。文件的格式是一个选项列表,每行一个。shell不会解释这些选项,因此包含空格或其他特殊字符的选项不应该被引用。
下面为创建etc/jvm.config提供了一个很好的起点:
-server
-Xmx16G
-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

Disable Preventive GC for performance reasons (JDK-8293861)

-XX:-G1UsePreventiveGC

由于OutOfMemoryError通常会使JVM处于不一致的状态,因此我们编写一个堆转储以进行调试,并在发生这种情况时强制终止进程。

JVM使用的临时目录必须允许执行代码。具体来说,挂载不能设置noexec标志。在某些安装中,默认的/tmp目录是用这个标志挂载的,这会阻止Trino启动。您可以通过添加-Djava.io覆盖临时目录来解决这个问题。tmpdir=/path/to/other/tmpdir到JVM选项列表。

我们启用-XX:+UnlockDiagnosticVMOptions和-XX:+ useaesctrintrinsic来提高S3的AES性能,等ARM64 (JDK-8271567)我们禁用预防性GC (-XX:-G1UsePreventiveGC)出于性能原因(参见JDK-8293861)

config.properties

配置属性文件etc/config。包含Trino server的配置。每个Trino server都可以同时充当协调器和工作器。一个集群需要包含一个协调器,将一台机器专门用于执行协调工作,可以在较大的集群上提供最佳性能。缩放和并行化是通过使用许多worker来实现的。

以下是协调器的最小配置:
coordinator=true
node-scheduler.include-coordinator=false
http-server.http.port=8080
discovery.uri=http://example.net:8080

下面是wokers节点的最小化配置
coordinator=false
http-server.http.port=8080
discovery.uri=http://example.net:8080

或者,如果您正在设置一台用于测试的机器,它同时充当协调器和工作器,请使用以下配置:
coordinator=true
node-scheduler.include-coordinator=true
http-server.http.port=8080
discovery.uri=http://example.net:8080

自己的本地,就把上面的example.net写为localhost或者127.0.0.1就可以了。

这些属性需要一些解释:
coordinator:允许这个Trino实例充当协调器,以便接受来自客户端的查询并管理查询执行。
node-scheduler.include-coordinator:允许在协调器上调度工作。对于较大的集群,协调器上的处理工作可能会影响查询性能,因为机器的资源无法用于调度、管理和监视查询执行等关键任务。
http-server.http.port: HTTP服务器的端口。Trino使用HTTP进行所有内部和外部通信。
discover.uri: Trino协调器有一个发现服务,所有节点都使用它来相互查找。每个Trino实例都在启动时向发现服务注册自己,并不断心跳以保持其注册活动。发现服务与Trino共享HTTP服务器,因此使用相同的端口。替换example.net:8080以匹配Trino协调器的主机和端口。如果在协调器上禁用了HTTP,则URI方案必须是https,而不是HTTP。

上面的配置属性是帮助您入门的一个最小集合。所有附加配置都是可选的,并且根据特定的集群和支持的用例而有很大差异。管理和安全部分包含许多方面的文档,包括用于配置队列策略和容错执行的资源组。
属性参考提供了支持的主题属性的全面列表,这些主题包括常规属性、资源管理属性、查询管理属性、Web UI属性等。

日志级别

可选的日志级别文件,etc/log。允许为指定的日志记录器层次结构设置最小日志级别。每个记录器都有一个名称,该名称通常是使用该记录器的类的完全限定名。记录器有一个基于名称中的圆点的层次结构,就像Java包一样。例如,考虑以下日志级别文件:
io.trino=INFO
这将把io.trino.server和io.trino.plugin.hive的最低级别设置为INFO。默认的最小级别是INFO,因此上面的例子实际上没有改变任何东西。有四个级别:DEBUG、INFO、WARN和ERROR。

Catalog properties

Trino通过连接器访问数据,这些连接器安装在目录中。连接器提供catalog中的所有schema和table。例如,Hive连接器将每个Hive数据库映射到一个schema。如果Hive连接器被挂载为Hive catalog,并且Hive在数据库web中包含一个表单击,则可以在Trino中以Hive .web.clicks的形式访问该表。
通过在etc/catalog目录中创建目录属性文件来注册目录。例如,创建“etc/catalog/jmx.properties”。使用以下内容将JMX连接器挂载为JMX目录
connector.name=jmx

有关配置连接器(https://trino.io/docs/current/connector.html)的更多信息,请参阅连接器。

Running Trino

安装提供了一个bin/launcher脚本,需要在PATH中使用Python。该脚本可以手动使用,也可以作为守护进程启动脚本使用。它接受以下命令:

launcher commands

run: 在前台启动server并让其运行。要关闭server,请在此终端使用Ctrl+C或在其他终端使用stop命令。
start:启动server作为守护进程,并返回其进程ID。
stop:关闭以start或run启动的server。发送SIGTERM信号。
restart:停止,然后重新启动一个正在运行的server,或者启动一个停止的server,分配一个新的进程ID。
kill:通过发送SIGKILL信号关闭可能挂起的server。
status:打印状态行,停止pid或运行为pid。

许多其他选项允许您指定配置文件和目录位置,以及Java选项。使用–help运行启动程序以查看受支持的命令和命令行选项。
每个命令的-v或–verbose选项将服务器的当前设置放在命令的常规输出之前。

Trino可以通过运行以下命令作为守护进程启动:
bin/launcher start

或者,它可以在前台运行,将日志和其他输出写入stdout/stderr。如果使用像daemontools这样的监督系统,两个流都应该被捕获:
bin/launcher run

启动器为配置目录etc、配置文件、数据目录var和数据目录中的日志文件配置默认值。您可以更改这些值来调整您的Trino使用以满足任何需求,例如使用安装目录之外的目录、特定的挂载点或位置,甚至使用其他文件名。例如,Trino RPM调整使用的目录,以更好地遵循Linux文件系统层次标准(FHS)。

启动Trino后,你可以在data目录var中的log目录中找到日志文件:
launcher.log:该日志由启动程序创建,连接到server的stdout和stderr流。它包含初始化server日志时发生的一些日志消息,以及JVM产生的任何错误或诊断。
server.log:这是Trino使用的主要日志文件。如果服务器在server过程中失败,它通常包含相关信息。它是自动旋转和压缩。
http-request.log:这是HTTP请求日志,包含服务器接收到的每个HTTP请求。它是自动旋转和压缩。

启动客户端

需要下载client包https://repo1.maven.org/maven2/io/trino/trino-cli/
然后将该jar包上传到客户端机器上,执行命令
java -jar trino-cli-406-executable.jar --server localhost:8080
会弹出trino控制台,即可输入查询语句

常用查询命令

show catalogs; // 查询有哪些catalog,比如jmx,hive,mysql等存储介质
show schemas from jmx; // 查询jmx里面有哪些schemas,如下图

感谢

《Trino的介绍和安装使用》https://juejin.cn/post/7129151816512012302
Trino官网 https://trino.io/docs/407/installation.html


http://www.kler.cn/a/2815.html

相关文章:

  • LLM之模型评估:情感评估/EQ评估/幻觉评估等
  • 量化交易系统开发-实时行情自动化交易-3.4.2.Okex行情交易数据
  • 内置RTK北斗高精度定位的4G执法记录仪、国网供电服务器记录仪
  • 通用项目工程的过程视图概览
  • Snort的配置与使用
  • 线性表-数组描述补充 迭代器(C++)
  • AJAX,Axios,JSON简单了解
  • 看齐iOS砍掉祖传功能,Android 16G内存也危险了
  • HFish蜜罐的介绍和简单测试(一)
  • shell简单使用介绍
  • KafKa知识汇总
  • 大模型未来趋势
  • 【C++进阶】十一、哈希的应用---布隆过滤器(二)
  • Element table组件内容\n换行解决办法
  • 【C++】STL容器、算法的简单认识
  • 【CodeForces】Codeforces Round 859 (Div. 4) D
  • 看完这篇 教你玩转渗透测试靶机vulnhub——My File Server: 1
  • Android11以上版本使用高德定位,定位成功,卫星数一直为0
  • 【TypeScript 入门】14.泛型
  • 微软Bing GPT支持AI绘画了,输入文字就能出图
  • 值得记忆的STL常用算法,分分钟摆脱容器调用的困境,以vector为例,其余容器写法类似
  • Kotlin~Singleton单例模式
  • 文心一言 vs GPT-4 —— 全面横向比较
  • Halcon转OpenCV实例--纺织物折痕检测(附源码)
  • 防火墙和IDS
  • javaScript防抖与节流函数