【部署】Deploying Trino on linux

文章目录

  • 一. 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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

鸿蒙Harmony开发初探

一、背景 9月25日华为秋季全场景新品发布会,余承东宣布鸿蒙HarmonyOS NEXT蓄势待发,不再支持安卓应用。网易有道、同程旅行、美团、国航、阿里等公司先后宣布启动鸿蒙原生应用开发工作。 二、鸿蒙Next介绍 HarmonyOS是一款面向万物互联,全…

查询绑定了所有id的name

1、如图,绑定了所有id的有A,B两个name 2、第一种Sql及效率 explain SELECT name,count(id) as count from test GROUP BY name HAVING count(id)(SELECT count(DISTINCT id) from test); 3、第二种sql及效率 explain select * from (SELECT name,count(id) as co…

软著项目推荐 深度学习的智能中文对话问答机器人

文章目录 0 简介1 项目架构2 项目的主要过程2.1 数据清洗、预处理2.2 分桶2.3 训练 3 项目的整体结构4 重要的API4.1 LSTM cells部分:4.2 损失函数:4.3 搭建seq2seq框架:4.4 测试部分:4.5 评价NLP测试效果:4.6 梯度截断…

柔性线路板市场分析:预计2028年将达到221亿美元

柔性电路板又称“软板”,是用柔性的绝缘基材制成的印刷电路。柔性电路提供优良的电性能,能满足更小型和更高密度安装的设计需要,也有助于减少组装工序和增强可靠性。柔性电路板是满足电子产品小型化和移动要求的惟一解决方法。可以自由弯曲、…

360公司-2019校招笔试-Windows开发工程师客观题合集解析

360公司-2019校招笔试-Windows开发工程师客观题合集 API无法实现进程间数据的相互传递是PostMessage2.以下代码执行后,it的数据为(异常) std::list<int> temp; std::list<int>::iterator it = temp.begin(); it = --it; 3.API在失败时的返回值跟其他不一样是 …

会话 cookie 及隐私的那些事

什么是会话 Cookie? 会话 Cookie 的概念非常简单。 会话 Cookie,也称为临时 Cookie 或内存 Cookie,是网站在浏览会话期间存储在用户计算机或设备上的小数据片段。 它是由网站生成并由您的浏览器存储和使用的多种 Cookie 之一。 常规 Cookie 或“持久”Cookie 是通常在您的…

Ant Design Vue 年选择器

文章目录 参考文档效果展示实现过程 参考文档 提示&#xff1a;这里可以添加本文要记录的大概内容&#xff1a; DatePicker 日期选择框 大佬&#xff1a;搬砖小匠&#xff08;Ant Design vue 只选择年&#xff09; 提示&#xff1a;以下是本篇文章正文内容&#xff0c;下面案…

Django宠物之家平台

摘 要 随着互联网的快速发展&#xff0c;利用网络的管理系统也逐渐发展起来。在线管理模式快速融入了众多用户的眼球&#xff0c;从而产生了各种各样的平台管理系统。 关于本django宠物的家庭平台管理系统的设计来说&#xff0c;系统开发主要采纳Python技术、B/S框架&#xff…

几何对象的凸点集

// 引入VTK并初始化 #include "vtkAutoInit.h" VTK_MODULE_INIT(vtkRenderingOpenGL2); VTK_MODULE_INIT(vtkInteractionStyle);#include <vtkActor.h> #include <vtkCamera.h> #include <vtkConvexPointSet.h> #include <vtkDataSetMapper.h&g…

工程化使用React

安装 首先全局安装 npm install create-react-app -g创建项目 create-react-app proName最基本的一个react工程化创建完成 项目目录

zabbix的自动发现机制:

zabbix的自动发现机制: zabbix客户端主动的和服务端联系&#xff0c;将自己的地址和端口发送给服务端&#xff0c;实现自动添加监控主机 客户端是主动的一方 缺点&#xff1b;如果自定义网段中主机数量太多&#xff0c;等级耗时会很久&#xff0c;而且这个自动发现机制不是很…

从图片或PDF文件识别表格提取内容的简单库img2table

img2table是一个基于OpenCV 图像处理的用于 PDF 和图像的表识别和提取 Python库。由于其设计基于神经网络的解决方案&#xff0c;提供了一种实用且更轻便的替代方案&#xff0c;尤其是在 CPU 上使用时。 该库的特点&#xff1a; 识别图像和PDF文件中的表格&#xff0c;包括在表…

RabbitMQ 详解

文章目录 MQ 简介1、简介2、MQ优缺点3、MQ应用场景4、AMQP 和 JMS5、常见的 MQ 产品 RabbitMQ 工作原理Linux 环境安装 RabbitMQ1、rmp安装法1.1 安装1.2 开启管理界面1.3 启动与停止1.4 创建新用户 2、docker安装法2.1 安装2.2 下载rabbitmq_delayed_message_exchange插件 Rab…

学习pytorch17 pytorch模型保存及加载

pytorch模型保存及加载 代码 import torch import torchvisionvgg16 torchvision.models.vgg16(pretrainedFalse)# 1. save model 1 保存模型结构及模型参数 torch.save(vgg16, ./vgg16_save1.model)# 2. save model 2 只保存模型参数 比第一种保存方法保存的文件要小 t…

微信小程序云开发报错

微信小程序云开发报错 起因是云开发报了个错误&#xff1a; fail: Error: cloud.callFunction:fail Error: errCode: -501000 | errMsg: [100003] env not exists (f8c78dea-9f77-43cf-9e7f-88c85f2a0795) (callId: 1701747734223-0.895078767368265) (trace: 11:42:14 star…

在eclipse中安装python插件:PyDev

在eclipse中安装插件PyDev&#xff0c;就可以在eclipse中开发python了。 PyDev的官网&#xff1a;https://www.pydev.org/ 不过可以直接在eclipse中用Marketplace安装&#xff08;备注&#xff1a;有可能一次安装不成功&#xff0c;是因为下载太慢了&#xff0c;多试几次&…

golang开发之个微机器人开发

请求URL&#xff1a; http://域名地址/sendFile 请求方式&#xff1a; POST 请求头Headers&#xff1a; Content-Type&#xff1a;application/jsonAuthorization&#xff1a;login接口返回 参数&#xff1a; 参数名必选类型说明wId是string登录实例标识wcId是string接收…

InST论文复现

论文地址&#xff1a;https://arxiv.org/abs/2211.13203 论文git&#xff1a;https://github.com/zyxElsa/InST 遇到的问题&#xff1a; 1.requests.exceptions.SSLError: HTTPSConnectionPool(hosthuggingface.co, port443): Max retries exceeded with url: /openai/clip-…

万兆光模块:单模光纤和多模光纤的选择指南

随着网络技术的不断发展&#xff0c;数据传输的速度也越来越快。在这样的背景下&#xff0c;万兆光模块逐渐成为了数据中心和网络设备的必备组件。而在选择万兆光模块时&#xff0c;用户通常会面临一个难题&#xff1a;选择单模还是多模&#xff1f;本文易天光通信将为您解析。…

鸿蒙原生应用/元服务开发-新版本端云一体化模板体验反馈

一、前言 云端一体化模板是基于Serverless服务构建的一套模板&#xff0c;提供了应用生态常见场景需求的代码实现&#xff0c;开发者可将所需能力快速部署和集成到自己的应用中。 二、准备 体验最新的远端一体化模板&#xff0c;需要将云模板替换掉。为此&#xff0c;我们需要做…