Presto【部署 01】Presto服务安装配置启动验证及客户端web工具Yanagishima安装配置验证(详细配置说明+Yanagishima已编译文件分享)

简介: Presto【部署 01】Presto服务安装配置启动验证及客户端web工具Yanagishima安装配置验证(详细配置说明+Yanagishima已编译文件分享)

说明: 本次使用的安装包为 presto-server-0.196.tar.gz 大小(461M)《官网》可下载的最新版本 presto-server-0.266.tar.gz 大小(1.1G) 🐌 我使用的是乞丐版 (1核2G) 的腾讯云服务器,故安装体积较小的版本进行测试。

1.Presto安装配置

1.1 安装

安装是一如既往的简单:

tar -zxvf presto-server-0.196.tar.gz
mv presto-server-0.196 /usr/local/presto

1.2 配置

官网有详细的《配置说明》参考官网进行配置(看似是最新版本的说明,其实大家都懂的)😄

在安装目录中(我的是/usr/local/presto)创建一个etc目录。在这个目录中放入以下配置信息:

  • 节点属性:每个节点的环境配置信息
  • JVM 配置:JVM 的命令行选项
  • 配置属性:Presto server 的配置信息
  • Catalog属性:configuration for Connectors(数据源)的配置信息

1️⃣ 节点属性(Node Properties)

节点属性配置文件:etc/node.properties 包含针对于每个节点的特定的配置信息。一个节点就是在一台机器上安装的Presto实例。这份配置文件一般情况下是在 Presto 第一次安装的时候,由部署系统创建的。一个 etc/node.properties 配置文件至少包含如下配置信息:

node.environment=production
node.id=ffffffff-ffff-ffff-ffff-ffffffffffff
node.data-dir=/var/presto/data

本次使用的配置为:

node.environment=production
node.id=presto-tcloud
node.data-dir=/usr/local/presto-data

配置信息描述如下:

  • node.environment:集群名称。所有在同一个集群中的 Presto 节点必须拥有相同的集群名称。
  • node.id:每个 Presto 节点的唯一标示。每个节点的 node.id 都必须是唯一的。在 Presto 进行重启或者升级过程中每个节点的 node.id 必须保持不变。如果在一个节点上安装多个 Presto 实例(例如:在同一台机器上安装多个 Presto 节点),那么每个 Presto 节点必须拥有唯一的 node.id。
  • node.data-dir: 数据存储目录的位置(操作系统上的路径)。Presto 将会把日期和数据存储在这个目录下(官方建议此目录放在安装目录之外)

2️⃣ JVM配置

JVM 配置文件(老生常谈的配置了),etc/jvm.config, 包含一系列在启动 JVM 的时候需要使用的命令行选项。这份配置文件的格式是:一系列的选项,每行配置一个单独的选项。由于这些选项不在 shel l命令中使用。 因此即使将每个选项通过空格或者其他的分隔符分开,java 程序也不会将这些选项分开,而是作为一个命令行选项处理。

-server
-Xmx16G
-XX:+UseG1GC
-XX:G1HeapRegionSize=32M
-XX:+UseGCOverheadLimit
-XX:+ExplicitGCInvokesConcurrent
-XX:+HeapDumpOnOutOfMemoryError
-XX:+ExitOnOutOfMemoryError

本次使用的配置为:

-server
-Xmx1G
-XX:+UseG1GC
-XX:G1HeapRegionSize=32M
-XX:+UseGCOverheadLimit
-XX:+ExplicitGCInvokesConcurrent
-XX:+HeapDumpOnOutOfMemoryError
-XX:+ExitOnOutOfMemoryError

由于 OutOfMemoryError 将会导致 JVM 处于不一致状态,所以遇到这种错误的时候我们一般的处理措施就是将 dump headp 中的信息(用于 debugging),然后强制终止进程。Presto 会将查询编译成字节码文件,会生成很多class,需要增大 Perm 区的大小(在 Perm 中主要存储 class)并且要允许 Jvm class unloading。

3️⃣ 配置属性(Config Properties)

Presto 的配置文件:etc/config.properties 包含了 Presto server 的所有配置信息。每个 Presto server 既是一个 coordinatorn. 协调人,统筹者 也是一个 worker。但是在大型集群中,处于性能考虑,建议单独用一台机器作为 coordinator。

作为 coordinator 的最小配置:

coordinator=true
node-scheduler.include-coordinator=false
http-server.http.port=8080
# 整个集群可以使用的最大用户执行内存
query.max-memory=50GB
query.max-memory-per-node=1GB
discovery-server.enabled=true
discovery.uri=http://example.net:8080

作为 worker 的最小配置:

coordinator=false
http-server.http.port=8080
query.max-memory=50GB
query.max-memory-per-node=1GB
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-server.enabled=true
discovery.uri=http://example.net:8080

本次使用的配置为:

coordinator=true
node-scheduler.include-coordinator=true
http-server.http.port=8883
query.max-memory=1GB
discovery-server.enabled=true
discovery.uri=http://tcloud:8883

配置信息描述:

  • coordinator:指定是否运维 Presto 实例作为一个 coordinator (接收来自客户端的查询情切管理每个查询的执行过程)。
  • node-scheduler.include-coordinator:是否允许在 coordinator 服务中进行调度工作。对于大型的集群,在一个节点上的 Presto server 即作为 coordinator 又作为 work e将会降低查询性能。因为如果一个服务器作为 worker 使用,那么大部分的资源都不会被 worker 占用,那么就不会有足够的资源进行关键任务调度、管理和监控查询执行。
  • http-server.http.port:指定 HTTP server 的端口。Presto 使用 HTTP 进行内部和外部的所有通讯。
  • query.max-:查询相关的内存设置。
  • discovery-server.enabled:Presto 通过 Discovery 服务来找到集群中所有的节点。为了能够找到集群中所有的节点,每一个Presto实例都会在启动的时候将自己注册到 discovery 服务。Presto 为了简化部署,并且也不想再增加一个新的服务进程,Presto coordinator 可以运行一个内嵌在 coordinator 里面的Discovery 服务。这个内嵌的Discovery 服务和 Presto 共享 HTTP server 并且使用同样的端口。
  • discovery.uri:Discovery server 的 URI。由于启用了 Presto coordinator 内嵌的 Discovery 服务,因此这个 uri 就是 Presto coordinator 的 uri。 注意:这个URI一定不能以“/“结尾。
  • task.max-memory:一个单独的任务使用的最大内存 (一个查询计划的某个执行部分会在一个特定的节点上执行)。 这个配置参数限制的GROUP BY语句中的Group的数目、JOIN关联中的右关联表的大小、ORDER BY语句中的行数和一个窗口函数中处理的行数。 该参数应该根据并发查询的数量和查询的复杂度进行调整。如果该参数设置的太低,很多查询将不能执行;但是如果设置的太高将会导致JVM把内存耗光。

其他配置:

You may also wish to set the following properties:

  • jmx.rmiregistry.port: Specifies the port for the JMX RMI registry. JMX clients should connect to this port.
  • jmx.rmiserver.port: Specifies the port for the JMX RMI server. Presto exports many metrics that are useful for monitoring via JMX.

4️⃣ 日志级别

日志配置文件:etc/log.properties。在这个配置文件中允许你根据不同的日志结构设置不同的日志级别。每个 logger 都有一个名字(通常是使用 logger 的类的全标示类名)Loggers 通过名字中的 . 来表示层级和集成关系。 (像java里面的包)log 配置信息 本次使用的也是这个配置

com.facebook.presto=INFO

5️⃣ Catalog Properties

  • Presto 通过 connectors 访问数据。这些 connectors 挂载在 catalogs 上。connector 可以提供一个catalog 中所有的 schema 和表。例如:Hive connector 将每个 hive 的 database 都映射成为一个schema,所以如果 hive connector 挂载到了名为 hive 的 catalog,并且在 hive 的 web 有一张名为 clicks 的表,那么在 Presto 中可以通过 hive.web.clicks 来访问这张表。
  • 通过在 etc/catalog 目录下创建 catalog 属性文件来完成 catalogs 的注册。例如:可以先创建一个etc/catalog/jmx.properties 文件,文件中的内容如下,完成在 jmxcatalog 上挂载一个 jmxconnector:
connector.name=jmx

可查看 Connectors 的 详细配置选项

1.3 启动

安装目录下的 bin/launcher 文件就是启动脚本。Presto可以使用如下命令作为一个后台进程启动:

[root@tcloud presto]# bin/launcher start
Started as 19648

另外,也可以在前台运行,日志和相关输出将会写入 stdout/stderr(可以使用类似 daemontools 的工具捕捉这两个数据流):

bin/launcher run

其他命令:

bin/launcher --help
Usage: launcher [options] command
Commands: run, start, stop, restart, kill, status
Options:
  -h, --help            show this help message and exit
  -v, --verbose         Run verbosely
  --etc-dir=DIR         Defaults to INSTALL_PATH/etc
  --launcher-config=FILE
                        Defaults to INSTALL_PATH/bin/launcher.properties
  --node-config=FILE    Defaults to ETC_DIR/node.properties
  --jvm-config=FILE     Defaults to ETC_DIR/jvm.config
  --config=FILE         Defaults to ETC_DIR/config.properties
  --log-levels-file=FILE
                        Defaults to ETC_DIR/log.properties
  --data-dir=DIR        Defaults to INSTALL_PATH
  --pid-file=FILE       Defaults to DATA_DIR/var/run/launcher.pid
  --launcher-log-file=FILE
                        Defaults to DATA_DIR/var/log/launcher.log (only in
                        daemon mode)
  --server-log-file=FILE
                        Defaults to DATA_DIR/var/log/server.log (only in
                        daemon mode)
  -D NAME=VALUE         Set a Java system property

启动完之后,日志将会写在设置的node.data-dir 目录下的 var/log 目录下,有如下文件:

  • launcher.log:这个日志文件由 launcher 创建,并且 server 的 stdout 和 stderr 都被重定向到了这个日志文件中。这份日志文件中只会有很少的信息,包括:在server日志系统初始化的时候产生的日志和JVM产生的诊断和测试信息。
  • server.log:这个是Presto使用的主要日志文件。一般情况下,该文件中将会包括server初始化失败时产生的相关信息。这份文件会被自动轮转和压缩。
  • http-request.log: 这是HTTP请求的日志文件,包括server收到的每个HTTP请求信息,这份文件会被自动轮转和压缩。
# server.log 的最后一行
2021-12-07T12:00:19.703+0800    
INFO    main    com.facebook.presto.server.PrestoServer 
======== SERVER STARTED ========

1.4 验证

前端验证 http://tcloud:8883

2. Yanagishima安装配置

2.1 Quick Start

Yanagishima的GitHu 有 Quick Start:

git clone https://github.com/yanagishima/yanagishima.git
cd yanagishima
git checkout -b [version] refs/tags/[version]
./gradlew distZip
cd build/distributions
unzip yanagishima-[version].zip
cd yanagishima-[version]
vim config/application.yml
nohup bin/yanagishima-start.sh >y.log 2>&1 &

2.2 安装配置

本次部署的是编译后的yanagishima-18.0.zip文件,解压文件即可:

编译后文件云盘:

链接:https://pan.baidu.com/s/1626_ym21H9n4lfcah2YbMw

提取码:iur5

unzip yanagishima-18.0.zip

简单配置一下安装目录下的 /conf/yanagishima.properties :

jetty.port=7080
presto.datasources=root-presto
presto.coordinator.server.root-presto=http://tcloud:8883
sql.query.engines=presto

2.3 启动验证

我的安装目录是/home/presto/yanagishima-18.0/,目录下有启动和停止的 shell 脚本:

# 在安装目录下执行-进行启动启动
nohup bin/yanagishima-start.sh >y.log 2>&1 &
# 在安装目录下执行-停止
nohup bin/yanagishima-shutdown.sh

前端验证 http://tcloud:7080

3. 总结

工具的安装部署并不复杂,关键在使用~

相关实践学习
通过日志服务实现云资源OSS的安全审计
本实验介绍如何通过日志服务实现云资源OSS的安全审计。
目录
相关文章
|
4月前
|
开发框架 监控 安全
Windows Defender 导致 Web IIS 服务异常停止排查
某日凌晨IIS服务异常停止,经查为Windows Defender安全补丁KB2267602触发引擎更新,导致系统资源波动,进而引发应用池回收。确认非人为操作,系统无重启。通过分析日志与监控,定位原因为Defender更新后扫描加重负载。解决方案:将IIS及.NET相关路径添加至Defender排除列表,避免业务影响。
561 116
|
6月前
|
运维 数据可视化 C++
2025 热门的 Web 化容器部署工具对比:Portainer VS Websoft9
2025年热门Web化容器部署工具对比:Portainer与Websoft9。Portainer以轻量可视化管理见长,适合技术团队运维;Websoft9则提供一站式应用部署与容器管理,内置丰富开源模板,降低中小企业部署门槛。两者各有优势,助力企业提升容器化效率。
447 1
2025 热门的 Web 化容器部署工具对比:Portainer VS Websoft9
|
7月前
|
Java 应用服务中间件 Docker
java-web部署模式概述
本文总结了现代 Web 开发中 Spring Boot HTTP 接口服务的常见部署模式,包括 Servlet 与 Reactive 模型、内置与外置容器、物理机 / 容器 / 云环境部署及单体与微服务架构,帮助开发者根据实际场景选择合适的方案。
301 25
|
8月前
|
开发框架 安全 前端开发
Go Web开发框架实践:模板渲染与静态资源服务
Gin 是一个功能强大的 Go Web 框架,不仅适用于构建 API 服务,还支持 HTML 模板渲染和静态资源托管。它可以帮助开发者快速搭建中小型网站,并提供灵活的模板语法、自定义函数、静态文件映射等功能,同时兼容 Go 的 html/template 引擎,具备高效且安全的页面渲染能力。
|
7月前
|
安全 JavaScript Java
java Web 项目完整案例实操指南包含从搭建到部署的详细步骤及热门长尾关键词解析的实操指南
本项目为一个完整的JavaWeb应用案例,采用Spring Boot 3、Vue 3、MySQL、Redis等最新技术栈,涵盖前后端分离架构设计、RESTful API开发、JWT安全认证、Docker容器化部署等内容,适合掌握企业级Web项目全流程开发与部署。
613 0
|
8月前
|
开发框架 JSON 中间件
Go语言Web开发框架实践:使用 Gin 快速构建 Web 服务
Gin 是一个高效、轻量级的 Go 语言 Web 框架,支持中间件机制,非常适合开发 RESTful API。本文从安装到进阶技巧全面解析 Gin 的使用:快速入门示例(Hello Gin)、定义 RESTful 用户服务(增删改查接口实现),以及推荐实践如参数校验、中间件和路由分组等。通过对比标准库 `net/http`,Gin 提供更简洁灵活的开发体验。此外,还推荐了 GORM、Viper、Zap 等配合使用的工具库,助力高效开发。
|
10月前
|
中间件 Go
Golang | Gin:net/http与Gin启动web服务的简单比较
总的来说,`net/http`和 `Gin`都是优秀的库,它们各有优缺点。你应该根据你的需求和经验来选择最适合你的工具。希望这个比较可以帮助你做出决策。
516 35
|
9月前
|
人工智能 安全 程序员
用 Colab 和 ngrok 免费部署你的 Web UI 项目,随时随地访问!
用 Colab 和 ngrok 免费部署你的 Web UI 项目,随时随地访问!
1118 12
|
JavaScript 前端开发 API
【Web API系列教程】3.6 — 实战:处理数据(创建JavaScript客户端)
在本节,你将使用HTML、JavaScript和Knockout.js库为应用程序创建客户端。我们将按如下步骤建立客户端应用: 1, 展示books列表 2, 展示book详细信息 3, 添加一本新书 Knockout.js库使用了模型-视图-视图模型(MVVM)模式: 1, 模型是在业务域(在本例中是books和authors)中数据在服务器端的表现形式。
1149 0
|
4月前
|
算法 Java Go
【GoGin】(1)上手Go Gin 基于Go语言开发的Web框架,本文介绍了各种路由的配置信息;包含各场景下请求参数的基本传入接收
gin 框架中采用的路优酷是基于httprouter做的是一个高性能的 HTTP 请求路由器,适用于 Go 语言。它的设计目标是提供高效的路由匹配和低内存占用,特别适合需要高性能和简单路由的应用场景。
401 5