【部署】Deploying Trino on linux

news2024/9/24 19:24:41

文章目录

  • 一. Requirements
    • 1. Linux operating system
    • 2. Java 环境
    • 3. Python
  • 二. Installing Trino
  • 三. Configuring Trino
    • 1. 节点配置
    • 2. JVM 配置
    • 3. Config properties
    • 4. Log levels
    • 5. Catalog properties
  • 四. Running Trino

一. Requirements

1. Linux operating system

  • 64位

  • 资源限制配置:/etc/security/limits.conf

trino soft nofile 131072
trino hard nofile 131072
trino soft nproc 128000
trino hard nproc 128000

 

2. Java 环境

最新的Trino版本需要Java的长期支持版本Java 17,特别是17.0.3或更新版本。Trino不支持更旧版本的Java,而在新版本的Java(Java 18 或 19)环境下它也许可以正常工作,但并未仔细测试。

下载安装JDK17:Linux系统下JDK17安装+环境配置

 
如果使用java17或者java18,需要配置charset为UTF-8,在etc/jvm.config

-Dfile.encoding=UTF-8 

java19不要配置

 

3. Python

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

 
 

二. Installing Trino

下载地址:trino-server-434.tar.gz,

解压:tar -zxvf trino-server-434.tar.gz

trino需要数据目录来存储日志等。推荐将数据目录放在安装目录之外,便于Trino的更新。

 

三. Configuring Trino

在安装目录创建一个etc目录,此目录下有如下配置:

  • 节点配置:每个节点的环境配置。
  • JVM配置
  • Trino server配置
  • catalog配置:配置数据源

1. 节点配置

创建etc/node.properties文件,这里配置每个节点。一个节点代表一个trion的安装实例。当trino第一次安装时,有如下最小化配置:

node.environment=production
node.id=ffffffff-ffff-ffff-ffff-ffffffffffff
node.data-dir=/var/trino/data
  • node.environment:环境名字。所有的Trino节点都必须有同样的环境名字。名字开头必须小写,且只包含小写字母或_字符。
  • node.id :trion唯一标识,每个节点都不同。此标识在更新或者重启Trion时要保持不动。如果多个trino实例跑在同一个节点,每个安装实例必须有唯一标识。标识从一个字母开始,标识中只包含字母、- 或 _字符。
  • node.data-dir:数据目录位置,trion存储日志和其他数据在此目录。

 

2. JVM 配置

创建etc/jvm.config文件,这里包含一些启动java虚拟机的一些命令。文件格式是每行一个option组成的列表。

这些配置不由shell执行,所以文件中的空格或其他特殊字符不能用引号括起。如下参考:

-server
-Xmx10G
-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
-Dfile.encoding=UTF-8
# Reduce starvation of threads by GClocker, recommend to set about the number of cpu cores (JDK-8192647)
-XX:+UnlockDiagnosticVMOptions
-XX:GCLockerRetryAllocationCount=32

根据节点情况调整-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:GCLockerRetryAllocationCount=32)来避免太早的OOM(JDK-8192647)

 

3. Config properties

创建etc/config.properties,用于配置Trino Server。每一个Trino server都可以有coordinator和worker两种身份。一个集群需要一个coordinator,将一台机器专门用于执行协调工作可以给大型集群提供最佳性能,对于集群拓展和MPP并行处理则由worker实现。

coordinator的最小化配置:

coordinator=true
node-scheduler.include-coordinator=false
http-server.http.port=8080
discovery.uri=http://example.net:8080

workers的最小化配置:

coordinator=false
http-server.http.port=8080
discovery.uri=http://example.net:8080

如果部署一个测试集群,coordinator 和 worker部署到一起,则可以配置:

coordinator=true
node-scheduler.include-coordinator=true
http-server.http.port=8080
discovery.uri=http://example.net:8080

配置说明:

  • coordinator:配置为true则设置此trino实例作为coordinator,用来接收客户端的查询请求,以及管理查询。
  • node-scheduler.include-coordinator:允许coordinator工作调度。对于更大的集群,coordinator的工作处理影响查询性能,因为机器的资源不能用于重要任务的调度,管理以及监控查询的执行。
  • http-server.http.port:http server端口,Trino使用http协议进行所有内外部的通讯。(没有RPC端口?)
  • discovery.uri:coordinator具备服务发现的能力。每个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.trino=INFO

这会给io.trino.serverio.trino.plugin.hive 设置INFO的日志级别。不过默认的日志级别就是INFO,这里有四种日志级别:DEBUG, INFO, WARN and ERROR。

 

5. Catalog properties

Trino通过连接器访问数据,而连接器挂载到Catalog中。连接器向Catalog提供所有的schemas和表。例如:hive连接器映射每一个hive数据库为一个schema。如果hive连接器挂载为hive catalog,在hive.web.clicks页面上就可以访问hive表。

通过在etc/catalog目录下创建一个catalog配置文件来注册Catalogs。如果创建etc/catalog/jmx.properties,就会将jmx挂载到catalog中

connector.name=jmx

其他连接器配置见:Connectors

 

四. Running Trino

bin/launcher中提供了启动脚本,脚本可以被手动操作,或作为一个daemon执行。有如下命令:

命令说明
run前台启动,使用Ctrl+C关闭,或者在其他终端执行stop
start启动作为一个daemon,并返回PID
stop关闭服务
restart重启或启动一个服务,绑定一个新的PID
kill关闭可能挂起的服务
status打印状态,Stopped pid or Running as pid.
bin/launcher start

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

bin/launcher run

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

 
在这里插入图片描述

登录时需要写用户可以随便写,不需要输入密码

当trino启动后,可以在数据目录查看如下日志:

  • launcher.log:由launcher创建,包含stdout and stderr streams。server logging的初始化、JVM的错误以及分析会写到launcher.log中。
  • server.log:Trino主要日志,当sever初始化失败时会包含一些相关信息。日志会自动轮转和压缩。
  • http-request.log:记录所有http请求。日志同样会自动轮转和压缩。

 

参考:
官网:Trino Deploying

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1285142.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Qt 软件调试——windbg初篇(一)

在上一篇《Qt 软件调试(二)使用dump捕获崩溃信息》中我们结尾处提示大家先准备好windbg,windbg是非常强大的调试工具,对于我们进行代码调试和分析异常有着非常重要的意义。 在Qt软件调试这个系列的首篇,我们介绍了《Qt…

【springboot】整合redis

1.前提条件:docker安装好了redis确定redis可以访问 可选软件: 2.测试代码 (1)redis依赖 org.springframework.boot spring-boot-starter-data-redis (2)配置redis (3) 注入 Resource StringRedisTemplate stringRedisTemplate; 对键进行操作 –o…

竞赛选题YOLOv7 目标检测网络解读

文章目录 0 前言1 yolov7的整体结构2 关键点 - backbone关键点 - head3 训练4 使用效果5 最后 0 前言 世界变化太快,YOLOv6还没用熟YOLOv7就来了,如果有同学的毕设项目想用上最新的技术,不妨看看学长的这篇文章,学长带大家简单的…

Nacos前世今生、安装配置、服务注册源码、整合Springboot实战

一、前言 随着微服务架构的兴起,服务的规模不断增长,对于服务的发现、配置和管理变得越来越复杂。 在这个背景下,Nacos应运而生,以其强大的功能和灵活性成为云原生领域的瑞士军刀之一。 Nacos是一个由阿里巴巴开源的项目&#…

Inference with C# BERT NLP Deep Learning and ONNX Runtime

目录 效果 测试一 测试二 测试三 模型信息 项目 代码 下载 Inference with C# BERT NLP Deep Learning and ONNX Runtime 效果 测试一 Context :Bob is walking through the woods collecting blueberries and strawberries to make a pie. Question …

代码随想录刷题题Day5

刷题的第五天,希望自己能够不断坚持下去,迎来蜕变。😀😀😀 刷题语言:C / Python Day5 任务 ● 哈希表理论基础 ● 242.有效的字母异位词 ● 349. 两个数组的交集 ● 202. 快乐数 ● 1. 两数之和 1 哈希表理…

Rust 枚举和模式匹配

目录 1、枚举的定义 1.1 Option 枚举和其相对于空值的优势 2、match 控制流结构 2.1 匹配 Option 2.2 匹配是穷尽的 2.3 通配模式和 _ 占位符 3、if let 简洁控制流 1、枚举的定义 枚举(enumerations),也被称作 enums。枚举允许你通过…

微信小程序 纯css画仪表盘

刚看到设计稿的时候第一时间想到的就是用canvas来做这个仪表盘&#xff0c;虽然本人的画布用的不是很好但还可以写一写&#x1f600;。话不多说直接上代码。最后有纯css方法 <!--wxml--> <canvas canvas-id"circle" class"circle" >// js dat…

文章解读与仿真程序复现思路——中国电机工程学报EI\CSCD\北大核心《考虑富氧燃烧技术的电–气–热综合能源系统低碳经济调度》

这个标题涉及到一个关于能源系统和经济调度的复杂主题。让我们逐步解读&#xff1a; 电–气–热综合能源系统&#xff1a; 指的是一个综合的能源系统&#xff0c;包括了电力、气体&#xff08;可能是天然气等&#xff09;、热能等多个能源形式。这种系统的设计和优化旨在使不同…

【数据结构(六)】排序算法介绍和算法的复杂度计算(1)

文章目录 1. 排序算法的介绍1.1. 排序的分类 2. 算法的时间复杂度2.1. 度量一个程序(算法)执行时间的两种方法2.2. 时间频度2.2.1. 忽略常数项2.2.2. 忽略低次项2.2.2. 忽略系数 2.3. 时间复杂度2.4. 常见的时间复杂度2.5. 平均时间复杂度和最坏时间复杂度 3. 算法的空间复杂度…

编码器-解码器(seq-seq)

1. 背景 encoder-decoder和seq-seq模型可以解决输入与输出都是不定长序列的问题。它们都用到了两个循环NN&#xff0c;分别叫做编码器(用来分析输入序列)与解码器(用来生成输出序列)。 2. 编码器 把一个不定长的输入序列变换成一个定长的背景变量c&#xff0c;并在其中编码输入…

分享72个节日PPT,总有一款适合您

分享72个节日PPT&#xff0c;总有一款适合您 72个节日PPT下载链接&#xff1a;https://pan.baidu.com/s/17Lmlvd_xN-xRSKu3FZUS9w?pwd6666 提取码&#xff1a;6666 Python采集代码下载链接&#xff1a;采集代码.zip - 蓝奏云 学习知识费力气&#xff0c;收集整理更不易…

驱动开发--内核添加新功能

Ubuntu下这个文件为开发板ls命令的结果 内核的内容&#xff1a; mm&#xff1a;内存管理 fs&#xff1a;文件系统 net&#xff1a;网络协议栈 drivers&#xff1a;驱动设备 arch与init&#xff1a;跟启动相关 kernel与ipc&#xff1a;任务&#xff0c;进程相关 向内核增…

java项目日常运维需要的文档资料

一、前言 java项目开发完成&#xff0c;部署上线&#xff0c;进入项目运维阶段&#xff0c;日常工作需要准备哪些资料和文档?当项目上线后&#xff0c;运行一段时间&#xff0c;或多或少会遇到一些运维上的问题&#xff0c;比如服务器磁盘饱满&#xff0c;服务器CPU&#xff0…

分享 | 顶刊高质量论文插图配色(含RGB值及16进制HEX码)(第一期)

我在很早之前出过一期高质量论文绘图配色&#xff0c;但当时觉得搜集太麻烦于是就没继续做&#xff0c;后来用MATLAB爬了上万张顶刊绘图&#xff0c;于是又想起来做这么一个系列&#xff0c;拿了一个多小时写了个提取论文图片颜色并得出RGB值和16进制码并标注在原图的代码&…

GPTs每日推荐--生化危机【典藏版】

今天给大家推荐一个游戏性质的GPTs&#xff0c;叫做生化危机典藏版&#xff0c;国内点击可玩。 开篇&#xff1a;玩家从末日中醒来。 选择&#xff1a;玩家会遇到各种资源、任务、剧情&#xff0c;需要自行选择相关的分支剧情&#xff0c;一旦选错&#xff0c;无法重选。 结局…

一次北斗接收机调试总结

作者&#xff1a;朱金灿 来源&#xff1a;clever101的专栏 为什么大多数人学不会人工智能编程&#xff1f;>>> 最近项目中要用到北斗接收机&#xff0c;它的样子是长这样的&#xff1a; 这部机器里面是没有操作系统的&#xff0c;由单片机控制。最近我们要根据协议…

Linux socket编程(10):UDP详解、聊天室实现及进阶知识

首先来回顾以下TCP的知识&#xff0c;TCP是一种面向连接的、可靠的传输协议&#xff0c;具有以下特点&#xff1a; TCP通过三次握手建立连接&#xff0c;确保通信的可靠性和完整性使用流控制和拥塞控制机制&#xff0c;有效地调整数据传输的速率&#xff0c;防止网络拥塞TCP提…

使用 PyTorch 进行 K 折交叉验证

一、说明 中号机器学习模型在训练后必须使用测试集进行评估。我们这样做是为了确保模型不会过度拟合&#xff0c;并确保它们适用于现实生活中的数据集&#xff0c;与训练集相比&#xff0c;现实数据集的分布可能略有偏差。 但为了使您的模型真正稳健&#xff0c;仅仅通过训练/测…

OneNote for Windows10 彻底删除笔记本

找了超多方法&#xff0c;都没有用&#xff0c;我的OneNote都没有文件选项&#xff0c;要在OneDrive中删除&#xff0c;但是一直登不进&#xff0c;然后又找到一个方法&#xff1a; 在网页中打开Office的控制面板 "Sign in to your Microsoft account" 在“最近”一…