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. 总结

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

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
目录
相关文章
|
1月前
|
存储 资源调度 应用服务中间件
浅谈本地开发好的 Web 应用部署到 ABAP 应用服务器上的几种方式
浅谈本地开发好的 Web 应用部署到 ABAP 应用服务器上的几种方式
27 0
|
3天前
|
测试技术 Linux Docker
【好玩的经典游戏】Docker部署FC-web游戏模拟器
【好玩的经典游戏】Docker部署FC-web游戏模拟器
28 1
|
12天前
|
Web App开发 Java 应用服务中间件
【Java Web】在 IDEA 中部署 Tomcat
【Java Web】在 IDEA 中部署 Tomcat
|
23天前
|
资源调度 JavaScript 安全
Linux系统之部署web-check网站分析工具
【4月更文挑战第3天】Linux系统之部署web-check网站分析工具
68 9
|
1月前
|
数据库
最全三大框架整合(使用映射)——struts.xml和web.xml配置
最全三大框架整合(使用映射)——数据库资源文件jdbc.properties
10 0
|
1月前
|
Web App开发
Star 5.5k!这款Web剪藏工具绝了,支持10+平台内容剪辑同步!
Star 5.5k!这款Web剪藏工具绝了,支持10+平台内容剪辑同步!
|
1月前
|
缓存 移动开发 监控
Star 1.3K!推荐一款可以远程调试任意Web项目的开源工具!
Star 1.3K!推荐一款可以远程调试任意Web项目的开源工具!
|
1月前
|
Java 关系型数据库 应用服务中间件
JAVA Web项目开发eclipse工具包配置(第一天)
JAVA Web项目开发eclipse工具包配置(第一天)
|
1月前
|
监控
web后端-最好用的扒站仿站工具(网页克隆网页复制)
web后端-最好用的扒站仿站工具(网页克隆网页复制)
|
1月前
|
应用服务中间件 Linux nginx
web后端-linux-nginx-1.18操作命令和部署
web后端-linux-nginx-1.18操作命令和部署